#python #python_3x #машинное_обучение #scikit_learn
Прохожу на курсере курс по машинному обучению и зависла на одном задании. Даны 2 csv файла: тренировочный и тестовый. Первый столбец - целевые данные, второй и третий - признаки. Нужно использовать перцептрон (с ramdom_state = 241), посчитать accuracy (с помощью accuracy_score). Затем произвести нормализацию признаков и посчитать accuracy снова. Ответом является разница между accuracy до и после нормализации, округленная до 3 знаков после запятой. Я вроде бы делаю все правильно, но получаю неверный ответ. Если будет нужно, могу скинуть задание целиком и файлы. import pandas from sklearn.linear_model import Perceptron from sklearn.metrics import accuracy_score from sklearn.preprocessing import StandardScaler data_train = pandas.read_csv('train.csv', header=None) data_test = pandas.read_csv('test.csv', header=None) X_train = data_train[[1, 2]] X_test = data_test[[1, 2]] Y_train = data_train[0] Y_test = data_test[0] magic_number = 241 per = Perceptron(random_state=magic_number, max_iter=5, tol=None) per.fit(X_train, Y_train) predictions = per.predict(X_test) accuracy = accuracy_score(Y_test, predictions) scale = StandardScaler() X_train_scaled = scale.fit_transform(X_train) X_test_scaled = scale.fit_transform(X_test) per.fit(X_train_scaled, Y_train) predictions_scaled = per.predict(X_test_scaled) accuracy_scaled = accuracy_score(Y_test, predictions_scaled) answer = round(accuracy_scaled - accuracy, 3) print(answer)
Ответы
Ответ 1
Скорее всего от вас хотят, чтобы вы при нормализации тестового набора использовали метод .transform() вместо .fit_transform(): X_test_scaled = scale.transform(X_test) PS метод .fit_transform() - переобучает модель и перезаписывает ранее полученные значения новыми, полученными при использовании тестовых данных.
Комментариев нет:
Отправить комментарий