machine-learning - 在 SVM 模型中,当我将测试大小减小到 0.06 时,结果是否可行
问题描述
我使用支持向量机模型使用 iris 数据集进行分类。我使用训练测试拆分功能将数据集拆分为训练和测试子集。
当 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% 的准确度。
解决方案
推荐阅读
- c - C中的void指针交换函数
- javascript - 添加带有jQuery对象的自我输入参数的onClick?
- flutter - 在 Flutter 中动态更改 AppBar 标题
- python - 如何在查询时在模式之间切换
- amazon-web-services - 为多个目标组创建单个 cloudwatch 警报?
- node.js - 无法将 mongoDB 保存调用的响应返回到前端
- java - 即使在应用程序关闭时也保存用户选择的图像?
- java - Spring Webflux Security - 基于客户端证书的授权端点
- python-3.x - 如何在 python 3 的列表字符串中将 ' ' 替换为 '0'?
- pdf - 使用 ghostscript 为 postscript 文件中的某些页面添加 Duplex 选项