コード例 #1
0
ファイル: a_lad.py プロジェクト: z01nl1o02/tests
def LDA_B(rootdir, folderA, folderB, folderC,ft):
    pos = []
    neg = [] 
    imgspos = []
    imgsneg = []
    if 0 == cmp(ft, 'gabor'):
        print 'feature type: GABOR'
        gbf = igbf.GABOR_FEAT()
    elif 0 == cmp(ft, 'hog'):
        print 'feature type: HOG'
        gbf = ihogf.HOG_FEAT()
    elif 0 == cmp(ft, 'lbp'):
        print 'feature type: LBP'
        gbf = ilbpf.LBP_FEAT()
    elif 0 == cmp(ft, 'dwt'):
        print 'feature type: DWT'
        gbf = idwtf.DWT_FEAT()
    elif 0 == cmp(ft, 'yuv'):
        print 'feature type: YUV'
        gbf = iyuvf.YUV_FEAT()
    else:
        print 'unknown feature type'
        return

    #1--class A
    fvs, imgs = gbf.gen_folder(os.path.join(rootdir, folderA), 1000)
    pos.extend(fvs)
    imgspos.extend(imgs)
    #2--class B
    fvs, imgs = gbf.gen_folder(os.path.join(rootdir, folderB), 1000)
    neg.extend(fvs)
    imgsneg.extend(imgs)

    #3--train
    label0 = [0 for k in range(len(pos))]
    label1 = [1 for k in range(len(neg))]
    samples = np.array(pos + neg)
    labels = np.array(label0 + label1)
    imgs = imgspos + imgsneg


    print 'before pca : ', samples.shape
   # com_numx = 300
   # if com_numx + 10 > len(imgs):
   #     com_numx = len(imgs) - 10
    clf_pca = PCA(0.95)
    samples = clf_pca.fit_transform(samples)
    print 'after pca : ', samples.shape
    clf_lda = LDA()
    clf_lda.fit(samples,labels)


    #4--predict
    fvs, imgs = gbf.gen_folder(os.path.join(rootdir, folderC), 100000)
    samples = np.array(fvs) 
    samples = clf_pca.transform(samples)
    cnf = clf_lda.decision_function(samples)
    X = []
    for k in range(len(imgs)):
        X.append((cnf[k], imgs[k]))
    X = sorted(X, key = lambda a : a[0])
    lineA = "" #sometimes, the positive set is split into two parts
    lineB = ""
    for cnf, img in X:
        if cnf > 0:
            lineA += img + '\n'
        else:
            lineB += img + '\n'

    with open('A.txt', 'w') as f:
        f.writelines(lineA)
    with open('B.txt', 'w') as f:
        f.writelines(lineB)
    return 
コード例 #2
0
    XX=[]
    for i in xrange(len(Y)):
        if Y[i]==value:
            XX.append(X[i])
    return XX

out=open(sys.argv[1],"r")
model=LDA()
X, Y = read_fea(sys.argv[1])
sel = VarianceThreshold(threshold=0)
model.fit(sel.fit_transform(X), Y)
warning("useful features dim: "+str(len(sel.get_support(True))))
if hasattr(model,'score'):
    warning("accuracy on training set: "+str(model.score(sel.transform(X), Y)))
    if len(sys.argv)>2:
        X, Y = read_fea(sys.argv[2])
        warning("accuracy on cv set: "+str(model.score(sel.transform(X), Y)))

    if len(sys.argv)>3:
        X, Y = read_fea(sys.argv[3])
        warning("accuracy on dev set: "+str(model.score(sel.transform(X), Y)))

if len(sys.argv)>4:
    ref = model.decision_function(sel.transform(X))
    X, Y = read_fea(sys.argv[4], True)
    Z = model.decision_function(sel.transform(X))
    Z = (Z-ref.mean(axis=0)[np.newaxis,:])/ref.std(axis=0)[np.newaxis,:]
    for i in xrange(len(Y)):
        ZZ=np.array(Z[i][1:])
        print('S'+str(Y[i])+' '+str(Z[i][0]))
