【问题标题】:How to convert mongoDB data into arff file如何将mongoDB数据转换成arff文件
【发布时间】:2015-05-24 16:05:08
【问题描述】:

我通过不同的表格从用户那里获得不同的数据集。我正在使用 MEAN stack、mongoose 和 node-weka 来分析存储的数据,但在此之前,weka 使用 arff 文件,这就是为什么我必须将存储在 mongoDB 中的数据转换为 ARFF 文件。有人知道怎么做吗?我是初学者,还没有找到合适的文件。 这是NODE JS中代码的开头

var data = ... //ARFF json format
var options = {
 //'classifier': 'weka.classifiers.bayes.NaiveBayes', 
 'classifier': 'weka.classifiers.functions.SMO',
    'params'    : ''
       };
 var testData = {
     outlook    : 'sunny',
      windy      : 'TRUE'
          };

       weka.classify(data, testData, options, function (err, result) {

     console.log(result); //{ predicted: 'yes', prediction: '1' } 

【问题讨论】:

  • 如果有人感兴趣,这是转换成json文件pawn('mongoexport', [ '--db', 'test', '--collection', 'users', '- -out', 'file.json' ]) .on('error', function( err ){ throw err });

标签: node.js mongodb weka mean-stack arff


【解决方案1】:

我不知道纯 JavaScript 解决方案,只知道命令行解决方案(适用于 linux、unix 和 mac)。

无论如何,weka 的许多分类器确实希望将 arff 文件作为输入。

您可以将 json 数据导出到 csv,在命令行上即时将 csv 转换为 .arff,然后将它们通过管道传输到 weka 3.6(不是 3.7)。

您可以使用 bash 脚本通过临时文件将 csv 转换为 arff。这个专用脚本weka-cluster 演示。根据您的需要进行调整。

#!/usr/bin/env bash
ALGO="$@"
IN=$(mktemp --tmpdir weka-cluster-XXXXXXXX).arff

finish () {
    rm -f $IN
}
trap finish EXIT

csv2arff > $IN
weka filters.unsupervised.attribute.AddCluster -W "weka.${ALGO}" -i $IN -o /dev/stdout | arff2csv

将此脚本称为

cat my.csv | weka-cluster clusterers.SimpleKMeans

您可以将其扩展到 mongodb,如下所示:

mymongoquery.sh | json2csv | (more optional filters.e.g csvcut) | weka-cluster clusterers.SimpleKMeans

这些命令行工具(但不是 mongo)在 Jeroen Janssen 的“Data science the command line”一书中有更详细的描述。查看github repo 了解 csv2arff、weka-cluster 以及如何安装其他工具(csv2arff、arff2csv、csvcut、json2csv)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-31
    • 2015-06-10
    • 1970-01-01
    • 2018-03-06
    • 2019-08-21
    • 2014-06-11
    • 2014-02-10
    • 2012-02-29
    相关资源
    最近更新 更多