线性回归

线性回归是机器学习中最简单的算法,这篇文章我们将探索这一算法,并用pyton来实现它。

  分类:简单线性回归&多元线性回归

简单线性回归

模型表示:

  • one input variable - X(自变量) and one output variable - Y(因变量)
  • 我们希望在这些变量之间建立一个线性关系。我们定义的线性关系如下: Y=β0+β1*X
    该β 1被称为比例系数,β0被称为偏差(权重)系数。偏差系数为这个模型提供了额外的自由度。
  • 我们的目的是确定这些系数的值并通过python提供的matplot库显示出拟合图像。

模型的代码实现:

import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = (20.0,10.0)

data = pd.read_csv('headbrain.csv')
#print(data.shape)
#print(data.head())

#Collecting X and Y
X = data['Head Size(cm^3)'].values
Y = data['Brain Weight(grams)'].values

#Mean X and Y
mean_x = np.mean(X)
mean_y = np.mean(Y)

m = len(X)

number = 0
denom = 0
for i in range(m):
    number += (X[i]-mean_x)*(Y[i]-mean_y)
    denom += (X[i]-mean_x)**2
b1 = number / denom
b0 = mean_y - (b1*mean_x)
print(b1,b0)

max_x = np.max(X) + 100
min_x = np.min(X) - 100

x = np.linspace(min_x,max_x,1000)
y = b0 + b1*x

plt.plot(x,y,color='#58b907',label='Regression line')
plt.scatter(X,Y,c='#ef5432', label='Scatter Plot')

plt.xlabel('Head Size in cm3')
plt.ylabel('Brain Weight in gram')
plt.legend()
plt.show()

代码经过测试可运行

对模型评估

方法有:均方根误差,测定系数法

均方根误差:
线性回归_第1张图片
RMSE

其中^Yi表示预测的输出值。

  • 代码实现:
# RMSE to evaluate models:
rmse = 0
for i in range(m):
    y_pred = b0 + b1 * X[i]
    rmse += (Y[i] - y_pred) ** 2
rmse = np.sqrt(rmse/m)
print(rmse)
系数测定(R^2 Score):
线性回归_第2张图片
R^2 Score
#Coefficient of Determination(R^2 Score):
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)

你可能感兴趣的:(线性回归)