Я работаю над проблемой классификации, в которой мне дано 1301 уникальных наборов данных с 306 объектами и 85 строками.В каждом наборе данных 45 строк относятся к классу 0, а 41 строка - к классу 2, поэтому данные относительно сбалансированы.Моя задача - создать машину опорных векторов для каждого набора данных и отобразить точность классификатора, оставив одну перекрестную проверку для этих наборов данных.Я использую sklearn для генерации SVC, а также параметры гипертонии через GridSearchCV.Несмотря на это, каждая модель SVC каждый раз предсказывает класс 0, поэтому точность классификатора одинакова для каждого классификатора для каждого набора данных.Я включил часть кода, который я использовал для этого ниже.Этот код включает параметры модели, которые я тестирую (не стесняйтесь предлагать больше), а также функцию, которую я использую, чтобы получить точность одного классификатора (у меня есть другая функция, чтобы поместить все эти показатели точности в список).скажи мне, что происходит не так?Ваша помощь будет высоко ценится!
def train_model(X, y):
loo = LeaveOneOut()
accuracy_sum = 0
for train_index, test_index in loo.split(X):
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
svm = SVC()
clf = GridSearchCV(svm, model_parameters)
clf.fit(X_train, y_train)
predictions = clf.predict(X_test)
print(predictions)
accuracy_sum += metrics.accuracy_score(y_test, predictions)
accuracy_score = accuracy_sum / X.shape[0]
print(accuracy_score)
return accuracy_score`
model_parameters = {
'kernel': ('linear', 'rbf'),
'C': (100.0, 50.0, 10.0, 1.0, .75, .5, .25, .1, .01),
'gamma': (.01, .1, 1, 2, 3, 5, 10, 100, 'auto'),
'decision_function_shape': ('ovo', 'ovr'),
'shrinking': (True, False)
}