深入浅出Python机器学习
上QQ阅读APP看书,第一时间看更新

4.2.1 线性回归的基本原理

线性回归的原理是,找到当训练数据集中y的预测值和其真实值的平方差最小的时候,所对应的w值和b值。线性回归没有可供用户调节的参数,这是它的优势,但也代表我们无法控制模型的复杂性。接下来我们继续使用make_regression函数,生成一个样本数量为100,特征数量为2的数据集,并且用train_test_split函数将数据集分割成训练数据集和测试数据集,再用线性回归模型计算出w值和b值。现在我们在jupyter notebook中输入代码如下:

#导入数据集拆分工具
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
X, y = make_regression(n_samples=100,n_features=2,n_informative=2,random_
state=38)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8)
lr = LinearRegression().fit(X_train, y_train)

在4.1节我们已经学过,方程的斜率w,也被称为权重或者系数,被存储在coef_属性中,而截距b被存储在intercept_属性中,我们可以通过“print”函数将它们打印出来看一下:

print('\n\n\n代码运行结果:')
print('==========\n')
print("lr.coef_: {}".format(lr.coef_[:]))
print("lr.intercept_: {}".format(lr.intercept_))
print('\n==========')
print('\n\n\n')

按下shift+回车键后,可以看到结果如图4-8所示。

图4-8 模型的系数和截距

【结果分析】intercept_属性一直是一个浮点数,而coef_属性则是一个NumPy数组,其中每个特征对应数据中的一个数值,由于我们这次使用make_regression生成的数据集中数据点有2个特征,所以lr.coef_是一个二维数组。也就是说,在本例中线性回归模型的方程可以表示为

y = 70.385 9×X1 + 7.4321×X2 -1.42e-14