如何使用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  4713311695  6513314940  5113318949  4613334397  26

下一步是进行时间序列分析,然后我在这里卡了两个月,阅读了大量文献,发现这些是我的选择* ARIMA(自回归方法)* 机器学习

我想利用Python进行机器学习预测,但实在不知道如何操作。特别是是否有针对此用例的Python库/开源代码,我可以在此基础上构建。

编辑1:为了澄清,数据在一定程度上依赖于过去的数据,但随着时间的推移是均匀分布的。最佳的可视化数据方式是,设想有N个由算法控制的代理,这些代理被分配了从网格中获取资源的任务。资源是社会经济结构的函数,也强烈依赖于地理位置。能够预测需求区域和时间对算法是有利的。

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


回答:

没有示例数据或现有代码,我无法提供具体的建议。

然而,通常重新用你想探索的领域的术语来表述你的问题是有帮助的。在机器学习术语中:

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

所以我认为你有一个监督分类问题。顺便说一句,你可能首先需要做某种时间正则化;我猜测事件的模式会根据一天中的时间、一个月中的哪一天或一年中的哪个月而有所不同,你可能希望将此表示为一个额外的特征。

看看一个流行的Python机器学习库scikit-learn,这里:

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

并查阅最近由一位贡献者发布的scikit-learn速查表:

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

你首先可以尝试支持向量机(SVM),如果失败了,可以尝试k最近邻(kNN)。请注意,使用集成分类器通常比仅使用一个给定的SVM/kNN实例更优越。

如何确切地将时间作为特征应用于SVM/kNN可能需要更多的研究,因为据我所知(其他人可能会纠正我)SVM/kNN需要有界输入且均值为零(或归一化为均值为零)。通过一些随机的谷歌搜索,你可能会找到某些SVM核,例如傅里叶核,可以为你转换时间序列特征:

SVM核用于时间序列分析
http://www.stefan-rueping.de/publications/rueping-2001-a.pdf

scikit-learn方便地允许你为SVM指定自定义核。见:
http://scikit-learn.org/stable/auto_examples/svm/plot_custom_kernel.html#example-svm-plot-custom-kernel-py

有了机器学习术语的知识和手头的示例数据,你可能想考虑在Cross Validated,统计学Stack Exchange上发布问题。

编辑1:更多地思考这个问题,你需要真正理解你的特征和相应的标签是否独立同分布(IID)。例如,如果你在模拟森林火灾如何随时间传播。显然,一个给定区域着火的可能性取决于其邻居是否着火。据我所知,SVM和kNN假设数据是IID的。此时我开始超出我的深度,但我认为你至少应该尝试几种机器学习方法,看看会发生什么!记得进行交叉验证!(scikit-learn为你做了这个)。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注