def knn_shapelet_experiment(knnClassifier, X_train, y_train, X_test, y_test, num_resample=1, verbose=True): minShapeletLength = 30 maxShapeletLength = int(X_train.shape[1] * 0.7) numShapelet = int(X_train.shape[1] * 0.5) lengthIncrement = 20 positionIncrement = 20 sum_accuracy = 0 for i in range(num_resample): callSTS = ShapeletTransformSimplicity(X_train, y_train, minShapeletLength, maxShapeletLength, lengthIncrement, positionIncrement) bestKShapelet = callSTS.train(numShapelet) print("bestKShapelet: ", np.shape(bestKShapelet)) X_train_ = callSTS.transform(bestKShapelet, X_train) X_test_ = callSTS.transform(bestKShapelet, X_test) X_train_ = np.array(X_train_) X_test_ = np.array(X_test_) knnClassifier.fit(X_train_, y_train) predList = knnClassifier.predict(X_test_) iaccuracy = validation.cal_accuracy(y_test, predList) sum_accuracy += iaccuracy if verbose: print(iaccuracy) X_train, y_train, X_test, y_test = data_parser.resample_data(X_train, y_train, X_test, y_test) return sum_accuracy / num_resample
def benchmark(clf, distf, distparams=None): t0 = time() clf.set_distfunc(distfunc=distf, distfunc_params=distparams) y_pred = clf.predict(X_test) duration = time() - t0 acc = validation.cal_accuracy(y_pred, y_test) return acc, duration
def knn_experiment(knnClassifier, X_train, y_train, X_test, y_test, num_resample=1, verbose=True): sum_accuracy = 0 for i in range(num_resample): knnClassifier.fit(X_train, y_train) predList = knnClassifier.predict(X_test) iaccuracy = validation.cal_accuracy(y_test, predList) if verbose: print(iaccuracy) sum_accuracy += iaccuracy X_train, y_train, X_test, y_test = data_parser.resample_data(X_train, y_train, X_test, y_test) return sum_accuracy / num_resample
print("file_test", file_test) X_train, y_train = data_parser.load_list_data(file_train) X_test, y_test = data_parser.load_list_data(file_test) print('test class', np.unique(y_train)) print('train class', np.unique(y_test)) # print(X_train[0]) # print(X_test[0]) # z_normalize for id, iTrain in enumerate(X_train): X_train[id] = (iTrain - np.mean(iTrain)) / (np.sqrt(np.var(iTrain)) + 1e-9) for id, iTest in enumerate(X_test): X_test[id] = (iTest - np.mean(iTest)) / (np.sqrt(np.var(iTest)) + 1e-9) # print(X_train[0]) # print(X_test[0]) n_neighbors = 1 n_jobs = 10 knn_clf = KNeighborsClassifierVariousDim(n_neighbors=n_neighbors, distfunc=DISTFunc.dist_basic_dtw) knn_clf.fit(X_train, y_train) predList = knn_clf.predict(X_test) acc = validation.cal_accuracy(predList, y_test) print(acc)
n_neighbors = 1 n_jobs = 10 k_fold = 10 distfunc = distance.dist_euclidean # set up knn classifier knn_clf = KNeighborsClassifier(n_neighbors=n_neighbors, n_jobs=n_jobs, distfunc=distfunc) result = [['dataset name', 'accuracy']] for name in dataset_: file_train = os.path.join(UCR_DATA_ROOT, name, name + '_TRAIN') file_test = os.path.join(UCR_DATA_ROOT, name, name + '_TEST') X_train, y_train = data_parser.load_ucr(file_train) X_test, y_test = data_parser.load_ucr(file_test) acc_sum = 0 for i in range(k_fold): knn_clf.fit(X_train, y_train) y_pred = knn_clf.predict(X_test) acc_sum += validation.cal_accuracy(y_test, y_pred) X_train, y_train, X_test, y_test = data_parser.resample_data( X_train, y_train, X_test, y_test) acc = acc_sum / k_fold result.append((name, acc)) print(name, acc) file_out = os.path.join(OUT_ROOT, "%dnn_%dfold_ed.md" % (n_neighbors, k_fold)) table2markdown(file_out, result, description=__doc__)