深度学习详解之初试机器学习


Posted in Python onApril 14, 2021

机器学习可应用在各个方面,本篇将在系统性进入机器学习方向前,初步认识机器学习,利用线性回归预测波士顿房价;

原理简介

利用线性回归最简单的形式预测房价,只需要把它当做是一次线性函数y=kx+b即可。我要做的就是利用已有数据,去学习得到这条直线,有了这条直线,则对于某个特征x(比如住宅平均房间数)的任意取值,都可以找到直线上对应的房价y,也就是模型的预测值。
从上面的问题看出,这应该是一个有监督学习中的回归问题,待学习的参数为实数k和实数b(因为就只有一个特征x),从样本集合sample中取出一对数据(xi,yi),xi​代入kx+b得到输出y^i,MSE可以衡量预测输出与样本标注的接近程度,所以把MSE作为这个问题的损失函数,对于共m mm个样本的集合,损失函数计算为:J(k,b)=1i=1∑m(yi−yi)2

一般需要遍历数据集迭代多次,才能得到一个较好的结果

波士顿房价数据集

房价预测的实现将基于sklearn(scikit-learn),sklearn中有多种数据集:

  • 自带的小数据集(packaged dataset):sklearn.datasets.load_<name>
  • 可在线下载的数据集(Downloaded Dataset):sklearn.datasets.fetch_<name>
  • 自定义生成的数据集(Generated Dataset):sklearn.datasets.make_<name>

首先从sklearn的数据集获取内置数据集中的即波士顿房价数据:

from sklearn.datasets import load_boston

导入其他功能包和模块,导入线性回归模型:

# 使用sklearn 中的 train_test_split 划分数据集
from sklearn.model_selection import train_test_split
# 使用 sklearn 中的线性回归模型进行预测
from sklearn.linear_model import LinearRegression
# 使用 matplotlib 中的 pyplot 进行可视化
import matplotlib.pyplot as plt

加载数据集:

# 加载波士顿房价数据集,返回特征X和标签y
X, y = load_boston(return_X_y=True)
X.shape # (506, 13)
y.shape # (506,)

取出一个特征作为x:

# 只取第6列特征(方便可视化):住宅平均房间数
# 注意切片区间左闭右开
X = X[:,5:6]

划分为训练集和测试集,测试集取20%:

X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2, random_state=2020)

使用到sklearn.model_selection.train_test_split,函数形式为:

train_test_split(train_data, train_target, test_size, random_state,shuffle)
  • test_size:浮点数,在0 ~ 1之间,表示测试样本占比
  • random_state:随机种子,种子不同,每次调用时采样的样本不同;种子相同,每次调用时采样一致
  • shuffle = True,打乱样本数据的顺序

严格来说,对于有监督学习的数据集应分为训练集,验证集,测试集;训练集和验证集有标注,测试集没有标注,泛化能力在验证集上进行检验

划分后的训练数据:

X_train.shape # (404, 1)
y_train.shape # (404,)

建立线性回归模型

在sklearn下,机器学习建模非常方便:

  1. 实例化模型,输入合适的超参数会使模型性能提升
  2. 输入数据训练
  3. 验证模型

建立线性回归模型如下:

# 创建线性回归对象
regr = LinearRegression()
# 使用训练集训练模型
regr.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = regr.predict(X_test)

注意到模型直到接收到训练数据,才最终确定具体形式,比如发现输入数据是(404,1),才确定线性回归形式为kx+b,而不是kx+cx+b

# 画测试数据散点图
plt.scatter(X_test, y_test,  color='blue')
# 画线性回归模型对测试数据的拟合曲线
plt.plot(X_test, y_pred, color='red')
# 显示绘图结果
plt.show()

深度学习详解之初试机器学习

打印模型参数有(注意区分参数和超参数):

# 打印斜率和截距
print('斜率:{}, 截距:{}'.format(regr.coef_,regr.intercept_))

结果为:

斜率:[9.11163398], 截距:-34.47557789280662

到此这篇关于初试机器学习的文章就介绍到这了,更多相关初识机器学习内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Linux中安装Python的交互式解释器IPython的教程
Jun 13 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
Apr 23 Python
Windows上使用Python增加或删除权限的方法
Apr 24 Python
利用python如何处理nc数据详解
May 23 Python
python redis 删除key脚本的实例
Feb 19 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
Jun 13 Python
python 变量初始化空列表的例子
Nov 28 Python
基于梯度爆炸的解决方法:clip gradient
Feb 04 Python
Python3爬虫里关于代理的设置总结
Jul 30 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
Feb 25 Python
pytorch DataLoader的num_workers参数与设置大小详解
May 28 Python
浅谈python中的多态
Jun 15 Python
正确的理解和使用Django信号(Signals)
Apr 14 #Python
编写python程序的90条建议
Apr 14 #Python
Python基础知识之变量的详解
理解深度学习之深度学习简介
Apr 14 #Python
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
深度学习小工程练习之垃圾分类详解
python3美化表格数据输出结果的实现代码
Apr 14 #Python
You might like
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
PHP 页面编码声明方法详解(header或meta)
2010/03/12 PHP
PHP排序算法的复习和总结
2012/02/15 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
php制作基于xml的RSS订阅源功能示例
2017/02/08 PHP
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
2014/03/17 Javascript
node.js中的querystring.parse方法使用说明
2014/12/10 Javascript
jQuery中fadeOut()方法用法实例
2014/12/24 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
javascript弹出带文字信息的提示框效果
2016/07/19 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
利用Javascript实现BMI计算器
2016/08/16 Javascript
JavaScript for循环 if判断语句(学习笔记)
2017/10/11 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
2018/09/27 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
layer关闭弹出窗口触发表单提交问题的处理方法
2019/09/25 Javascript
JS运算符简单用法示例
2020/01/19 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
Vue如何实现验证码输入交互
2020/12/07 Vue.js
[48:05]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VGJ.T vs VP
2018/03/31 DOTA
Python图像处理之识别图像中的文字(实例讲解)
2018/05/10 Python
python3使用smtplib实现发送邮件功能
2018/05/22 Python
Django中数据库的数据关系:一对一,一对多,多对多
2018/10/21 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
python利用 keyboard 库记录键盘事件
2020/10/16 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
日本钓鱼渔具和户外用品网上商店:naturum
2016/08/07 全球购物
荷兰最大的儿童服装店:The Kids Republic
2019/04/13 全球购物
Osklen官方在线商店:巴西服装品牌
2019/04/25 全球购物
2015年大学生村官工作总结
2015/04/21 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
大学生社会实践感想
2015/08/11 职场文书
Java获取字符串编码格式实现思路
2022/09/23 Java/Android