АЛГОРИТМЫ МАШИННОГО ОБУЧЕНИЯ №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');
Чтобы узнать больше, нажмите здесь.