快速入门Python机器学习(七)(下)

简介: 快速入门Python机器学习(七)(下)

5.4.8套索回归分析波士顿房价数据


#对套索回归进行分析波士顿房价数据

def Lasso_for_for_boston():
       myutil = util()
       X,y = datasets.load_boston().data,datasets.load_boston().target
       X_train,X_test,y_train,y_test = train_test_split(X, y, random_state=8,test_size=0.3)
       lr = LinearRegression().fit(X_train,y_train)
       print('线性回归,波士顿房价数据训练集得分: {:.2%}'.format(lr.score(X_train,y_train)))
       print('线性回归,波士顿房价数据测试集得分: {:.2%}'.format(lr.score(X_test,y_test)))
       title = "线性回归 波士顿房价病数据"
       myutil.plot_learning_curve(LinearRegression(),X,y,title)
       myutil.show_pic(title)
       #######################################################################
       lasso = Lasso().fit(X_train,y_train)
       print('alpha=1,波士顿房价数据训练集得分: {:.2%}'.format(lasso.score(X_train,y_train)))
       print('alpha=1,波士顿房价数据测试集得分: {:.2%}'.format(lasso.score(X_test,y_test)))
                  print('alpha=1,波士顿房价数据回归特征数: {}'.format(np.sum(lasso01.coef_!=0)))
       title = "Lasso 波士顿房价数据 alpha=1"
       myutil.plot_learning_curve(Lasso(),X,y,title)
myutil.show_pic(title)
                 #####################################################################
       lasso10 = Lasso(alpha=10).fit(X_train,y_train)
       print('alpha=10,波士顿房价数据训练集得分: {:.2%}'.format(lasso10.score(X_train,y_train)))
       print('alpha=10,波士顿房价数据测试集得分: {:.2%}'.format(lasso10.score(X_test,y_test)))
                  print('alpha=10,波士顿房价数据回归特征数: {}'.format(np.sum(lasso10.coef_!=0)))
       title = "Lasso 波士顿房价数据 alpha=10"
       myutil.plot_learning_curve(Lasso(alpha=10),X,y,title)
       myutil.show_pic(title)
       #######################################################################
       lasso01 = Lasso(alpha=0.1).fit(X_train,y_train)
       print('alpha=0.1,波士顿房价数据训练集得分: {:.2%}'.format(lasso01.score(X_train,y_train)))
       print('alpha=0.1,波士顿房价数据测试集得分: {:.2%}'.format(lasso01.score(X_test,y_test)))
                  print('alpha=0.1,波士顿房价数据回归特征数: {}'.format(np.sum(lasso01.coef_!=0)))
       title = "Lasso波士顿房价数据 alpha= 0.1"
       myutil.plot_learning_curve(Lasso(alpha=0.1),X,y,title)
       myutil.show_pic(title)
       #######################################################################
