def test(nfiles): X = [] Y = [] X_tst = [] Y_tst = [] ntrain = nfiles ntest = 5*nfiles print("Training/testing with %d/%d files." % (ntrain,ntest)) start = time.clock() filename = '../maps/MAPS_AkPnCGdD_2/AkPnCGdD/MUS' #filename = '../maps/MAPS_AkPnCGdD_1/AkPnCGdD/ISOL/NO' files = dirs.get_files_with_extension(filename, '.mid') train_files = files[:ntrain] print("\t" + str(train_files)) #test_files = files[ntrain:ntest+ntrain] # for legit testing test_files = files[-ntest:] map(per_file, train_files, it.repeat(X, ntrain), it.repeat(Y, ntrain)) map(per_file, test_files, it.repeat(X_tst, ntest), it.repeat(Y_tst, ntest)) end = time.clock() print("\tRead time: %f" % (end - start)) print("\tnWindows train: " + str([X[i].shape[0] for i in range(len(X))])) start = time.clock() crf = ChainCRF(n_states=2) clf = OneSlackSSVM(model=crf, C=100, n_jobs=-1, inference_cache=100, tol=.1) clf.fit(np.array(X), np.array(Y)) end = time.clock() print("\tTrain time: %f" % (end - start)) start = time.clock() Y_pred = clf.predict(X_tst) comp = [] for i in range(len(Y_tst)): for j in range(len(Y_tst[i])): comp.append((Y_tst[i][j], Y_pred[i][j])) print Y_tst[i][j], print for j in range(len(Y_tst[i])): print Y_pred[i][j], print print print("\tTrue positives: %d" % comp.count((1,1))) print("\tTrue negatives: %d" % comp.count((0,0))) print("\tFalse positives: %d" % comp.count((0,1))) print("\tFalse negatives: %d" % comp.count((1,0))) end = time.clock() print("\tTest time: %f" % (end - start))
def test(): global posX, negX, posY, negY # train_dir = '/home/charles/maps-data/maps/MAPS_AkPnCGdD_1/AkPnCGdD/ISOL' # test_dir = '/home/charles/maps-data/maps/MAPS_AkPnCGdD_1/AkPnCGdD/RAND' # train_file = '/home/charles/maps-data/maps/MAPS_AkPnCGdD_2/AkPnCGdD/MUS/MAPS_MUS-chpn_op10_e12_AkPnCGdD.mid' # test_file = '/home/charles/maps-data/maps/MAPS_AkPnCGdD_2/AkPnCGdD/MUS/MAPS_MUS-grieg_kobold_AkPnCGdD.mid' filename = '/home/charles/maps-data/maps/MAPS_AkPnCGdD_2/AkPnCGdD/MUS' files = dirs.get_files_with_extension(filename, '.mid') note = 60 for nindex in range(1, 100): posX = [] negX = [] posY = [] negY = [] nfiles = nindex ntrain = nfiles ntest = 5*nfiles train_files = files[:nfiles] # print 'train_files: ' + str(train_files) map(per_file(note), train_files) print len(posX) print len(negX) ind = random.sample(range(len(negX)), len(posX)) X = [] X.extend(posX) X.extend([negX[i] for i in ind]) Y = [] Y.extend(posY) Y.extend([negY[i] for i in ind]) clf = svm.SVC(kernel='linear') clf.fit(np.array(X), np.array(Y)) test_files = files[nfiles:nfiles+ntrain] # print 'test_files: ' + str(test_files) results = svm_test(clf, note, test_files) print str(nfiles) + ' ' + ' '.join([str(r) for r in results])