算法笔记(6)-线性模型及Python代码实现

线性模型不是特指某一个模型,而是一类模型,常用的线性模型包括线性回归、岭回归、套索回归、逻辑回归和线性SVC等。
线性回归和岭回归对比图如下:

套索回归和岭回归对比图如下:

 

最小二乘法

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差(真实目标对象与拟合目标对象的差)的平方和寻找数据的最佳函数匹配。

最基本的模型—-线性回归

线性回归也称为普通最小二乘法(OLS),线性回归的原理是找到训练数据集中y的预测值和其真实值的平方差最小的时候,所对应的w值和b值。线性回归没有可供用户调节的参数。
python代码实现

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)
print("lr.coef_: {}".format(lr.coef_[:]))
print("lr.intercept_: {}".format(lr.intercept_))

输出结果:
lr.coef_: [70.38592453 7.43213621]
lr.intercept_: -1.4210854715202004e-14
线性回归模型方程可以表示为:y=70.38592453X1+ 7.43213621X2-1.4210854715202004e-14

使用L2正则化的线性模型-岭回归

是一种改良的最小二乘法,模型会保留所有的特征变量,但是会减少特征变量的系数值,让特征变量对预测结果的影响变小。如果我们更在意模型在泛化方面的表现,那么我们就应该选择岭回归模型,而不是线性回归模型。
python代码实现

#%%

from sklearn.datasets import load_diabetes
#X, y = make_regression(n_samples=500,n_features=50,n_informative=25,noise=500,
                      #random_state=8)
X, y = load_diabetes().data, load_diabetes().target
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 8)
ridge01 = Ridge(alpha=0.1).fit(X_train, y_train)
print("训练数据得分:{:.2f}".format(ridge01.score(X_train, y_train)))
print("测试数据的分:{:.2f}".format(ridge01.score(X_test, y_test)))

#%%

输出结果:
训练数据得分:0.52
测试数据得分:0.47

使用L1正则化的线性模型-套索回归

套索回归有一部分特征的系数会正好等于0
python代码实现

#%%
lasso00001 = Lasso(alpha=0.0001, max_iter=100000).fit(X_train, y_train)
print("alpha=0.0001时套索回归在训练数据集的得分:{:.2f}".format(lasso00001.score(X_train, y_train)))
print("alpha=0.0001时套索回归在测试数据集的得分:{:.2f}".format(lasso00001.score(X_test, y_test)))
print("alpha=0.0001时套索回归使用的特征数:{}".format(np.sum(lasso00001.coef_ != 0)))
#%%

输出结果:
alpha=0.0001时套索回归在训练数据集的得分:0.53
alpha=0.0001时套索回归在测试数据集的得分:0.46
alpha=0.0001时套索回归使用的特征数:10

由于不让放链接,想要完整代码的朋友,请关注私信我回复“算法笔记6”免费获取

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2022年5月16日
下一篇 2022年5月16日

相关推荐