Skip to content

Instantly share code, notes, and snippets.

@tpsilva
Last active August 29, 2015 14:03
Show Gist options
  • Save tpsilva/694743a79753c30dba54 to your computer and use it in GitHub Desktop.
Save tpsilva/694743a79753c30dba54 to your computer and use it in GitHub Desktop.
Python script that launches Weka
import os
import subprocess
COMMAND_PREFIX = 'java -cp "C:\Users\Tiago\wekafiles\packages\LibSVM\LibSVM.jar;C:\Users\Tiago\wekafiles\packages\LibSVM\lib\libsvm.jar;C:\Program Files (x86)\Weka-3-7\weka.jar" weka.classifiers.misc.InputMappedClassifier -W '
COMMAND_POSTFIX = " -v -o -M"
ALGORITHMS = [
"weka.classifiers.functions.LibSVM",
"weka.classifiers.bayes.NaiveBayes",
"weka.classifiers.lazy.IBk",
"weka.classifiers.meta.AdaBoostM1",
"weka.classifiers.meta.Bagging",
"weka.classifiers.meta.LogitBoost",
"weka.classifiers.trees.RandomForest",
"weka.classifiers.trees.J48",
"weka.classifiers.rules.PART"
]
results = ""
for algorithm in ALGORITHMS:
results += algorithm + "\n"
command = COMMAND_PREFIX + algorithm + " "
for filename in os.listdir("."):
if filename.find(".") == -1: # is a folder
os.chdir(filename)
for i in range(1, 6):
collection_name = filename + "_" + str(i) + "-{}-stringToWordVector-reverse.arff"
train_collection = collection_name.format("train")
test_collection = collection_name.format("test")
args = command + "-t " + train_collection + " -T " + test_collection + COMMAND_POSTFIX
print args
output_lines = subprocess.check_output(args, shell=True).split("\n")
spam_line_conf_matrix = output_lines[-3].split()
ham_line_conf_matrix = output_lines[-4].split()
is_spam_clas_spam = spam_line_conf_matrix[1]
is_spam_clas_ham = spam_line_conf_matrix[0]
is_ham_clas_ham = ham_line_conf_matrix[0]
is_ham_clas_spam = ham_line_conf_matrix[1]
results += collection_name + "\t"
results += is_spam_clas_spam + " " + is_spam_clas_ham + " " + is_ham_clas_ham + " " + is_ham_clas_spam
results += "\n"
print results
os.chdir("..")
results += "\n\n"
print results
f = open("resultado.txt", "r")
f.write(results)
f.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment