无法应用相同的分类器配置(使用python代码)

2024-05-15 21:00:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试对文本文档进行分类,并在weka Gui上使用以下配置:

weka.classifiers.meta.FilteredClassifier -F "weka.filters.unsupervised.attribute.StringToWordVector -R 1 -W 1000 -prune-rate -1.0 -N 0 -stemmer weka.core.stemmers.NullStemmer -stopwords-handler weka.core.stopwords.Null -M 1 -tokenizer \"weka.core.tokenizers.WordTokenizer -delimiters \\\" \\\\r\\\\n\\\\t.,;:\\\\\\\'\\\\\\\"()?!\\\"\"" -W weka.classifiers.meta.CostSensitiveClassifier -- -cost-matrix "[0.0 5.0; 1.0 0.0]" -S 1 -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"

因为我想自动化这个过程,我在python代码中包含了这个命令,并在命令中添加了培训和测试文件,如下所示:

command_line='java -cp /Users/home/Desktop/weka-3-7-13/weka.jar weka.classifiers.meta.FilteredClassifier -t train.arff -T test.arff -F "weka.filters.unsupervised.attribute.StringToWordVector -R 1 -W 1000 -prune-rate -1.0 -N 0 -stemmer weka.core.stemmers.NullStemmer -stopwords-handler weka.core.stopwords.Null -M 1 -tokenizer \"weka.core.tokenizers.WordTokenizer -delimiters \\\" \\\\r\\\\n\\\\t.,;:\\\\\\\'\\\\\\\"()?!\\\"\"" -W weka.classifiers.meta.CostSensitiveClassifier -- -cost-matrix "[0.0 5.0; 1.0 0.0]" -S 1 -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"> test.txt'

os.system(command_line)

我的代码出现以下错误:

syntax error near unexpected token `?!\"""'

我尝试删除“分隔符”,假设它们的选项是默认值,如下所示:

command_line='java -cp /Users/home/Desktop/weka-3-7-13/weka.jar weka.classifiers.meta.FilteredClassifier -t train.arff -T test.arff -F "weka.filters.unsupervised.attribute.StringToWordVector -R 1 -W 1000 -prune-rate -1.0 -N 0 -stemmer weka.core.stemmers.NullStemmer -stopwords-handler weka.core.stopwords.Null -M 1 -tokenizer \"weka.core.tokenizers.WordTokenizer \"" -W weka.classifiers.meta.CostSensitiveClassifier -- -cost-matrix "[0.0 5.0; 1.0 0.0]" -S 1 -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"> test.txt'
os.system(command_line)

它确实有效,但它给了我不同的结果,所以有没有一种方法可以原谅它,而不删除'分隔符'选项? 我不知道如何修复它,因为我对python和weka都是新手。。感谢您的帮助。你知道吗


Tags: coretestarfflineattributefunctionsfilterscommand