python_线性回归,最小二乘法

非 Y 不嫁゛ 提交于 2020-01-27 01:25:11

python_线性回归,最小二乘法

  1. 线性回归(又名普通最小二乘法)
    线性回归,或者普通最小二乘法(ordinary least squares,OLS),是回归问题最简单也最经
    典的线性方法。线性回归寻找参数 w 和 b,使得对训练集的预测值与真实的回归目标值 y
    之间的均方误差最小。均方误差(mean squared error)是预测值与真实值之差的平方和除
    以样本数。线性回归没有参数,这是一个优点,但也因此无法控制模型的复杂度。
Linear Regression aka Ordinary Least Squares
# 线性回归,最小二乘法
# 生成测试数据
from sklearn.linear_model import LinearRegression
X, y = mglearn.datasets.make_wave(n_samples=60)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
​
lr = LinearRegression().fit(X_train, y_train)
# 查看斜率  ,截距
print("lr.coef_: {}".format(lr.coef_))
print("lr.intercept_: {}".format(lr.intercept_))
lr.coef_: [0.394]
lr.intercept_: -0.031804343026759746
# 查看训练集和测试集的性能
print("Training set score: {:.2f}".format(lr.score(X_train, y_train)))
print("Test set score: {:.2f}".format(lr.score(X_test, y_test)))
# 查看R方
# R2 约为 0.66,这个结果不是很好,但我们可以看到,训练集和测试集上的分数非常接近。
# 这说明可能存在欠拟合,而不是过拟合。# 然而,对于更高维的数据集(即有大量特征的数据集),线
# 性模型将变得更加强大,过拟合的可能性也会变大
Training set score: 0.67
Test set score: 0.66# 我们来看一下 LinearRegression 在更
# 复杂的数据集上的表现,比如波士顿房价数据集。记住,这个数据集有 506 个样本和 105
# 个导出特征。首先,加载数据集并将其分为训练集和测试集。然后像前面一样构建线性回
# 归模型:
X, y = mglearn.datasets.load_extended_boston()
​
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
lr = LinearRegression().fit(X_train, y_train)
print("Training set score: {:.2f}".format(lr.score(X_train, y_train)))
print("Test set score: {:.2f}".format(lr.score(X_test, y_test)))
# 训练集和测试集之间的性能差异是过拟合的明显标志,
Training set score: 0.95
Test set score: 0.61``

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!