IIS_2023_1/almukhammetov_bulat_lab_6/lab6.py
2023-11-30 10:03:47 +04:00

50 lines
2.4 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.

# Использовать нейронную сеть(четные варианты MLPRegressor, нечетные MLPClassifier)для данных из таблицы 1
# по варианту, самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо
# она подходит для решения сформулированной вами задачи.
# Вариант 2 MLPRegressor
# Импортируем необходимые библиотеки
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPRegressor
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
import math
# Загрузим данные
df = pd.read_csv('housing.csv')
df.dropna(inplace=True)
# Выберем признаки и целевую переменную (доход)
features_list = ['total_rooms', 'total_bedrooms', 'population', 'households', 'median_income']
features = df[features_list].copy()
target = df['median_house_value'].copy()
# Разделим данные на тренировочный и тестовый наборы
X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.1, random_state=42)
# Масштабируем признаки и целевую переменную
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# Создаем модель MLPRegressor
mlp_regressor = MLPRegressor(hidden_layer_sizes=(100, 50), max_iter=1500, random_state=42)
# Обучаем модель на тренировочных данных
mlp_regressor.fit(X_train_scaled, y_train)
# Делаем предсказания на тестовых данных
predictions = mlp_regressor.predict(X_test_scaled)
# Оцениваем производительность модели
mse = mean_squared_error(y_test, predictions)
mae = mean_absolute_error(y_test, predictions)
r2 = r2_score(y_test, predictions)
print(f"Среднеквадратичная ошибка (MSE): {round(math.sqrt(mse), 2)}%")
print(f"Среднеабсолютное отклонение (MAE): {round(mae, 2)}%")
print(f"Коэффициент детерминации (R^2): {round(r2, 4) * 100}%")