公司在百度做网站,宝安网站设计制作,福建省建设局网站,企业官方网站建设教程线性模型 一、模型介绍二、用于回归的线性模型2.1 线性回归#xff08;普通最小二乘法#xff09; 一、模型介绍
线性模型是在实践中广泛使用的一类模型#xff0c;该模型利用输入特征的线性函数进行预测。
二、用于回归的线性模型
以下代码可以在一维wave数据集上学习参… 线性模型 一、模型介绍二、用于回归的线性模型2.1 线性回归普通最小二乘法 一、模型介绍
线性模型是在实践中广泛使用的一类模型该模型利用输入特征的线性函数进行预测。
二、用于回归的线性模型
以下代码可以在一维wave数据集上学习参数w和bw是斜率b是截距。
import mglearn
mglearn.plots.plot_linear_regression_wave()我们在图中添加了坐标网格便于理解直线的含义。w的值是0.39b的值是-0.03。 用于回归的线性模型可以表示为这样的回归模型对单一特征的预测结果是一条直线两个特征时是一个平面或者在更高维度即更多特征时是一个超平面。 对于有多个特征的数据集而言线性模型可以非常强大。特别地如果特征数量大于训练数据点的数量任何目标y都可以在训练集上用线性函数完美拟合。 有许多不同的线性回归模型。这些模型之间的区别在于如何从训练数据中学习参数w和b以及如何控制模型复杂度。下面介绍最常见的线性回归模型。
2.1 线性回归普通最小二乘法
线性回归或者普通最小二乘法ordinary least squares, OLS是回归问题最简单也最经典的线性方法。线性回归寻找参数w和b使得对训练集的预测值与真实的回归目标值y之间的均方误差最小。均方误差是预测值与真实值之差的平方和除以样本数。线性回归没有参数这是一个优点但也因此无法控制模型的复杂度。 以下代码可以生成一个简单的线性回归模型
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
X, y mglearn.datasets.make_wave(n_samples60)
X_train, X_test, y_train, y_test train_test_split(X, y, random_state42)model LinearRegression()
model.fit(X_train, y_train)“斜率”参数w也叫做权重或系数被保存在coef_属性中英文单词coef就是属性的意思而截距b或偏移被保存在intercept_属性中英文单词intercept的意思是拦截、阻截的意思。 intercept_属性是一个浮点数而coef_属性是一个NumPy数组每个元素对应一个输入特征。由于wave数据集中只有一个输入特征所以model.coef_中只有一个元素。 再来看一下训练集和测试集的性能 R²约为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_state42)
model LinearRegression().fit(X_train, y_train)线性回归模型在训练集上的预测非常准确但测试集上的R²明显低一些。训练集和测试集之间的性能差异是过拟合的明显标志因此我们应该试图找到一个可以控制复杂度的模型。标准线性回归最常用的替代方法之一就是岭回归下篇博客中将详细介绍岭回归。