关于线性回归模型的知识总结,请参见这里。此处主要介绍线性模型的相关算法在sklearn中的实现:
一、线性回归(最小二乘法)
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_))#输出截距(偏移量)
#准确率(模型效果)
print("Training set score: {:.2f}".format(lr.score(X_train, y_train)))
print("Test set score: {:.2f}".format(lr.score(X_test, y_test)))
#用训练好的模型求新数据的值
lr.predict(X_test)
二、岭回归
岭回归也是一种用于回归的线性模型,它要求系数w的所有元素都接近0(直观来看,既要求每个特征对输入的影响尽可能小,还要给出很好的预测结果)。这种约束就是所谓正则化的一个例子,正则化是指对模型做显式约束,以避免过拟合。岭回归用L2正则化。
from sklearn.linear_model import Ridge
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)
ridge = Ridge().fit(X_train, y_train)
print("Training set score: {:.2f}".format(ridge.score(X_train, y_train)))
print("Test set score: {:.2f}".format(ridge.score(X_test, y_test)))
Ridge模型在模型的简单性(系数都接近于0)与训练集性能之间做出权衡。简单性和训练集性能二者对于模型的重要程度可以由用户通过设置alpha参数来指定。alpha默认值为1,其最佳设定取决于具体的数据集。增大alpha会使得系数更趋于0