Как, почему у меня есть переоснащение? - PullRequest
0 голосов
/ 30 апреля 2020

Я использую знаменитый набор данных вина. Я пытаюсь настроить гиперпараметры, используя для l oop. Но, похоже, у меня проблема с перегрузкой, и я не могу понять, почему.

from sklearn import datasets
import sklearn
import numpy as np
from sklearn.model_selection import train_test_split
wine = datasets.load_wine()
X = wine.data
y = wine.target

X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.8, random_state=0)

X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, train_size=0.75, random_state=0)

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit(X_train)
X_train_std = sc.transform(X_train)
X_test_std = sc.transform(X_test)
X_val_std = sc.transform(X_val)

from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
C= [0.0001, 0.001, 0.01,0.1, 1.0, 10.0, 100.0, 1000.0]
gamma=[0.0001, 0.001, 0.01, 0.1, 1.0, 10.0, 100.0, 1000.0]
kernel= ["linear","rbf"]
best_score = 0.0
best_C =0.0
best_gamma = 0.0
best_kernel = ""

for i in C:
    for j in gamma:
        for k in kernel:
            clf = SVC(C=i, gamma=j, kernel=k)
            clf.fit(X_train_std, y_train)
            y_predict_val = clf.predict(X_val_std)
            score = accuracy_score(y_val, y_predict_val)

            if score >= best_score:
                best_score = score
                best_gamma = j
                best_C =i
                best_kernel = k

print("Best C:",best_C, "Best Gamma:",best_gamma, "Best kernel:",best_kernel, "Best accuracy:",best_score)

Это результат, который я получаю при запуске. enter image description here

clf_best = SVC(C=best_C, gamma=best_gamma, kernel=best_kernel)
clf_best.fit(X_train_std, y_train)
y_predict_test = clf_best.predict(X_test_std)
print(accuracy_score(y_test, y_predict_test))

Я получаю 1,0 в качестве показателя точности для большинства комбинаций параметров (~ 60%). В остальном я получаю 0,44 и некоторые другие значения. Может кто-нибудь определить, где ошибка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...