import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.neural_network import MLPClassifier from sklearn.preprocessing import StandardScaler # загрузка датасета data = pd.read_csv('dataset.csv') # выбор признаков features = [ 'Curricular units 2nd sem (approved)', 'Curricular units 2nd sem (grade)', 'Tuition fees up to date', ] target = 'Target' X = data[features] y = data[target] # разбиваем на тестовую и тренировочную выборки X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # стандартизация признаков scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # тренируем нейронную сеть MLPClassifier classifier = MLPClassifier( hidden_layer_sizes=(50, 50), # два скрытых слоя с 50 нейронами каждый activation='relu', # relu функция активации solver='adam', # оптимизатор на основе стохастического градиента alpha=0.0001, # L2 штраф (регуляризация) max_iter=1000, # макс итераций learning_rate='constant', # постоянная скорость обучения random_state=42, # Random начало для воспроизведения результата batch_size=32, # размер мини партии early_stopping=True, # для предотвращения переобучения validation_fraction=0.2, # 20% данных для проверки verbose=True, # для оттображения итераций ) classifier.fit(X_train, y_train) # предсказываем значение y_pred = classifier.predict(X_test) # оцениваем результат accuracy = np.mean(y_pred == y_test) print(f'Оценка точности: {accuracy*100:.2f}%')