import pylab as pl import numpy as np from sklearn import svm, datasets print("\nImporting training data...") #removing pybrain dataset items #bring in data from training file f = open("zipcode.tra") inp = [] tar = [] i=0 #for line in f.readlines(): # inp.append(list(map(float, line.split()))[0:16]) # tar.append(int(list(map(float, line.split()))[16])-1) for line in f.readlines(): if i == 0: #reset lists sample = [] target = [] if i < 3: sample.extend(list(map(float, line.split()))[0:5]) if i == 3: sample.extend(list(map(float, line.split()))[0:1]) tar.append(int(list(map(float, line.split()))[1])-1) inp.append(sample) i = 0 else: i += 1 print("Training rows: %d " % len(inp) ) print("Input dimensions: ", np.shape(inp), ", Output dimensions: ", np.shape(tar)) #raw_input("Press Enter to view training data...") #print(traindata) print("\nFirst sample: ", inp[0], tar[0]) #sk-learn SVM svm_model = svm.SVC()#kernel='linear') svm_model.fit(inp,tar) #show predictions #out = net.activateOnDataset(ds) out = svm_model.predict(inp) #print(test) class_predict = [0.0 for i in range(len(out))] predict_correct = [] pred_corr_class0 = [] pred_corr_class1 = [] #NOTE - there are 10 classes in this one! for index, row in enumerate(out): class_predict[index] = row for N in range(len(class_predict)): if class_predict[N] == tar[N]: predict_correct.append(1) else: predict_correct.append(0) print ("SVM Kernel: ", svm_model.kernel) print ("\nCorrectly classified: %d, Percent: %f, Error: %f" % (sum(predict_correct),sum(predict_correct)/float(len(predict_correct)),1-sum(predict_correct)/float(len(predict_correct)))) #print ("Class 0 correct: %d, Percent: %f, Error: %f" % (sum(pred_corr_class0),sum(pred_corr_class0)/float(len(pred_corr_class0)),1-sum(pred_corr_class0)/float(len(pred_corr_class0)))) #print ("Class 1 correct: %d, Percent: %f, Error: %f" % (sum(pred_corr_class1),sum(pred_corr_class1)/float(len(pred_corr_class1)),1-sum(pred_corr_class1)/float(len(pred_corr_class1)))) raw_input("\nPress Enter to start testing...") print("\nImporting testing data...") #bring in data from testing file f = open("zipcode.tst") inp_tst = [] tar_tst = [] i=0 for line in f.readlines(): if i == 0: #reset lists sample = [] target = [] if i < 3: sample.extend(list(map(float, line.split()))[0:5]) if i == 3: sample.extend(list(map(float, line.split()))[0:1]) tar_tst.append(int(list(map(float, line.split()))[1])-1) inp_tst.append(sample) i = 0 else: i += 1 print("Testing rows: %d " % len(inp_tst) ) print("Input dimensions: ", np.shape(inp_tst), ", Output dimensions: ", np.shape(tar_tst)) print("\nFirst sample: ", inp_tst[0], tar_tst[0]) print("\nTesting...") #show predictions #out = net.activateOnDataset(ds) out_tst = svm_model.predict(inp_tst) #print(test) class_predict = [0.0 for i in range(len(out_tst))] predict_correct = [] pred_corr_class0 = [] pred_corr_class1 = [] for index, row in enumerate(out_tst): class_predict[index] = row for N in range(len(class_predict)): if class_predict[N] == tar_tst[N]: predict_correct.append(1) else: predict_correct.append(0) print ("\nTest Data Correctly classified: %d, Percent: %f, Error: %f" % (sum(predict_correct),sum(predict_correct)/float(len(predict_correct)),1-sum(predict_correct)/float(len(predict_correct)))) #print ("Class 0 correct: %d, Percent: %f, Error: %f" % (sum(pred_corr_class0),sum(pred_corr_class0)/float(len(pred_corr_class0)),1-sum(pred_corr_class2)/float(len(pred_corr_class0)))) #print ("Class 1 correct: %d, Percent: %f, Error: %f" % (sum(pred_corr_class1),sum(pred_corr_class1)/float(len(pred_corr_class1)),1-sum(pred_corr_class1)/float(len(pred_corr_class1))))