如何将mongoDB数据转换为arff文件

时间:2015-05-22 10:58:14

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

我通过不同的表单从用户获得不同的数据集。我使用MEAN堆栈,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' } 

1 个答案:

答案 0 :(得分:0)

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

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

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

您可以使用bash脚本通过tempfile将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)在书中更详细地描述了" Data science the command line"作者:Jeroen Janssen。查看github repo了解csv2arff,weka-cluster以及如何安装其他工具(csv2arff,arff2csv,csvcut,json2csv)。