首页 > 解决方案 > 在 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% 的准确度。

标签: machine-learningsvmdata-science

解决方案


推荐阅读