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