weka和meka的.bat批量处理命令小结

1.weka和meka中都可以先导入数据,然后直接选择模型配置各项参数,然后右键复制模型配置参数,粘贴到记事本中再做少量添加就变成了可执行的命令行命令。命令行执行可以输出各个样本预测的概率和标签。
weka和meka的.bat批量处理命令小结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)            
            

效果
weka和meka的.bat批量处理命令小结

# -*- 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