title = "Lasso 波士顿房价数据 数据分布比较"
       plt.plot(lasso01.coef_,'s',label='套索回归 alpha=1')
       plt.plot(lasso0110.coef_,'^',label='套索回归 alpha=10’)
    plt.plot(lasso01.coef_,'v',label='套索回归 alpha=0.1')
       plt.plot(lr.coef_,'o',label='线性回归 Regression')
       plt.xlabel(u'系数指数')
       plt.ylabel(u'系数大小')
       plt.hlines(0,0,len(lr.coef_))
       myutil.show_pic(title)


输出

线性回归,波士顿房价数据训练集得分: 74.98%
线性回归,波士顿房价数据测试集得分: 70.81%
alpha=1,波士顿房价数据训练集得分: 69.75%
alpha=1,波士顿房价数据测试集得分: 62.49%
alpha=1,波士顿房价数据回归特征数: 10
alpha=10,波士顿房价数据训练集得分: 54.76%
alpha=10,波士顿房价数据测试集得分: 47.80%
alpha=10,波士顿房价数据回归特征数: 4
alpha=0.1,波士顿房价数据训练集得分: 74.25%
alpha=0.1,波士顿房价数据测试集得分: 67.98%
alpha=0.1,波士顿房价数据回归特征数: 12


加载并返回波士顿房价数据集(回归)的维度:13


alpha

波士顿训练集得分

波士顿测试集得分

特征数

线性

74.98%

70.81%


1

69.75%

62.49%

10

10

54.76%

68.49%

4

0.1

74.25%

67.98%

12


image.png

image.png

image.png

image.png


alpha =10 (^ 橘黄色上箭头)

    alpha =1 (s 蓝色方块)

    alpha = 0.1 (v 绿色下箭头)

线性:(o 红色圆点)

image.png


5.4.9比较岭回归与套索回归

#比较岭回归与套索回归
def Ridge_VS_Lasso():
       myutil = util()
       X,y = datasets.load_diabetes().data,datasets.load_diabetes().target
       X_train,X_test,y_train,y_test = train_test_split(X, y, random_state=8,test_size=0.3)
       lasso = Lasso(alpha=1,max_iter=100000).fit(X_train,y_train)
       plt.plot(lasso.coef_,'s',label='lasso alpha=1')
       lasso01 = Lasso(alpha=0.1,max_iter=100000).fit(X_train,y_train)
       plt.plot(lasso01.coef_,'^',label='lasso alpha=0.1')
       lasso0001 = Lasso(alpha=0.0001,max_iter=100000).fit(X_train,y_train)
       plt.plot(lasso0001.coef_,'v',label='lasso alpha=0.001')
       ridge01 = Ridge(alpha=0.1).fit(X_train,y_train)
       plt.plot(ridge01.coef_,'o',label='ridge01 alpha=0.1')
       plt.legend(ncol=2,loc=(0,1.05))
       plt.ylim(-1000,750)
       plt.legend(loc='lower right')
       title = "比较岭回归与套索回归"
       plt.xlabel(u"系数指数")
       plt.ylabel(u"系数大小")
       myutil.show_pic(title)

image.png


  • alpha=1,大部分系数都在0附近。
  • alpha=0.1,大部分系数都在0附近,但是比=1时少很多,有些不等于1。
  • alpha=0.001,整个模型被正则化,大部分不等于0。
  • alpha=0.1,岭回归与套索回归基本一致。

数据特征比较多,一小部分真正重要,用套索回归,否则用岭回归。

目录
相关文章
|
6天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
22 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
9天前
|
机器学习/深度学习 数据采集 人工智能
探索机器学习:从理论到Python代码实践
【10月更文挑战第36天】本文将深入浅出地介绍机器学习的基本概念、主要算法及其在Python中的实现。我们将通过实际案例,展示如何使用scikit-learn库进行数据预处理、模型选择和参数调优。无论你是初学者还是有一定基础的开发者,都能从中获得启发和实践指导。
20 2
|
11天前
|
机器学习/深度学习 数据采集 搜索推荐
利用Python和机器学习构建电影推荐系统
利用Python和机器学习构建电影推荐系统
26 1
|
11天前
|
机器学习/深度学习 算法 PyTorch
用Python实现简单机器学习模型:以鸢尾花数据集为例
用Python实现简单机器学习模型:以鸢尾花数据集为例
32 1
|
17天前
|
机器学习/深度学习 数据采集 算法
Python机器学习:Scikit-learn库的高效使用技巧
【10月更文挑战第28天】Scikit-learn 是 Python 中最受欢迎的机器学习库之一,以其简洁的 API、丰富的算法和良好的文档支持而受到开发者喜爱。本文介绍了 Scikit-learn 的高效使用技巧,包括数据预处理(如使用 Pipeline 和 ColumnTransformer)、模型选择与评估(如交叉验证和 GridSearchCV)以及模型持久化(如使用 joblib)。通过这些技巧,你可以在机器学习项目中事半功倍。
21 3
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
【Python机器学习】文本特征提取及文本向量化讲解和实战(图文解释 附源码)
【Python机器学习】文本特征提取及文本向量化讲解和实战(图文解释 附源码)
408 0
|
6月前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习】K-Means对文本聚类和半环形数据聚类实战(附源码和数据集)
【Python机器学习】K-Means对文本聚类和半环形数据聚类实战(附源码和数据集)
184 0
|
1月前
|
机器学习/深度学习 算法 数据挖掘
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧1
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
51 5
|
1月前
|
机器学习/深度学习 数据采集 分布式计算
【Python篇】深入机器学习核心:XGBoost 从入门到实战
【Python篇】深入机器学习核心:XGBoost 从入门到实战
95 3
|
1月前
|
机器学习/深度学习 算法 数据可视化
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧2
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
39 1

热门文章

最新文章