예제 #1
0
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))
예제 #2
0
파일: cypher.py 프로젝트: jnshi/6784project
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])