コード例 #1
0
ファイル: cmp_usps_onfly.py プロジェクト: percyqdeng/dualsvm
    start_t = time.time()
    clf2 = DualKSVM(lmda=C/n, kernelstr='rbf', gm=gamma, nsweep=int(4*n), algo_type='cd')
    clf2.fit(x[train_index, :], y[train_index], x[test_index, :], y[test_index])
    if C in trainerr_cd:
        trainerr_cd[C] = np.vstack((trainerr_cd[C], clf2.err_tr))
        testerr_cd[C] = np.vstack((testerr_cd[C], clf2.err_te))
        obj_cd[C] = np.vstack((obj_cd[C], clf2.obj))
    else:
        trainerr_cd[C] = clf2.err_tr
        testerr_cd[C] = clf2.err_te
        obj_cd[C] = clf2.obj
    print "cd svm time %f" % (time.time() - start_t)

    start_t = time.time()
    clf3 = Pegasos(lmda=C/n, gm=gamma, kernelstr='rbf', nsweep=5, batchsize=1)
    clf3.fit(x[train_index, :], y[train_index], x[test_index, :], y[test_index])
    if C in trainerr_pega:
        trainerr_pega[C] = np.vstack((trainerr_pega[C], clf3.err_tr))
        testerr_pega[C] = np.vstack((testerr_pega[C], clf3.err_te))
        obj_pega[C] = np.vstack((obj_pega[C], clf3.obj))
    else:
        trainerr_pega[C] = clf3.err_tr
        testerr_pega[C] = clf3.err_te
        obj_pega[C] = clf3.obj
    print "pegasos time %f" % (time.time() - start_t)

    # start_t = time.time()
    # clf4 = DualKSVM(lmda=C/n, kernel='rbf', gm=gamma, nsweep=n, rho=rho2, algo_type='scg_da')
    # clf4.fit(x[train_index, :], y[train_index], x[test_index, :], y[test_index])
    # if C in trainerr_dasvm2:
    #     trainerr_dasvm2[C] = np.vstack((trainerr_dasvm2[C], clf4.err_tr))
コード例 #2
0
ファイル: cmp_usps_rho.py プロジェクト: percyqdeng/dualsvm
        # trainerr_md2[i].append(clf_md[i].err_tr2)
        # testerr_md2[i].append(clf_md[i].err_te2)
        obj_md2[i].append(clf_md[i].obj2)
    print "dualsvm time %f " % (time.time() - start_t)

    start_t = time.time()
    clf_cd = DualKSVM(lmda=C / n, kernelstr='rbf', gm=gamma, nsweep=int(4 * n), algo_type='cd')
    clf_cd.fit(x[train_index, :], y[train_index], x[test_index, :], y[test_index])
    trainerr_cd.append(clf_cd.err_tr)
    testerr_cd.append(clf_cd.err_te)
    obj_cd.append(clf_cd.obj)
    print "cd svm time %f" % (time.time() - start_t)

    start_t = time.time()
    clf_pega = Pegasos(lmda=C / n, gm=gamma, kernelstr='rbf', nsweep=5, batchsize=1)
    clf_pega.fit(x[train_index, :], y[train_index], x[test_index, :], y[test_index])
    trainerr_pega.append(clf_pega.err_tr)
    testerr_pega.append(clf_pega.err_te)
    obj_pega.append(clf_pega.obj)
    trainerr_pega.append(clf_pega.err_tr)
    testerr_pega.append(clf_pega.err_te)
    obj_pega.append(clf_pega.obj)
    print "pegasos time %f" % (time.time() - start_t)

for i, row in enumerate(rholist):
    trainerr_dasvm[i] = np.asarray(trainerr_dasvm[i])
    testerr_dasvm[i] = np.asarray(testerr_dasvm[i])
    obj_dasvm[i] = np.asarray(obj_dasvm[i])
    trainerr_md[i] = np.asarray(trainerr_md[i])
    testerr_md[i] = np.asarray(testerr_md[i])
    obj_md[i] = np.asarray(obj_md[i])
コード例 #3
0
ファイル: test_usps_onfly.py プロジェクト: percyqdeng/dualsvm
    # x_train = scalar.transform(x_train)
    mm_scale = preprocessing.MinMaxScaler(feature_range=(-1, 1))
    x_train = mm_scale.fit_transform(x_train)
    x_test = mm_scale.transform(x_test)
    ntr = x_train.shape[0]
    # gm = 1.0/1
    gm = 1.0/ntr
    # lmda = 1/float(ntr)
    lmda = 1000/float(ntr)
    print('train dual svm')
    dsvm = DualKSVM(lmda=lmda, gm=gm, kernelstr='rbf', nsweep=0.8 * ntr, b=5, c=1)
    dsvm.fit(x_train, y_train, x_test, y_test, )

    print ('train Pegasos')
    kpega = Pegasos(lmda=lmda, gm=gm, kernelstr='rbf', nsweep=3)
    kpega.fit(x_train, y_train, x_test, y_test)

    clf = svm.SVC(C=lmda*ntr, kernel='rbf', gamma=gm, verbose=True,)
#    clf_da = svm.SVC(C=lmda*ntr, kernel='rbf', gamma=gm, fit_intercept=False)
    clf.fit(x_train, y_train)
    pred = clf.predict(x_test)
    err_libsvm = zero_one_loss(pred, y_test)
    print "sklearn err %f" % err_libsvm

    plt.figure()
    plt.plot(dsvm.nker_opers, dsvm.err_tr, 'rx-', label='dc train error')
    plt.plot(kpega.nker_opers, kpega.err_tr, 'b.-', label='pegasos train error')
    plt.plot(dsvm.nker_opers, dsvm.err_te, 'gx-', label='dc test error')
    plt.plot(kpega.nker_opers, kpega.err_te, 'y.-', label='pegasos test error')
    plt.xlabel('number of kernel products')
    if one_vs_rest: