在SVM模型中,当我将测试大小减小到0.06时,结果将是可行的

时间:2018-06-29 08:39:36

标签: machine-learning svm data-science

我使用支持向量机模型对使用虹膜数据集进行分类。我使用了训练测试拆分功能,将数据集分为训练和测试子集。

当test_size为0.3时,精度较低,然后我将测试子集的大小减小为0.06,现在精度为1,即。 100%。显然,原因很明显,其原因是随着测试数据噪声和波动的数量逐渐减少。

我的问题是-我们希望我们的模型高效,但是可以接受什么test_size的值。将test_size值设为多少将是可行的。

这是我程序中的一些代码-

    from sklearn import datasets
    from sklearn import svm
    import numpy as np
    from sklearn import metrics

    iris = datasets.load_iris()
    X = iris.data[:, :2]
    y = iris.target
    C=1.0

    from sklearn.cross_validation import train_test_split
    x_train, x_test, y_train ,y_test = train_test_split(X,y,test_size=0.06, random_state=4)

    svc = svm.SVC(kernel='linear', C=C).fit(x_train,y_train)
    y_pred = svc.predict(x_test)
    print(metrics.accuracy_score(y_test,y_pred))

    lin_svc = svm.LinearSVC(C=C).fit(x_train,y_train)
    y_pred = lin_svc.predict(x_test)
    print(metrics.accuracy_score(y_test,y_pred))

    rbf_svc = svm.SVC(kernel='rbf', gamma=0.7, C=C).fit(x_train,y_train)
    y_pred =rbf_svc.predict(x_test)
    print(metrics.accuracy_score(y_test,y_pred))

    poly_svc = svm.SVC(kernel='poly',degree=3, C=C).fit(x_train,y_train)
    y_pred = poly_svc.predict(x_test)
    print(metrics.accuracy_score(y_test,y_pred))

所有4例结果的准确度均为100%。

0 个答案:

没有答案