def test_repe_test(times, features, classes): every_f1_test = {} array_means_test = np.array([]) array_vars_test = np.array([]) iii = 0 while iii < times: x_train, y_train, x_cv, y_cv, x_test, y_test = TrainCvTest. \ separate_databases(features, classes) clf = svm.trainSVM(x_train, y_train, call=True) F1Test = FScore.F1Score(x_test, y_test, clf) mTest = np.array([]) for key in F1Test.keys(): if key not in every_f1_test: every_f1_test[key] = F1Test[key] else: every_f1_test[key] = np.append(every_f1_test[key], F1Test[key]) mTest = np.append(mTest, F1Test[key]) array_means_test = np.append(array_means_test, mTest.mean()) array_vars_test = np.append(array_vars_test, mTest.var()) iii += 1 return every_f1_test, array_means_test, array_vars_test
def classify_new_sounds(folder_of_test_sounds, target_class): new_descriptors = {target_class: load_description(folder_of_test_sounds)} new_normalized_features, new_y_class, new_features_names = preprocess(new_descriptors) new_y_class = np.array([target_class]*len(new_y_class)) descriptors = load_descriptors(maximum='Inf', reverbs=True) normalized_features, yClass, features_names = preprocess(descriptors) clf = trainSVM(normalized_features, yClass, call=True) F1 = F1Score(new_normalized_features, new_y_class, clf) return F1
def calcsvmMatrix(svm,C,toler,maxIter,train_x,train_y): svmMatrix=np.mat(np.zeros((40,40))) for i in range(40): for j in range(40): if i==j: continue else: #print(i,j) train_x_new=np.vstack((train_x[i*6:i*6+6,:],train_x[j*6:j*6+6,:])) train_y_new=np.hstack((train_y[i*6:i*6+6],train_y[j*6:j*6+6])) svmClassifier = svm.trainSVM(train_x_new, train_y_new, C, toler, maxIter, kernelOption = ('linear', 0)) print(svmClassifier.b) print(svmClassifier.alphas) #svmMatrix[i,j]=svmClassifier return svmMatrix
def recall(XData, YData, clf=1): if clf == 1: clf = svm.trainSVM(XData, YData, True) predictions = [] for iii in np.arange(YData.size): predictions = np.append(predictions, clf.predict(XData[iii, :])[0]) tp = true_pos(predictions, YData) fn = false_neg(predictions, YData) recall = {} for key in tp.keys(): recall[key] = tp[key] / float(tp[key] + fn[key]) return recall
def precision(XData, YData, clf=1): if clf == 1: clf = svm.trainSVM(XData, YData, True) predictions = [] for iii in np.arange(YData.size): predictions = np.append(predictions, clf.predict(XData[iii, :])[0]) tp = true_pos(predictions, YData) fp = false_pos(predictions, YData) precision_ = {} for key in tp.keys(): try: precision_[key] = tp[key] / float(tp[key] + fp[key]) except: precision_[key] = -1 return precision_
def test_repe_train_and_cv(times, features, classes): every_f1_train = {} every_f1_cv = {} array_means_train = np.array([]) array_vars_train = np.array([]) array_means_cv = np.array([]) array_vars_cv = np.array([]) iii = 0 while iii < times: x_train, y_train, x_cv, y_cv, x_test, y_test = TrainCvTest. \ separate_databases(features, classes) clf = svm.trainSVM(x_train, y_train, call=True) F1Train = FScore.F1Score(x_train, y_train, clf) mTest = np.array([]) for key in F1Train.keys(): if key not in every_f1_cv: every_f1_train[key] = F1Train[key] else: every_f1_train[key] = np.append(every_f1_train[key], F1Train[key]) mTest = np.append(mTest, F1Train[key]) array_means_train = np.append(array_means_train, mTest.mean()) array_vars_train = np.append(array_vars_train, mTest.var()) F1CV = FScore.F1Score(x_cv, y_cv, clf) mCV = np.array([]) for key in F1CV.keys(): if key not in every_f1_cv: every_f1_cv[key] = F1CV[key] else: every_f1_cv[key] = np.append(every_f1_cv[key], F1CV[key]) mCV = np.append(mCV, F1CV[key]) array_means_cv = np.append(array_means_cv, mCV.mean()) array_vars_cv = np.append(array_vars_cv, mCV.var()) iii += 1 return every_f1_train, every_f1_cv, array_means_train, \ array_vars_train, array_means_cv, array_vars_cv
labels = [] # fileIn = open('../data/testSet.txt') fileIn = open('../data/lr_data') for line in fileIn.readlines(): lineArr = line.strip().split('\t') dataSet.append([float(lineArr[0]), float(lineArr[1])]) labels.append(float(lineArr[2])) dataSet = mat(dataSet) labels = mat(labels).T train_x = dataSet[0:81, :] train_y = labels[0:81, :] test_x = dataSet[80:101, :] test_y = labels[80:101, :] ## step 2: training... print "step 2: training..." C = 0.6 toler = 0.001 maxIter = 50 svmClassifier = svm.trainSVM(train_x, train_y, C, toler, maxIter, kernelOption=('linear', 0)) ## step 3: testing print "step 3: testing..." accuracy = svm.testSVM(svmClassifier, test_x, test_y) ## step 4: show the result print "step 4: show the result..." print 'The classify accuracy is: %.3f%%' % (accuracy * 100) svm.showSVM(svmClassifier)
lineArr = line.strip().split('\t') dataSet.append([float(lineArr[0]), float(lineArr[1])]) labels.append(float(lineArr[2])) dataSet = mat(dataSet) labels = mat(labels).T train_x = dataSet[0:81, :] train_y = labels[0:81, :] test_x = dataSet[80:101, :] test_y = labels[80:101, :] ## step 2: training print("step 2: training...") C = 0.6 toler = 0.001 maxIter = 50 svmClassifier = svm.trainSVM(train_x, train_y, C, toler, maxIter, kernelOption=('linear', 0)) ## step 3: testing print("step 3: testing...") accuracy = svm.testSVM(svmClassifier, test_x, test_y) ## step 4: show the result print("step 4: show the result...") print('The classify accuracy is: %.3f%%' % (accuracy * 100)) svm.showSVM(svmClassifier)
print "step 1: load data..." dataSet = [] labels = [] fileIn = open('D:/soft/python/testSet.txt') for line in fileIn.readlines(): lineArr = line.strip().split('\t') dataSet.append([float(lineArr[0]), float(lineArr[1])]) labels.append(float(lineArr[2])) dataSet = mat(dataSet)## numPy 函数, 将数组转化为矩阵 labels = mat(labels).T train_x = dataSet[0:81, :] train_y = labels[0:81, :] test_x = dataSet[80:101, :] test_y = labels[80:101, :] ## step 2: training... print "step 2: training..." C = 0.6 toler = 0.001 ## 迭代的终止条件 maxIter = 50 svmClassifier = svm.trainSVM(train_x, train_y, C, toler, maxIter, kernelOption = ('linear', 0)) ## //() 元组就像不可更改的列表list【】 ## step 3: testing print "step 3: testing..." accuracy = svm.testSVM(svmClassifier, test_x, test_y) ## step 4: show the result print "step 4: show the result..." print 'The classify accuracy is: %.3f%%' % (accuracy * 100) svm.showSVM(svmClassifier)
# print(type(data)) # print(label.shape) # print(datas.shape) if __name__ == '__main__': # data,label = svm.loadDataSet("testSet.txt") print("step 1:load data...") train, test, train_label, test_label = loadDataSet("testSet.txt") print("step 2: training...") C = 0.6 toler = 0.001 maxIter = 40 svmClassifier, b, alpha = svm.trainSVM(train, train_label, C, toler, maxIter, kernelOption=('linear', 0)) # # print(b) # # print(alpha[alpha>0]) joblib.dump(svmClassifier, "train_model.m") # 保存模型 # svmClassifier = joblib.load("train_model.m")#加载模型 # # ## step 3: testing print("step 3: testing...") test_accuracy = svm.testSVM(svmClassifier, test, test_label) # print(accuracy) print('The classify test_accuracy is: %.3f%%' % (test_accuracy * 100)) ## step 4: show the result print("step 4: show the result...") svm.showSVM(svmClassifier)