import pandas as pd from sklearn.neural_network import MLPRegressor, MLPClassifier from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.metrics import mean_squared_error, accuracy_score import numpy as np # Загрузим данные из файла Hostel.csv data = pd.read_csv("Hostel.csv") # Выберем необходимые признаки selected_features = ['summary.score', 'atmosphere', 'staff'] # Исключим строки с отсутствующими значениями в выбранных признаках data = data.dropna(subset=selected_features + ["price.from"]) # Преобразуем текстовый признак "Distance" в числовой data['Distance'] = data['Distance'].str.replace('km from city centre', '').astype(float) # Выделим признаки и целевую переменную для регрессии X_reg = data[selected_features + ["Distance"]] y_reg = data["price.from"] # Разделим данные на обучающий и тестовый наборы для регрессии X_train_reg, X_test_reg, y_train_reg, y_test_reg = train_test_split(X_reg, y_reg, test_size=0.01, random_state=42) # Нормализуем признаки для регрессии scaler_reg = StandardScaler() X_train_scaled_reg = scaler_reg.fit_transform(X_train_reg) X_test_scaled_reg = scaler_reg.transform(X_test_reg) # Инициализируем и обучим MLPRegressor model_reg = MLPRegressor(hidden_layer_sizes=(100, 50), max_iter=5000, random_state=42) model_reg.fit(X_train_scaled_reg, y_train_reg) # Предсказание на тестовом наборе для регрессии y_pred_reg = model_reg.predict(X_test_scaled_reg) # Оценим качество модели для регрессии mse_reg = mean_squared_error(y_test_reg, y_pred_reg) rmse_reg = np.sqrt(mse_reg) print(f"Среднеквадратичная ошибка (MSE) для регрессии: {mse_reg}") print(f"Корень из среднеквадратичной ошибки (RMSE) для регрессии: {rmse_reg}") # Выделим признаки и целевую переменную для классификации X_cls = data[selected_features + ["Distance"]] y_cls = (data["price.from"] > data["price.from"].median()).astype(int) # Binary classification # Разделим данные на обучающий и тестовый наборы для классификации X_train_cls, X_test_cls, y_train_cls, y_test_cls = train_test_split(X_cls, y_cls, test_size=0.01, random_state=42) # Нормализуем признаки для классификации scaler_cls = StandardScaler() X_train_scaled_cls = scaler_cls.fit_transform(X_train_cls) X_test_scaled_cls = scaler_cls.transform(X_test_cls) # Инициализируем и обучим MLPClassifier model_cls = MLPClassifier(hidden_layer_sizes=(100, 50), max_iter=2000, random_state=42) model_cls.fit(X_train_scaled_cls, y_train_cls) # Предсказание на тестовом наборе для классификации y_pred_cls = model_cls.predict(X_test_scaled_cls) # Оценим качество модели для классификации accuracy_cls = accuracy_score(y_test_cls, y_pred_cls) print(f"Точность (Accuracy) для классификации: {accuracy_cls}")