Я использую знаменитый набор данных вина. Я пытаюсь настроить гиперпараметры, используя для 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](https://i.stack.imgur.com/ufHJA.png)
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 и некоторые другие значения. Может кто-нибудь определить, где ошибка?