python - 如何使用机器学习在 python 中根据给定的一组地理数据进行预测?

标签 python numpy machine-learning scikit-learn forecasting

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

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

下一步是做时间序列分析然后我被困在这里 2 个月,阅读了大量文献并认为这些是我的选择 * ARIMA(自回归法) * 机器学习

我想利用机器学习来使用 python 进行预测,但无法真正弄清楚如何做。具体来说,是否有任何特定于用例的 python 库/开源代码,我可以在此基础上构建。

编辑 1: 澄清一下,数据松散地依赖于过去的数据,但在一段时间内是均匀分布的。 可视化数据的最佳方式是,想象 N 个代理由算法控制,分配给他们从网格中挑选资源的任务。资源是社会经济结构的函数,也强烈依赖于地理。 “算法”感兴趣的是能够明智地预测需求区域和时间。

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

最佳答案

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

但是,在您要探索的领域的命名法中重新表述您的问题通常会很有帮助。用机器学习术语来说:

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

所以我会说你有一个监督分类问题。顺便说一句,您可能想先进行某种时间正则化;我猜测事件的模式取决于一天中的什么时间、一个月中的哪一天或一年中的哪一个月,您可能希望将其表示为附加功能。

在这里查看流行的 Python ML 库之一 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

您的第一个好选择是尝试 Support Vector Machines (SVM) ,如果失败了可能会给出 k Nearest Neighbours (kNN)也是一个镜头。请注意,使用 ensemble classifier通常优于仅使用给定 SVM/kNN 的一个实例。

确切地说,如何将 SVM/kNN 与时间作为特征一起应用可能需要更多研究,因为 AFAIK(和其他人可能会纠正我)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

根据您对 ML 术语的了解和手头的示例数据,您可能需要考虑将问题发布到 Cross Validated , 统计 Stack Exchange.

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

关于python - 如何使用机器学习在 python 中根据给定的一组地理数据进行预测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14562625/

相关文章:

python - 如何训练单目标识别?

python - scipy 插值从文件导入的二维数据

python - 从分布生成随机字节数组

python - 时间序列分类

python - 使用非线性 SVM 时如何解释类​​别权重?

python - sklearn中有设置惩罚阈值的参数吗?

python - Python 中的正则表达式不会匹配字符串的结尾

python - 如何访问numpy中的整个子数组?

python - 将时间序列数据集中的随机值设为零

python - 使用带彩色框的 matplotlib 在绘图中显示图像