IIS_2023_1/antonov_dmitry_lab_6/lab6.py
DmitriyAntonov b6ab40cae3 реади
2023-10-08 15:37:46 +04:00

52 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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}%')