В модели SVM результаты будут жизнеспособными, когда я уменьшу размер теста до 0,06 - PullRequest
0 голосов
/ 29 июня 2018

Я использовал модель машины опорных векторов для классификации с использованием набора данных радужной оболочки. Я использовал функцию разделения теста поезда для разделения набора данных на подмножества обучения и тестирования.

когда 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))

результат - точность 100% для всех 4 случаев.

...