df_train = pd.read_csv('../data/perceptron-train.csv', header=None)
df_test = pd.read_csv('../data/perceptron-test.csv', header=None)
X_train = df_train[df_train.columns[1:3]]
y_train = df_train[df_train.columns[0]]

X_test = df_test[df_test.columns[1:3]]
y_test = df_test[df_test.columns[0]]

"""
Explanation: 1. Загрузите обучающую и тестовую выборки из файлов perceptron-train.csv и perceptron-test.csv. Целевая переменная записана в первом столбце, признаки — во втором и третьем.
End of explanation
"""


clf = Perceptron(random_state=241)
clf.fit(X_train, y_train)

"""
Explanation: 2. Обучите персептрон со стандартными параметрами и random_state=241.
End of explanation
"""


predictions = clf.predict(X_test)
score = accuracy_score(y_test, predictions)
score

"""
Explanation: 3. Подсчитайте качество (долю правильно классифицированных объектов, accuracy) полученного классификатора на тестовой выборке.
End of explanation
"""


scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

"""
Explanation: 4. Нормализуйте обучающую и тестовую выборку с помощью класса StandardScaler.
End of explanation
"""


clf.fit(X_train_scaled, y_train.values.ravel())

predictions = clf.predict(X_test_scaled)
scaled_score = accuracy_score(y_test.values.ravel(), predictions) 
scaled_score

"""
Explanation: 5. Обучите персептрон на новой выборке. Найдите долю правильных ответов на тестовой выборке.
End of explanation
"""


print("{:0.2f}".format(scaled_score-score))

"""
Explanation: 6. Найдите разность между качеством на тестовой выборке после нормализации и качеством до нее. Это число и будет ответом на задание.
End of explanation
"""


