快速入门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,岭回归与套索回归基本一致。

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

目录
相关文章
|
5天前
|
机器学习/深度学习 数据采集 算法
Python机器学习:Scikit-learn库的高效使用技巧
【10月更文挑战第28天】Scikit-learn 是 Python 中最受欢迎的机器学习库之一,以其简洁的 API、丰富的算法和良好的文档支持而受到开发者喜爱。本文介绍了 Scikit-learn 的高效使用技巧,包括数据预处理(如使用 Pipeline 和 ColumnTransformer)、模型选择与评估(如交叉验证和 GridSearchCV)以及模型持久化(如使用 joblib)。通过这些技巧,你可以在机器学习项目中事半功倍。
16 3
|
10天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
机器学习基础:使用Python和Scikit-learn入门
20 1
|
16天前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
21天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第12天】本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型训练和评估等步骤,并提供了代码示例。通过本文,读者可以掌握机器学习的基本流程,并为深入学习打下坚实基础。
16 1
|
22天前
|
机器学习/深度学习 API 计算机视觉
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
18 2
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
【Python机器学习】文本特征提取及文本向量化讲解和实战(图文解释 附源码)
【Python机器学习】文本特征提取及文本向量化讲解和实战(图文解释 附源码)
388 0
|
6月前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习】K-Means对文本聚类和半环形数据聚类实战(附源码和数据集)
【Python机器学习】K-Means对文本聚类和半环形数据聚类实战(附源码和数据集)
176 0
|
1月前
|
机器学习/深度学习 算法 数据挖掘
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧1
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
49 5
|
1月前
|
机器学习/深度学习 数据采集 分布式计算
【Python篇】深入机器学习核心:XGBoost 从入门到实战
【Python篇】深入机器学习核心:XGBoost 从入门到实战
70 3
|
1月前
|
机器学习/深度学习 算法 数据可视化
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧2
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
35 1