Существует два типа моделей линейной регрессии — простые и множественные. Начнем с основ, простой регрессионной модели (y=thetha0+thetha1x, y=mx+c), где количество атрибутов = 1. Я выделю основные шаги, которым нужно следовать, а также добавлю новое тестирование набора данных — эксцесс. и асимметрия. Мы создаем модель, которая будет прогнозировать акции Exxon по мере роста цен на нефть.
Шаг 1. Импортируйте библиотеки и загрузите набор данных
#importing the libraries import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error,r2_score,mean_absolute_error %matplotlib inline #loading the dataset price_df = pd.read_excel('C:\\..\..\\Downloads\\oil_exxon.xlsx') #making date column to be the index price_df.index= pd.to_datetime(price_df['date']) #dropping the old date column price_df = price_df.drop(['date'],axis=1) price_df.head()
Шаг 2. Очистка данных (удаление нулевых значений)
Этот шаг является важным, поскольку набор данных может содержать тысячи записей, и некоторые из них могут иметь значения NaN. Иногда набор данных требует от нас заполнить эти значения NaN, а иногда мы можем просто их отбросить. Мы также исключаем любые несоответствия в наборе данных, такие как проверка dtypes и переименование/замена значений по мере необходимости.
price_df.info() => finding the datatypes of the dataset display(price_df.isna().any()) price_df=price_df.dropna() display(price_df.isna().any()) exxon_price False oil_price False dtype: bool exxon_price False oil_price False dtype: bool
Шаг 3. Исследовательский анализ данных
Мы делаем диаграмму рассеяния и пытаемся визуализировать набор данных, связаны ли значения друг с другом. Мы также делаем тепловую карту, чтобы увидеть корреляцию между oil_prices и exxon_prices.
Шаг 4. Проверка на выбросы и асимметрию
Асимметрия — это симметрия распределения, тогда как эксцесс — это точечность распределения. Нам не нужны выбросы, и мы хотим убедиться, что наши данные не имеют перекоса, потому что это может повлиять на результаты в определенных моделях. Сначала мы строим гистограмму как для цены на нефть, так и для цены Exxon, а затем делаем некоторые расчеты, чтобы проверить, верны ли визуализации.
Exxon kurtosis : 0.08839 Oil kurtosis : 0.5321 Exxon skewness : 0.66 Oil skeweness : 1.0
После расчета мы замечаем, что цена на нефть сильно искажена, но, поскольку эти данные включают только один атрибут, мы можем с этим работать.
Шаг 5. Создайте модель
Теперь самое интересное, мы собираем нашу собственную модель! Сначала нам нужно разделить набор данных на цель и переменную (переменные). Затем с помощью функции train_test_split мы создадим экземпляры для обучения и тестирования. После этого мы построим модель линейной регрессии и поместим в нее обучающие экземпляры.
Теперь мы узнаем коэффициент и перехват набора данных, а также найдем прогнозируемые значения, чтобы мы могли оценить нашу модель на следующем шаге.
The coefficient of our model is 0.23 The intercept of our model is 70.55 This means that a single unit increase in oil is associated with a 0.23 increase in the Exxon stock price. The predicted value is 88.09(for 76.43)
Шаг 6. Оценка модели
Мы оцениваем модель на основе фактических значений y (целевых) и значений y, предсказанных нашей моделью. sklearn.metrics предоставил массу методов оценки -
Средняя абсолютная ошибка (MAE). Среднее значение абсолютного значения ошибок. Среднеквадратическая ошибка (MSE): среднее значение квадратов ошибок. MSE более популярен, чем MAE, потому что MSE «наказывает» за более серьезные ошибки. КореньСреднеквадратическая ошибка (RMSE): квадратный корень из среднего квадрата ошибок. RMSE даже более предпочтителен, потому что он позволяет нам интерпретировать вывод в y-единицах. Метрика R в квадрате помогает измерить качество соответствия или то, насколько хорошо наши данные соответствуют модели. Чем выше значение R-квадрата, тем лучше данные соответствуют модели.
MSE = 38.75 MAE = 5.05 RMSE = 6.225 R2: 0.36 -> R2 depends on the domain of the dataset and we can say that for ours, it is a good value.
Шаг 7. Построение линии регрессии
Это последний шаг, и к настоящему времени мы создали нашу модель и оценили ее на основе прогнозируемых значений, теперь нам нужно построить линию регрессии. Для этого сначала нам нужно построить диаграмму рассеяния на основе наших данных тестирования, а затем построить линию на основе предсказанного значения y. Эта линия является наилучшей линией для данного набора данных.
Путь к обучению машинному обучению под руководством: @sigma coding(YT)