我分析了一些地理数据,并试图根据时间及其地理位置预测/预测事件的下一次发生。数据按以下顺序(含样本数据(
时间戳纬度经度事件13307266 102.8640972 70.64039541"事件A"13311695 102.082912 70.47394645"事件A"13314940 102.82240522 70.6308513"事件A"13318949 102.83402128 70.64103035"事件A"13334397 102.84726242 70.66790352"事件A">
第一步是将其分为100个区域,这样可以减少尺寸和复杂性。
时间戳区域13307266 4713311695 6513314940 5113318949 4613334397 26
下一步是做时间序列分析,然后我在这里呆了两个月,阅读了很多文献,认为这些是我的选择*ARIMA(自回归法(*机器学习
我想利用机器学习来使用python进行预测,但真的不知道怎么做。具体来说,有没有任何特定于用例的python库/开源代码,我可以在此基础上进行构建。
编辑1:为了澄清,数据松散地依赖于过去的数据,但在一段时间内是均匀分布的。可视化数据的最佳方式是,想象由算法控制的N个代理,该算法为他们分配从网格中挑选资源的任务。资源是社会经济结构的函数,也强烈依赖于地理。">算法"能够预测需求区域和时间。
p.s:对于像ARIMA这样的自回归模型,Python已经有了一个库http://pypi.python.org/pypi/statsmodels。
如果没有示例数据或现有代码,我无法为您提供任何具体的东西。
然而,通常用你想探索的领域的命名法来重新表述你的问题是有帮助的。ML术语:
- 问题的特性:如何指定输入。时间戳是连续的,地理区域是离散的
- 您的问题的目标标签:一个事件,确切地说是给定事件是否发生
- 您的问题是受监督的:以前数据的目标标签可用。您以前有(时间戳、地理区域(到事件映射的实例
- 目标标签是离散,因此这是一个分类问题(而不是回归的问题,其中输出是连续的(
所以我认为你有一个监督分类问题。顺便说一句,你可能想先做一些时间规范;我猜会有一些事件模式,这取决于一天中的什么时间、一个月中的什么日子或一年中的什么月份,你可能想把它作为一个附加功能来表示。
看看一个流行的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
你的第一个好办法是尝试支持向量机(SVM(,如果失败了,也可以尝试k个最近邻居(kNN(。请注意,使用集成分类器通常比仅使用给定SVM/kNN的一个实例要好。
由于AFAIK(以及其他人可能会纠正我的错误(SVM/kNN需要平均值为零(或归一化为平均值为0(的有界输入,因此,如何准确地应用以时间为特征的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绘制自定义内核py
有了ML命名法的知识和手头的示例数据,您可能需要考虑将问题发布到统计数据Stack Exchange的Cross Validated。
编辑1:更多地思考这个问题,你需要真正了解你的功能和相应的标签是否是独立和相同分布的(IID(。例如,如果你正在模拟森林大火是如何随时间蔓延的。很明显,一个特定区域着火的可能性取决于其邻居是否着火。AFAIK-SVM和kNN假设数据是IID。在这一点上,我开始超出我的深度,但我认为你至少应该尝试几种ML方法,看看会发生什么!记住交叉验证!(scikit learn为您做这件事(。