import pandas as pd from matplotlib import pyplot as plt from sklearn.model_selection import train_test_split from sklearn.neural_network import MLPRegressor from sklearn.preprocessing import StandardScaler # загрузка и обработка данных tutors_data = pd.read_csv('tutors.csv') tutors_data = tutors_data.dropna() status_coding = {'Student': 0, 'School teacher': 1, 'Postgraduate student': 2, 'Private tutor': 3, 'University professor': 4, 'Native speaker': 5} tutors_data['Status'] = tutors_data['Status'].replace(status_coding) photo_coding = {'No': 0, 'Yes': 1} tutors_data['Photo'] = tutors_data['Photo'].replace(photo_coding) tutors_data['Video_presentation'] = tutors_data['Video_presentation'].replace(photo_coding) # выбор признаков и целевой переменной X = tutors_data[['Score', 'Reviews_number', 'Experience', 'Status', 'Video_presentation', 'Photo']] y = tutors_data['Price'] # разделение данных на обучащий и тестовый наборы X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.05, random_state=42) # масштабирование данных scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # создание и обучение модели MLPRegressor model = MLPRegressor(hidden_layer_sizes=(100, 100), activation='relu', solver='adam', random_state=42) model.fit(X_train, y_train) # предсказание стоимости занятия predictions = model.predict(X_test) # оценка качества модели score = model.score(X_test, y_test) print(f"Качество модели = {score:.2f}") # вывод результатов в консоль test_data = y_test.values print("------------ СТОИМОСТИ ЗАНЯТИЙ ------------") for i in range(len(predictions)): print(f"Фактическая: {test_data[i]}\t\tПредсказанная: {int(predictions[i])}") # отображение результатов на графике plt.scatter(y_test, predictions, color='b') plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], color='r') plt.xlabel("Фактическая стоимость занятия") plt.ylabel("Предсказанная стоимость занятия") plt.title("MLPRegressor") plt.show()