12311k

Untitled

Feb 28th, 2020
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.75 KB | None | 0 0
  1. import pandas as pd
  2. import seaborn as sns
  3. from sklearn.preprocessing import StandardScaler
  4. from sklearn.model_selection import train_test_split
  5. from sklearn.linear_model import Lasso, Ridge
  6. from sklearn.tree import DecisionTreeRegressor
  7. from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor
  8. import matplotlib.pyplot as plt
  9. from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
  10.  
  11.  
  12. #прочитаем из csv-файла данные с описанием автомобилей и их потреблением, распечатаем его размер и первые 5 строк
  13. cars = pd.read_csv('/datasets/auto_cons.csv')
  14.  
  15. #уберём строки с пустыми значениями из набора данных
  16. cars.dropna(inplace = True)
  17.  
  18. #сохраним датафрейм с учётом преобразования признаков
  19. cars = pd.get_dummies(cars)
  20.  
  21. #разделим наши данные на признаки (матрица X) и целевую переменную (y)
  22. X = cars.drop(columns = ['Расход топлива'])
  23. y = cars['Расход топлива']
  24.  
  25. #разделяем модель на обучающую и валидационную выборку
  26. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
  27.  
  28. #создадим объект класса StandardScaler и применим его к обучающей выборке
  29. scaler = StandardScaler()
  30. X_train_st = scaler.fit_transform(X_train) #обучаем scaler и одновременно трансформируем матрицу для обучающей выборки
  31.  
  32. #применяем стандартизацию к матрице признаков для тестовой выборки
  33. X_test_st = scaler.transform(X_test)
  34.  
  35. #задайте список моделей
  36. models = [Lasso(), Ridge(), DecisionTreeRegressor(), RandomForestRegressor(), GradientBoostingRegressor()]
  37.  
  38. #функция, которая вычисляет MAPE
  39. def mape(y_true, y_pred):
  40. y_error = y_true - y_pred
  41. y_error_abs = [abs(i) for i in y_error]
  42. perc_error_abs = y_error_abs / y_true
  43. mape = (perc_error_abs.sum() / len(y_true))
  44. return mape
  45.  
  46. #функция, которая принимает на вход модель и данные и выводит метрики
  47. def make_prediction(m, X_train, y_train, X_test, y_test):
  48. model = m
  49. model.fit(X_train, y_train)
  50. y_pred = model.predict(X_test)
  51. print('MAE:{:.2f} MSE:{:.2f} MAPE:{:.2f} R2:{:.2f} '.format(mean_absolute_error(y_test, y_pred),
  52. mean_squared_error(y_test, y_pred),
  53. mape(y_test, y_pred),
  54. r2_score(y_test, y_pred)))
Advertisement
Add Comment
Please, Sign In to add comment