コード例 #3
0
def LDA_B(rootdir, folderA, folderB, folderC, ft):
    pos = []
    neg = []
    imgspos = []
    imgsneg = []
    if 0 == cmp(ft, 'gabor'):
        print 'feature type: GABOR'
        gbf = igbf.GABOR_FEAT()
    elif 0 == cmp(ft, 'hog'):
        print 'feature type: HOG'
        gbf = ihogf.HOG_FEAT()
    elif 0 == cmp(ft, 'lbp'):
        print 'feature type: LBP'
        gbf = ilbpf.LBP_FEAT()
    elif 0 == cmp(ft, 'dwt'):
        print 'feature type: DWT'
        gbf = idwtf.DWT_FEAT()
    elif 0 == cmp(ft, 'yuv'):
        print 'feature type: YUV'
        gbf = iyuvf.YUV_FEAT()
    else:
        print 'unknown feature type'
        return

    #1--class A
    fvs, imgs = gbf.gen_folder(os.path.join(rootdir, folderA), 1000)
    pos.extend(fvs)
    imgspos.extend(imgs)
    #2--class B
    fvs, imgs = gbf.gen_folder(os.path.join(rootdir, folderB), 1000)
    neg.extend(fvs)
    imgsneg.extend(imgs)

    #3--train
    label0 = [0 for k in range(len(pos))]
    label1 = [1 for k in range(len(neg))]
    samples = np.array(pos + neg)
    labels = np.array(label0 + label1)
    imgs = imgspos + imgsneg

    print 'before pca : ', samples.shape
    # com_numx = 300
    # if com_numx + 10 > len(imgs):
    #     com_numx = len(imgs) - 10
    clf_pca = PCA(0.95)
    samples = clf_pca.fit_transform(samples)
    print 'after pca : ', samples.shape
    clf_lda = LDA()
    clf_lda.fit(samples, labels)

    #4--predict
    fvs, imgs = gbf.gen_folder(os.path.join(rootdir, folderC), 100000)
    samples = np.array(fvs)
    samples = clf_pca.transform(samples)
    cnf = clf_lda.decision_function(samples)
    X = []
    for k in range(len(imgs)):
        X.append((cnf[k], imgs[k]))
    X = sorted(X, key=lambda a: a[0])
    lineA = ""  #sometimes, the positive set is split into two parts
    lineB = ""
    for cnf, img in X:
        if cnf > 0:
            lineA += img + '\n'
        else:
            lineB += img + '\n'

    with open('A.txt', 'w') as f:
        f.writelines(lineA)
    with open('B.txt', 'w') as f:
        f.writelines(lineB)
    return
コード例 #4
0
            XX.append(X[i])
    return XX


out = open(sys.argv[1], "r")
model = LDA(solver='lsqr')
X, Y = read_fea(sys.argv[1])
sel = VarianceThreshold(threshold=0)
model.fit(sel.fit_transform(X), Y)
warning("useful features dim: " + str(len(sel.get_support(True))))
if hasattr(model, 'score'):
    warning("accuracy on training set: " +
            str(model.score(sel.transform(X), Y)))
    if len(sys.argv) > 2:
        X, Y = read_fea(sys.argv[2])
        warning("accuracy on cv set: " + str(model.score(sel.transform(X), Y)))

    if len(sys.argv) > 3:
        X, Y = read_fea(sys.argv[3])
        warning("accuracy on dev set: " +
                str(model.score(sel.transform(X), Y)))

if len(sys.argv) > 4:
    ref = model.decision_function(sel.transform(X))
    X, Y = read_fea(sys.argv[4], True)
    Z = model.decision_function(sel.transform(X))
    Z = (Z - ref.mean(axis=0)[np.newaxis, :]) / ref.std(axis=0)[np.newaxis, :]
    for i in xrange(len(Y)):
        ZZ = np.array(Z[i][1:])
        print('S' + str(Y[i]) + ' ' + str(Z[i][0]))