scikit-learn线性模型之线性回归

scikit-learn线性模型之线性回归

  • 线性回归
  • 参考文献

线性回归

有监督学习中主要解决两个问题,一个是分类,另一个是回归。
在回归问题中,我们需要利用我们已知的特征 x 1 , x 2 , . . . , x p x_1,x_2,...,x_p x1,x2,...,xp 去预测我们的目标变量 y y y 。注意这里 y y y 是连续变量。一个简单的例子就是用一个人的身高去估计或者说预测体重。

线性回归的公式如下:
y ^ ( w , x ) = w 0 + w 1 x 1 + … + w p x p \hat{y}(w, x)=w_{0}+w_{1} x_{1}+\ldots+w_{p} x_{p} y^(w,x)=w0+w1x1++wpxp

其中 w 0 w_0 w0 是截距参数, w 1 , . . . , w p w_1,...,w_p w1,...,wp 是模型斜率参数。通过这样的线性组合我们就能给出一个预测 y ^ \hat{y} y^

下面我们来看具体的一个代码例子。

# 导入必要的 python 库
import matplotlib.pyplot as plt
import numpy as np
from sklearn import linear_model
from sklearn.metrics import mean_squared_error, r2_score

# 数据准备
# 身高 (cm)
X = np.array([150,155,160,175,180,185,190,195])
# 体重 (kg)
y = np.array([50,55,60,75,81,84,93,92])


# 将数据切分成训练集和测试集
X_train = X[:-4].reshape((-1,1))
X_test = X[-4:].reshape((-1,1))

y_train = y[:-4]
y_test = y[-4:]

# 创建线性回归对象
regr = linear_model.LinearRegression()

# 使用训练集训练模型
regr.fit(X_train, y_train)

# 使用测试集特征数据做预测
y_pred = regr.predict(X_test)

# 模型系数
print("Coefficients: \n", regr.coef_)
# 模型的均方误差
print("Mean squared error: %.2f" % mean_squared_error(y_test, y_pred))
# 模型的决定系数 R 方,越接近 1 模型解释力越强
print("Coefficient of determination: %.2f" % r2_score(y_test, y_pred))

# 绘制散点图
plt.scatter(X_test, y_test, color="black")
plt.plot(X_test, y_pred, color="blue", linewidth=3)

plt.xticks(())
plt.yticks(())

plt.show()

scikit-learn线性模型之线性回归_第1张图片

参考文献

[1] https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py

你可能感兴趣的:(sklearn,学习,scikit-learn,线性回归,python)