Weka的命令行构建分类器
将数据处理成csv数据
训练集
weka输入的训练集要求输入的数据:行是样本,列是基因,最后一列是label,不需要样本名。可以使用wps打开对数据处理成weka需要的样式。
测试集
同样的我们也选择一些样本作为测试集,不同的是label那一列都用?(英文)代替,记得保存一份有标签的备份,最后得出结果的时候可以判断模型的效果
将csv数据转化为arff文件
-
使用weka打开我们的train.csv.arff和test.csv.arff文件
首先点击Explorer- openfile,选择我们的文件,然后再点击save,点击确定,weka就自动将文件转化为arff文件了
-
用notepad++打开train.csv.arff和test.csv.arff文件,下拉到label这一行,将numeric改成{0,1}(英文)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rLH3E3uI-1587545538191)(E:%5Cmd%E6%96%87%E4%BB%B6%5C%E6%96%87%E4%BB%B6%E5%9B%BE%E5%83%8F%5Carff-1587539446537.png)]
-
如果前面的处理都正确的话,再次用weka打开train.csv.arff应该如下所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9pimSkXh-1587545538205)(E:%5Cmd%E6%96%87%E4%BB%B6%5C%E6%96%87%E4%BB%B6%E5%9B%BE%E5%83%8F%5Cweka.png)]
使用命令行构建模型和测试模型
构建模型
- 首先在自己的数据目录下打开cmd窗口
- 运行以下命令:
java -Xmx1024m -classpath .;D:\Weka\Weka-3-8-4\weka.jar weka.classifiers.trees.RandomForest -t train.csv.arff -d colonRandomForest.model > colonRandomForest.out -x 8
- 其中**D:\Weka\Weka-3-8-4\ **是你weka的安装目录
- weka.classifiers.trees.RandomForest意思是选择随机森林构建模型,其他方法的目录也可以看weka软件,比如:
如果我们要选择NaiveBayes构建模型,我们就可以使用weka.classifiers.bayes.NaiveBayes
测试模型
java -Xmx1024m -classpath .;D:\Weka\Weka-3-8-4\weka.jar weka.classifiers.trees.RandomForest -l colonRandomForest.model -T test.csv.arff -p 0 > PredictionResultRandomForest.txt
- 其中**D:\Weka\Weka-3-8-4\ **是你weka的安装目录
- weka.classifiers.trees.RandomForest是构建模型的时候选择的模型类型
- -l 是构造模型是输出的模型文件
- -T 是测试集
- -p 0这个参数是是否给出每个样本分类的标签,和分为该类的可能性
其他参数
- -A 设置是否自动创建隐藏层
- -B 是否将norminal转为二进制
- -I(大写i) 设置是否对输入属性值进行归一化处理
- -G 是否GUI显示
- -H 隐藏层节点个数
- -S 随机值种子
- -N 循环次数,即对所有训练集数据做的循环次数
- -M momentum值
- -L 学习率
- -E threshold,用于控制当连续threshold次误差都比上次误差大师,停止迭代
- -D 用于何止随着循环次数的增加是降低学习率
- -R 是否重置网络
- -O 不打印模型
- -xml 从xml文件中加载参数
学习率的知识可以查看这个博客
分析结果
-
predicted 是预测的结果:1:0表示被分为第一类,标签是0;
2:1表示被分为第二类,标签是1