【问题标题】:Analysis of energy dataset by clustering [closed]通过聚类分析能源数据集
【发布时间】:2018-12-22 20:28:10
【问题描述】:

所以我对机器学习还很陌生,我正在尝试创建一个 python 脚本来分析计算机的能量数据集。 该脚本最终应确定计算机的不同状态(如空闲、待机、工作等)以及这些状态平均使用多少能量。

我想知道这个任务是否可以通过一些聚类方法来完成,比如 k-means 或 DBSCAN。

我对 scikit learn 中的一些聚类方法进行了一些修改,但到目前为止的结果并没有我预期的那么好。 我对聚类方法进行了很多研究,但我始终找不到与我相似的场景。

所以我的问题是它是否值得麻烦,如果是的话,哪种聚类方法(或整体机器学习算法)最适合该任务?还是有更好的方法?

能源数据集只是一个单列表,其中一个单元格代表几天内每秒一个能源值。

【问题讨论】:

  • 我会在这个表格中说,问题太宽泛了,你可以尝试从你的数据集中分享一些示例数据,添加你的格式良好的代码来显示问题。
  • 好吧,我的代码没有问题。问题更多的是哪种聚类方法最好(如果有适合我的目的)。
  • @BrandonH。如果你能给我们你的时间序列图会有所帮助 - 你已经有了一些答案,但这至少会让我们对数据有所了解。

标签: python machine-learning scikit-learn cluster-analysis


【解决方案1】:

能源数据集只是一个单列表,其中一个单元格代表几天内每秒一个能源值。

您将无法对此数据集应用监督学习,因为您的数据集没有标签(没有已知状态给定能量值)。这意味着在给定您的数据集的情况下,SVM、决策树等模型不可行。

您所拥有的是具有单个变量输出的时间序列。据我了解,您的目标是确定是否存在不同的能量状态,以及这些状态的平均值是多少。

我认为使用 matplotlib 或 seaborn 之类的东西来绘制时间序列会非常有帮助。绘制数据后,您可以更好地了解您的假设是否合理以及您可能希望如何进一步解决问题。您可以通过仅绘制时间序列并观察有四种不同的能量状态(例如空闲、待机、工作等)来解决您的问题,避免使用任何复杂的统计技术、机器学习等。

要回答您的问题,您原则上可以对一维数据使用 k-means。但是,可能不建议这样做,因为这些技术通常用于多维数据。

我建议您查看Jenks natural breaks optimizationkernel density optimization。可以在 herehere 找到与您类似的问题,应该可以帮助您入门。

【讨论】:

    【解决方案2】:

    不要忽视时间。

    首先,如果您的信号嘈杂,时间平滑可能会有所帮助。

    其次,您需要先执行一些特征提取。例如,通过使用 segmentation 将您的时间序列切割成单独的状态。然后您可以尝试对这些状态进行聚类,但我不相信聚类在这里适用。您可能需要使用直方图或密度图。它是一维数据 - 您可以将其可视化,并手动选择阈值,而不是希望某些自动化技术可能有效(因为它可能不会......)

    【讨论】:

      猜你喜欢
      • 2014-04-21
      • 2020-10-10
      • 1970-01-01
      • 2021-07-18
      • 2020-04-14
      • 2018-12-26
      • 2014-05-07
      • 2013-11-11
      • 2013-12-18
      相关资源
      最近更新 更多