линейная регрессия :: Машинное обучение
Это метод прогнозирования непрерывнойзависимой переменной (Y) на основе значений независимых переменных (X). Его можно использовать для случаев, когда мы хотим предсказать некоторую непрерывную величину.
Y = B+mX
м = уклон
пакеты импорта: numpy, pandas,matplotlib.pyplot, seaborn.
%matplotlib inline import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression import seaborn as sns
Загрузите данные
df = pd.read_csv('lineardata.csv') print(df.shape) df.head(13)
Назначьте значения x по оси x и значения y по оси y.
X = df['x'].values Y = df['y'].values
Узнайте средние значения x и y
mean_x = np.mean(X) mean_y = np.mean(Y) print(mean_x , mean_y) 3.0 3.6
m = len(X) numer = 0 denom = 0 for i in range(m): numer += (X[i] - mean_x) * (Y[i] - mean_y) denom += (X[i] - mean_x) ** 2 b1 = numer / denom b0 = mean_y - (b1 * mean_x) print(b1, b0) 0.4 2.4
# Plotting Values and Regression Line max_x = np.max(X) + 4 min_x = np.min(X) - 2 print(max_x,min_x) 9 -1
# Вычисление значений строки x и y
х = np.linspace (мин_х, макс_х, 5)
у = b0 + b1 * х печать (х, у)
[-1. 1.5 4. 6.5 9. ] [2. 3. 4. 5. 6.]
# Ploting Line plt.plot(x, y, color='#58b970', label='Regression Line') # Ploting Scatter Points plt.scatter(X, Y, c='#ef5423', label='Scatter Plot') plt.xlabel('x') plt.ylabel('y') plt.legend() plt.show()
ss_t = 0 ss_r = 0 for i in range(m): y_pred = b0 + b1 * X[i] ss_t += (Y[i] - mean_y) ** 2 ss_r += (Y[i] - y_pred) ** 2 r2 = 1 - (ss_r/ss_t) print(r2) 0.3076923076923078