如何在python中使用机器学习从给定的地理数据集进行预测?

2024-05-23 17:44:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在分析一些地理数据,并试图就时间和地理位置预测/预测下一次事件的发生。数据的顺序如下(有样本数据)

Timestamp Latitude     Longitude   Event 
13307266  102.86400972 70.64039541 "Event A"
13311695  102.8082912  70.47394645 "Event A"
13314940  102.82240522 70.6308513  "Event A"
13318949  102.83402128 70.64103035 "Event A"
13334397  102.84726242 70.66790352 "Event A"

第一步是将其分为100个区域,这样可以减少维度和复杂性。

 
Timestamp Zone 
13307266  47
13311695  65
13314940  51
13318949  46
13334397  26

下一步是做时间序列分析,然后我在这里呆了两个月,阅读了很多文献,认为这些是我的选择 *自回归法 *机器学习

我想利用机器学习来使用python进行预测,但并不能真正弄清楚如何使用它,特别是是否有针对用例的python库/开源代码,我可以在此基础上进行构建。

编辑1: 为了澄清,数据松散地依赖于过去的数据,但在一段时间内是均匀分布的。 可视化数据的最佳方法是,想象N个由算法控制的代理,该算法分配给它们从网格中提取资源的任务。资源是社会经济结构的功能,对地理的依赖性很强。它的兴趣是“算法”能够预测需求区域和时间。

附言: 对于像ARIMA Python这样的自动回归模型,已经有一个库http://pypi.python.org/pypi/statsmodels


Tags: 数据pypi算法机器event区域顺序时间
1条回答
网友
1楼 · 发布于 2024-05-23 17:44:28

没有示例数据或现有代码,我无法为您提供任何具体的内容。

然而,通常用你想探索的领域的术语来重新表述你的问题是有帮助的。以毫升计:

  • 问题的特征:如何指定输入。时间戳是连续的,地理区域是离散的。
  • 您的问题的目标标签是:一个事件,确切地说是一个给定的事件是否已经发生。
  • 您的问题是受监督的:以前数据的目标标签可用。以前有(时间戳、地理区域)到事件映射的实例。
  • 目标标签是离散,因此这是一个分类问题(与回归问题相反,这里的输出是连续的)。

所以我想说你有监督分类的问题。作为旁白,您可能想先做一些时间规整;我猜事件的模式将取决于一天中的某个时间、一个月中的某个日期或一年中的某个月,您可能想将其表示为一个附加功能。

查看一个流行的Python ML库scikit learn,如下所示:

http://scikit-learn.org/stable/supervised_learning.html

并参考了一位撰稿人最近在scikit学习备忘表上的一篇文章:

http://peekaboo-vision.blogspot.de/2013/01/machine-learning-cheat-sheet-for-scikit.html

你的第一个好办法就是尝试Support Vector Machines (SVM),如果失败了,也可以尝试k Nearest Neighbours (kNN)。注意,使用ensemble classifier通常比只使用给定的SVM/kNN的一个实例要好。

确切地说,如何将SVM/kNN与时间作为一个特征应用可能需要更多的研究,因为AFAIK(和其他人可能会纠正me)SVM/kNN需要均值为零的有界输入(或归一化为均值为零)。只需做一些随机的谷歌搜索,你就可以找到特定的支持向量机核,例如傅立叶核,它可以为你转换时间序列特征:

用于时间序列分析的支持向量机核
http://www.stefan-rueping.de/publications/rueping-2001-a.pdf

scikit learn允许您为支持向量机指定自定义内核。见:
http://scikit-learn.org/stable/auto_examples/svm/plot_custom_kernel.html#example-svm-plot-custom-kernel-py

根据您对ML命名法的了解,以及手头的示例数据,您可能需要考虑将问题发布到统计堆栈交换Cross Validated

编辑1:更多地考虑这个问题,你需要真正了解你的功能和相应的标签是否独立和相同分布(IID)。例如,如果你正在模拟森林火灾是如何随时间蔓延的。很明显,一个特定区域着火的可能性取决于它的邻居是否着火。AFAIK-SVM和kNN假设数据是IID。在这一点上,我开始超出我的深度,但我认为您至少应该尝试几个ML方法,看看会发生什么!记住交叉验证!(scikit learn为您做这个)。

相关问题 更多 >