АЛГОРИТМЫ МАШИННОГО ОБУЧЕНИЯ №1

1. ПРОСТАЯ ЛИНЕЙНАЯ РЕГРЕССИЯ

Что такое линейная регрессия?

Линейный регрессионный анализ используется для прогнозирования значения переменной на основе значения другой переменной. Переменная, которую вы хотите предсказать, называется зависимой переменной. Переменная, которую вы используете для предсказания значения другой переменной, называется независимой переменной.

Эта форма анализа оценивает коэффициенты линейного уравнения, включающие одну или несколько независимых переменных, которые лучше всего предсказывают значение зависимой переменной. Линейная регрессия соответствует прямой линии или поверхности, которая минимизирует расхождения между прогнозируемыми и фактическими выходными значениями. Существуют простые калькуляторы линейной регрессии, которые используют метод «наименьших квадратов» для обнаружения наиболее подходящей линии для набора парных данных. Затем вы оцениваете значение X (зависимая переменная) по Y (независимая переменная).

ТЕОРИЯ

  • Линейная регрессия предсказывает зависимую переменную на основе конкретной независимой переменной. Таким образом, существует линейная зависимость между двумя переменными.
  • Ошибка делается при попытке найти оценки коэффициентов, минимизирующие сумму квадратов.
  • Простая линейная регрессия обычно применяется к наборам данных с небольшим количеством наблюдений.
  • Количество зависимых и независимых переменных должно быть равно 1, и их следует выбирать из непрерывных переменных.

УПРАЖНЕНИЕ

  • Изучение и манипулирование набором данных;
# Required libraries
import pandas as pd
import numpy as np
import seaborn as sns
import statsmodels.api as sm
import matplotlib.pyplot as plt
import statsmodels.formula.api as smf
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.model_selection import train_test_split

import warnings
warnings.filterwarnings("ignore", category = UserWarning)

Нажмите здесь, чтобы загрузить набор данных.

path = '/kaggle/input/advertising-dataset/advertising.csv'
ad = pd.read_csv(path)
df = ad.copy()
df.head()

df.isnull().values.any() # Are there missing values in the dataset?
# output: False
df.info() # gives information about the dataset

# As you can see, all variables are continuous.
# There are 3 independent variables and 1 dependent variable.
df.describe().T # distribution of the data set

df.corr() # correlation cases between variables

# visualization of data to better observe the dataset
sns.pairplot(df, kind = 'reg', corner = True);

sns.jointplot(x = 'TV', y = 'Sales', data = df, kind = 'reg');

  • Моделирование с помощью Statsmodels
X = df[["TV"]] # independent variable
y = df["Sales"] # dependent variable
# creating and fitting the model object,
X = sm.add_constant(X) # adds a constant coefficient (necessary)
lm = sm.OLS(y, X) # creates an object model
model = lm.fit() # fits the created model
model.summary() # outputs information about the created model

  • Прогноз

Например, насколько увеличится оценочная стоимость продаж, если 180 единиц будут потрачены на телевизионные расходы?

model.predict([[1, 180]]) # constant value coefficient must be entered as 1
# output: array([16.95848017])
# error values of the model,
ypred = model.predict(X) # estimated y-values over real y-values
mse = mean_squared_error(y, ypred) # mean square error (MSE)
rmse = np.sqrt(mse) # test error value (RMSE)
r2 = r2_score(y, ypred) # success value of the model (r-squared)
# creation of the mathematical equation of the model,
equation = "Sales = " + str("%.5f" %model.params[0]) + " + TV * " + str("%.5f" %model.params[1])

print("Model Equation: ", equation)
print("Error Value of the Model (RMSE): ", rmse)
print("Success Percentage of the Created Model: ", r2 * 100)

  • Визуализация
plt.scatter(np.array(X["TV"]), y, color = 'orange');
plt.plot(np.array(X["TV"]), model.predict(), color = 'blue')
plt.title('Linear Regression Model')
plt.xlabel('TV spending')
plt.ylabel('Estimated Sales Values');

Чтобы узнать больше, нажмите здесь.