机器学习友好的数据组织

时间:2017-10-27 20:17:06

标签: json database machine-learning data-mining feature-extraction

网上有很多关于不同机器学习工具的教程(神经网络和各种相关技术,如DL,ID树,SVM)。当我进行小规模的机器学习时,在python或MATLAB或同等版本中,我通常有一个带有功能的CSV文件和带有标签的CSV文件,我将这些文件加载​​到内存中,然后按照程序的要求组织它们(例如Matrix对于matlab)。

我正在实时收集系统性能数据。每隔几分钟,我会收集大量数据,目前我将其存储为Json格式{Key:value}等。我通常收集这些数据并将其存储一小时,以查看我的系统是如何工作的。我想要做的是保留它并尝试对它进行一些机器学习。我想知道用于组织机器学习数据集的经验法则是什么,特别是因为我不确定我想做什么样的ML(这是一个探索项目,所以我想找到一种方法来使自己能够做最多的探索)。

我读过这篇博客文章:https://www.altexsoft.com/blog/datascience/preparing-your-dataset-for-machine-learning-8-basic-techniques-that-make-your-data-better/

  

使用纸质分类帐开始数据收集的公司   用.xlsx和.csv文件结束可能会有更难的时间   数据准备比那些拥有小而自豪的ML友好的人   数据集。

它说.csv数据集对ML不友好。是否有一些方法可以保存被认为对ML更优化的数据?

以下是我正在考虑的几个用例:

  1. 使用与标签配对的时间点数据进行分类
  2. 使用时间序列分类(以单个矩阵组织) 与标签搭配
  3. 回归:给定矩阵的X预测值 其时间序列值
  4. 我没有特别的问题。相反,我想开始以一种在未来启用机器学习的方式设置此数据集。

    我的问题是:为了启用机器学习,有哪些更流行的数据存储方式?

    一些选项:

    按时间组织的CSV:

    Time_stamp, feature1, feature2, feature3,...,featureN
    Time_stamp, feature1, feature2, feature3,...,featureN
    Time_stamp, feature1, feature2, feature3,...,featureN
    ...
    

    和一些初学者标签(以后可能会或可能不会增加)

    Time_stamp, label1, label2....labelN
    Time_stamp, label1, label2....labelN
    Time_stamp, label1, label2....labelN
    

    Json风格的键值对:

    {
    time_stamp: _,
    feature1: _,
    feature2: _,
    ...,
    featureN:_,
    label1:_,
    label2:_,
    label3:_,
    ...
    }
    

    假设我决定使用时间序列来预测标签......然后我必须将时间序列数据全部放入标签的一个功能集中。

    我知道有很多方法可以解决这个问题(一个是:忘记组织 - 只需编写一个API,当你找到要解决的问题时,为你的问题生成这个组织得很好的数据集),但实际上,我想知道在设计工业和学术界机器学习的数据端基础设施时,经验法则是什么。

    出现了一些问题:

    • 如果您想添加新功能该怎么办?
    • 如果您有新标签怎么办?
    • 如果您不想仅考虑单点时间功能,但在分析中使用时间序列功能,该怎么办?

    我对数据库知之甚少,所以我们非常欣赏智慧,与功能存储相关的在线资源也是如此。我发现的大多数都与模型或ML基础设施有关 - 而不是我感兴趣的支持或数据组织。

1 个答案:

答案 0 :(得分:2)

对于我使用过的大多数机器学习库(tensorflow,keras,scikit-learn,R),数据通常以表格格式(如CSV)进行处理,因为在引擎盖下使用许多机器学习算法快速线性代数代码。所以我不确定文章是关于什么的,但以CSV格式存储数据很好。

数据清理,组织和存储是很重要的主题。您的数据清理管道(以及整个培训过程)应该是可重现的,this paper有一些很好的原则要记住。 This article by Hadley Wickham对如何以表格格式组织数据有一些很好的想法。如果您的数据集很复杂或者您经常重复使用它,那么它可能值得存储在数据库中,我建议您选择SQL指南以及数据仓库。