Модель регрессии опорных векторов sklearn, предсказывающая только один класс - PullRequest
0 голосов
/ 20 сентября 2019

Я работаю над проблемой классификации, в которой мне дано 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)
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...