我使用支持向量机模型对使用虹膜数据集进行分类。我使用了训练测试拆分功能,将数据集分为训练和测试子集。
当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%。