Python scikit-learn 做线性回归
时间:2022-04-29
本文章向大家介绍Python scikit-learn 做线性回归,主要内容包括第一步:Python库导入、第二步:数据获取和理解、第三步:数据模型构建——线性回归、第四步:数据模型应用——预测房价、总结、思考环节、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
线性回归是简单易用的机器学习算法,scikit-learn是python强大的机器学习库。
本篇文章利用线性回归算法预测波士顿的房价。波士顿房价数据集包含波士顿郊区住房价值的信息。
第一步:Python库导入
%matplotlib inlineimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport sklearn
第二步:数据获取和理解
波士顿数据集是scikit-learn的内置数据集,可以直接拿来使用。
from sklearn.datasets import load_bostonboston = load_boston()
print(boston.keys())
dict_keys([‘data’, ‘target’, ‘feature_names’, ‘DESCR’])
print(boston.data.shape)
(506, 13)
print(boston.feature_names)
[‘CRIM’ ‘ZN’ ‘INDUS’ ‘CHAS’ ‘NOX’ ‘RM’ ‘AGE’ ‘DIS’ ‘RAD’ ‘TAX’ ‘PTRATIO’’B’ ‘LSTAT’]
结论:波士顿数据集506个样本,14个特征。
print(boston.DESCR)
bos = pd.DataFrame(boston.data)print(bos.head())
0 1 2 3 4 5 6 7 8 9 10 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 15.3 1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 17.8 2 0.02729 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 17.8 3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 18.7 4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 18.7 11 12 0 396.90 4.98 1 396.90 9.14 2 392.83 4.03 3 394.63 2.94 4 396.90 5.33
bos.columns = boston.feature_namesprint(bos.head())
print(boston.target[:5])
bos['PRICE'] = boston.target
bos.head()
第三步:数据模型构建——线性回归
from sklearn.linear_model import LinearRegressionX = bos.drop('PRICE', axis=1)lm = LinearRegression()lm
lm.fit(X, bos.PRICE)
print('线性回归算法w值:', lm.coef_)print('线性回归算法b值: ', lm.intercept_)
import matplotlib.font_manager as fmmyfont = fm.FontProperties(fname='C:/Windows/Fonts/msyh.ttc')plt.scatter(bos.RM, bos.PRICE)plt.xlabel(u'住宅平均房间数', fontproperties=myfont)plt.ylabel(u'房屋价格', fontproperties=myfont)plt.title(u'RM与PRICE的关系', fontproperties=myfont)plt.show()
第四步:数据模型应用——预测房价
lm.predict(X)[0:5]
array([ 30.00821269, 25.0298606 , 30.5702317 , 28.60814055, 27.94288232])
mse = np.mean((bos.PRICE - lm.predict(X)) ** 2)print(mse)
21.897779217687486
总结
1 使用.DESCR探索波士顿数据集,业务目标是预测波士顿郊区住房的房价;
2 使用scikit-learn针对整个数据集拟合线性回归模型,并计算均方误差。
思考环节
1 对数据集分割成训练数据集和测试数据集
2 训练数据集训练线性回归模型,利用线性回归模型对测试数据集进行预测
3 计算训练模型的MSE和测试数据集预测结果的MSE
4 绘制测试数据集的残差图
- 2017 Multi-University Training Contest - Team 1 1011&&HDU 6043 KazaQ's Socks【规律题,数学,水】
- 2017 Multi-University Training Contest - Team 1 1001&&HDU 6033 Add More Zero【签到题,数学,水】
- 51 Nod 1005 大数加法【Java大数乱搞,python大数乱搞】
- 51 Nod 1029 大数除法【Java大数乱搞】
- 51 Nod 1027 大数乘法【Java大数乱搞】
- SQL常用的基础语法
- 51 Nod 1028 大数乘法 V2【Java大数乱搞】
- Gym 100952J&&2015 HIAST Collegiate Programming Contest J. Polygons Intersection【计算几何求解两个凸多边形的相交面积板子题
- Windows下Cygwin可以使用哪些Linux命令
- Codeforces Round #426 (Div. 2)【A.枚举,B.思维,C,二分+数学】
- Cygwin,打造你的Windows下Linux环境
- “玲珑杯”ACM比赛 Round #19题解&源码【A,规律,B,二分,C,牛顿迭代法,D,平衡树,E,概率dp】
- 2017 Multi-University Training Contest - Team 1 1003&&HDU 6035 Colorful Tree【树形dp】
- BZOJ 1041: [HAOI2008]圆上的整点【数论,解方程】
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Spring boot 的彩色日志
- 一位Android程序员入坑Flutter后整理出一份超详细的学习笔记
- Python批量获取并保存手机号归属地和运营商的示例
- Qt音视频开发31-Onvif抓拍图片
- 突击并发编程JUC系列-ReentrantLock
- 【腾讯云】记一次搭建云服务器
- 前端:如何让background背景图片进行CSS自适应
- 为什么Rust的println!不会发生所有权转移?
- 【译文】Rust futures: async fn中的thread::sleep和阻塞调用
- Smart Pointer Programming Techniques
- 一文搞懂AQS及其组件的核心原理
- 比较JavaScript中的数据结构(数组与对象)
- 9 个JavaScript 技巧
- [已解决]报错:XGBoostError: XGBoost Library (libxgboost.dylib) could not be loaded.
- 2.3 spring5源码---spring ioc 加载配置类的源码