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))
# 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])
# 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: