weka和meka的.bat批量处理命令小结
1.weka和meka中都可以先导入数据,然后直接选择模型配置各项参数,然后右键复制模型配置参数,粘贴到记事本中再做少量添加就变成了可执行的命令行命令。命令行执行可以输出各个样本预测的概率和标签。2.最笨的命令行方式(需要批量处理的文件个数少时)
weka和meka均适用。
2.1.weka
cd D:/Programs/weka-3.9/Weka-3-9
java weka.classifiers.functions.SMO -C 1.0 -L 0.001 -P 1.0E-12 -N 0 -V -1 -W 1 -K "weka.classifiers.functions.supportVector.PolyKernel -E 1.0 -C 250007" -calibrator "weka.classifiers.functions.Logistic -R 1.0E-8 -M -1 -num-decimal-places 4" -t data/chem6_40_pinjie.arff -x 10 > D:/chem6_40_10_pinjie.txt
java weka.classifiers.functions.SMO -C 1.0 -L 0.001 -P 1.0E-12 -N 0 -V -1 -W 1 -K "weka.classifiers.functions.supportVector.PolyKernel -E 1.0 -C 250007" -calibrator "weka.classifiers.functions.Logistic -R 1.0E-8 -M -1 -num-decimal-places 4" -t data/chem6_50_pinjie.arff -x 10 > D:/chem6_50_10_pinjie.txt
java weka.classifiers.functions.SMO -C 1.0 -L 0.001 -P 1.0E-12 -N 0 -V -1 -W 1 -K "weka.classifiers.functions.supportVector.PolyKernel -E 1.0 -C 250007" -calibrator "weka.classifiers.functions.Logistic -R 1.0E-8 -M -1 -num-decimal-places 4" -t data/chem6_60_pinjie.arff -x 10 > D:/chem6_60_10_pinjie_pinjie.txt
java weka.classifiers.functions.SMO -C 1.0 -L 0.001 -P 1.0E-12 -N 0 -V -1 -W 1 -K "weka.classifiers.functions.supportVector.PolyKernel -E 1.0 -C 250007" -calibrator "weka.classifiers.functions.Logistic -R 1.0E-8 -M -1 -num-decimal-places 4" -t data/chem6_70_pinjie.arff -x 10 > D:/chem6_70_10_pinjie_pinjie.txt
java weka.classifiers.functions.SMO -C 1.0 -L 0.001 -P 1.0E-12 -N 0 -V -1 -W 1 -K "weka.classifiers.functions.supportVector.PolyKernel -E 1.0 -C 250007" -calibrator "weka.classifiers.functions.Logistic -R 1.0E-8 -M -1 -num-decimal-places 4" -t data/chem6_80_pinjie.arff -x 10 > D:/chem6_80_10_pinjie_pinjie.txt
java weka.classifiers.functions.SMO -C 1.0 -L 0.001 -P 1.0E-12 -N 0 -V -1 -W 1 -K "weka.classifiers.functions.supportVector.PolyKernel -E 1.0 -C 250007" -calibrator "weka.classifiers.functions.Logistic -R 1.0E-8 -M -1 -num-decimal-places 4" -t data/chem6_90_pinjie.arff -x 10 > D:/chem6_90_10_pinjie.txt
2.2.meka
cd D:/Meka1.9.2
java -cp "./lib/*" meka.classifiers.multilabel.RAkELd -M 1 -k 14 -P 0 -N 0 -S 0 -x 10 -R -verbosity 7 -t data/chem6_700_pinjie.arff -W weka.classifiers.functions.SMO -- -C 1.0 -L 0.001 -P 1.0E-12 -N 0 -V -1 -W 1 -K "weka.classifiers.functions.supportVector.PolyKernel -E 1.0 -C 250007" -calibrator "weka.classifiers.functions.Logistic -R 1.0E-8 -M -1 -num-decimal-places 4" > D:/360Downloads/suss_s2_k1.txt
java -cp "./lib/*" meka.classifiers.multilabel.RAkELd -M 2 -k 14 -P 0 -N 0 -S 0 -x 10 -R -verbosity 7 -t data/chem6_700_pinjie.arff -W weka.classifiers.functions.SMO -- -C 1.0 -L 0.001 -P 1.0E-12 -N 0 -V -1 -W 1 -K "weka.classifiers.functions.supportVector.PolyKernel -E 1.0 -C 250007" -calibrator "weka.classifiers.functions.Logistic -R 1.0E-8 -M -1 -num-decimal-places 4" > D:/360Downloads/suss_s2_k2.txt
java -cp "./lib/*" meka.classifiers.multilabel.RAkELd -M 3 -k 14 -P 0 -N 0 -S 0 -x 10 -R -verbosity 7 -t data/chem6_700_pinjie.arff -W weka.classifiers.functions.SMO -- -C 1.0 -L 0.001 -P 1.0E-12 -N 0 -V -1 -W 1 -K "weka.classifiers.functions.supportVector.PolyKernel -E 1.0 -C 250007" -calibrator "weka.classifiers.functions.Logistic -R 1.0E-8 -M -1 -num-decimal-places 4" > D:/360Downloads/suss_s2_k3.txt
3.找规律通过.bat的循环来批量处理文件
3.1.weka
@echo off
cd D:/Programs/weka-3.9/Weka-3-9
for %%I in (40 50 60 70 80 90) do java weka.classifiers.functions.SMO -C 1.0 -L 0.001 -P 1.0E-12 -N 0 -V -1 -W 1 -K "weka.classifiers.functions.supportVector.PolyKernel -E 1.0 -C 250007" -calibrator "weka.classifiers.functions.Logistic -R 1.0E-8 -M -1 -num-decimal-places 4" -t data/chem6_%%I_pinjie.arff -x 10 > D:/chem6_%%I_10_pinjie.txt
pause
3.2.meka
@echo off
cd D:/Meka1.9.2
for %%I in (40 50 60 70 80 90) do java -cp "./lib/*" meka.classifiers.multilabel.RAkELd -M 1 -k 14 -P 0 -N 0 -S 0 -x 10 -R -verbosity 7 -t data/chem6_%%I_pinjie.arff -W weka.classifiers.functions.SMO -- -C 1.0 -L 0.001 -P 1.0E-12 -N 0 -V -1 -W 1 -K "weka.classifiers.functions.supportVector.PolyKernel -E 1.0 -C 250007" -calibrator "weka.classifiers.functions.Logistic -R 1.0E-8 -M -1 -num-decimal-places 4" > D:/360Downloads/suss_%%I_s2_k1.txt
pause
3.3.在.bat文件中使用三重循环
F:
cd F:/meka-release-1.9.0
for %%m in (8 10 12 14 16 18 20 25 30) do (
for %%k in (1 2 3 4 5 6) do (
for %%I in (50 60) do java -cp "./lib/*" meka.classifiers.multilabel.RAkEL -M %%m -k %%k -P 0 -N 0 -S 0 -x 10 -t data/%%I.arff -W weka.classifiers.functions.SMO -- -C 1.0 -L 0.001 -P 1.0E-12 -N 0 -V -1 -W 1 -K "weka.classifiers.functions.supportVector.PolyKernel -E 1.0 -C 250007" > E:/Multi_label2019/%%I_%%m_%%k.txt
)
)
pause
3.4.解析SMO(SVM)结果文件,构造DataFrame存档
# -*- coding: utf-8 -*-
import os
import pandas as pd
dir1 = 'C:/Users/Administrator/Desktop/zhouzhou11/'
result=[]
for root,dirname,filenames in os.walk(dir1):
print(root)
for filename in filenames:
dim,m,k=filename.strip().split('.')[0].split('_')
print(filename)
with open(root+filename,'r+') as fp:
content=fp.readlines()
#str(content[15])
str(content[18])
acc=content[15].strip().split(' ')
extact_match=content[18].strip().split(' ')
result.append([dim,m,k,filename,acc[1],extact_match[1]])
result_df=pd.DataFrame(result,columns=['维度','M','K','filename','accuracy','extact match'])
result_df.to_csv('自己保存的路径!!!',index=False,header=True)
效果
# -*- coding: utf-8 -*-
#统计Excel表格的列数
str_dict={'A':1,'B':2,'C':3,'D':4,'E':5,'F':6,'G':7,'H':8,'I':9,
'J':10,'K':11,'L':12,'M':13,'N':14,'O':15,'P':16,'Q':17,
'R':18,'S':19,'T':20,'U':21,'V':22,'W':23,'X':24,'Y':25,
'Z':26}
def input_char(string):
temp=list(string)
sum_jishu=0
base1=[26**2,26,1]
for i in range(len(temp)):
sum_jishu+=str_dict[temp[i]]*base1[i]
print(sum_jishu)
#input_char('CRG') #2503
#input_char('EBC') #3435
#input_char('EZP') #4072
#input_char('HKW') #5717
#input_char('SXL') #13480
#input_char('HGZ') #5616
input_char('AMK') #1024