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

Node.js 如何将mongoDB数据转换为arff文件,node.js,mongodb,weka,mean-stack,arff,Node.js,Mongodb,Weka,Mean Stack,Arff,我通过不同的表单从用户那里获得不同的数据集。我使用MEAN stack、mongoose和node weka来分析存储的数据,但在此之前,weka使用arff文件,这就是为什么我必须将mongoDB中存储的数据转换为arff文件的原因。有人知道怎么做吗?我是初学者,还没有找到合适的文档。 下面是NodeJS中代码的开头 var data = ... //ARFF json format var options = { //'classifier': 'weka.classifiers.baye

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

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' } 

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

在任何情况下,weka的许多分类器确实期望一个arff文件作为输入

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

您可以使用bash脚本通过临时文件将csv转换为arff。此专用脚本
weka集群
演示。让它适应你的需要

#!/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 cluster.SimpleKMeans

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

mymongoquery.sh | json2csv |(更多可选过滤器,例如csvcut)| weka集群器。SimpleKMeans


Jeroen Janssen的书“中详细描述了这些命令行工具(但不是mongo)。查看csv2arff、weka集群以及如何安装其他工具(csv2arff、arff2csv、csvcut、json2csv)。

如果有人感兴趣,这是一种转换为json文件pawn的方法('mongoexport'、['--db'、'test'、'--collection'、'users'、'--out'、'file.json'])。on('error',function(err err{throw err});