Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pandas as pd
- import seaborn as sns
- from sklearn.preprocessing import StandardScaler
- from sklearn.model_selection import train_test_split
- from sklearn.linear_model import Lasso, Ridge
- from sklearn.tree import DecisionTreeRegressor
- from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor
- import matplotlib.pyplot as plt
- from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
- # прочитаем из csv-файла данные с описанием автомобилей и их потреблением, распечатаем его размер и первые 5 строк
- cars = pd.read_csv('/datasets/auto_cons.csv')
- # уберём строки с пуcтыми значениями из набора данных
- cars.dropna(inplace = True)
- # сохраним датафрейм с учётом преобразования признаков
- cars = pd.get_dummies(cars)
- # разделим наши данные на признаки (матрица X) и целевую переменную (y)
- X = cars.drop(columns = ['Расход топлива'])
- y = cars['Расход топлива']
- # разделяем модель на обучающую и валидационную выборки
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
- # создадим объект класса StandardScaler и применим его к обучающей выборке
- scaler = StandardScaler()
- X_train_st = scaler.fit_transform(X_train) #обучаем scaler и одновременно трансформируем матрицу для обучающей выборки
- # применяем стандартизацию к матрице признаков для тестовой выборки
- X_test_st = scaler.transform(X_test)
- # задайте список моделей
- models = [Lasso(), Ridge(), DecisionTreeRegressor(), RandomForestRegressor(), GradientBoostingRegressor()]
- # функция, которая вычисляет MAPE
- def mape(y_true, y_pred):
- y_error = y_true - y_pred #рассчитайте вектор ошибок
- y_error_abs = [abs(i) for i in y_error] #рассчитайте вектор модуля ошибок
- perc_error_abs = y_error_abs / y_true #рассчитайте вектор относительных ошибок
- mape = (perc_error_abs.sum() /len(y_true)) #рассчитайте MAPE
- return mape
- # функция, которая принимает на вход модель и данные и выводит метрики
- def make_prediction(m, X_train, y_train, X_test, y_test):
- model = m
- model.fit(X_train, y_train)
- y_pred = model.predict(X_test)# ваш код здесь
- print('MAE:{:.2f} MSE:{:.2f} MAPE:{:.2f} R2:{:.2f} '.format(mean_absolute_error(y_test, y_pred), mean_squared_error(y_test, y_pred), mape(y_test, y_pred), r2_score(y_test, y_pred)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement