没有合适的资源?快使用搜索试试~ 我知道了~
首页深度学习入门:Scikit-Learn与TensorFlow实战解析
深度学习入门:Scikit-Learn与TensorFlow实战解析
需积分: 10 3 下载量 93 浏览量
更新于2024-07-18
收藏 44.12MB PDF 举报
"《TensorFlow与Scikit-Learn机器学习实用指南》是一本深度讲解机器学习基础的权威著作,由法国作者Aurélien Géron撰写,他具有丰富的背景,包括在Google Youtube视频分类项目中的工作经历以及创办公司和教学经历。该书自2017年发布以来,在亚马逊上取得了显著的成功,深受读者喜爱,特别是在计算机科学领域。 本书的核心内容围绕机器学习的基本概念展开,首先澄清了什么是机器学习以及为何选择它。作者强调,尽管人们常常将机器学习与科幻电影中的机器人联系起来,但实际上,它已经在我们的日常生活中扮演着重要角色,如垃圾邮件过滤器等。书中区分了监督学习、非监督学习、在线学习和批量学习,以及基于实例和基于模型的学习方法,帮助读者理解不同类型的算法和应用场景。 在深入学习前,作者提供了一个机器学习项目的通用工作流程,包括数据预处理、模型设计、训练、评估和调整等步骤,同时探讨了在这个过程中可能遇到的挑战。对于初学者来说,这是理解实际操作和解决问题的关键路径。 此外,第一章还概述了数据科学家必备的基础知识和术语,确保读者对机器学习领域的基本概念有深刻理解。如果你对深度学习感兴趣,或者想进入机器学习领域,这本书无疑是一个优秀的起点,不仅能帮助你构建理论基础,还能提供实战指导。 如果你想进一步提升自己的技能,可以参考本书提供的下载链接获取中文精要和配套代码,通过实践加深对TensorFlow和Scikit-Learn的理解。这本书不仅是理论的宝库,也是实践经验的积累,无论你是新手还是进阶者,都将从中受益匪浅。"
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/10821160/bg10.jpg)
图-18 几个可能的线性模型
在使用模型之前,你需要确定θ
0
和θ
1
。如何能知道哪个值可以使模型的性能最佳呢?要回答这个问题,你需要
指定性能的量度。你可以定义一个实用函数(或拟合函数)用来测量模型是否够好,或者你可以定义一个代价
函数来测量模型有多差。对于线性回归问题,人们一般是用代价函数测量线性模型的预测值和训练样本的距离
差,目标是使距离差最小。
接下来就是线性回归算法,你用训练样本训练算法,算法找到使线性模型最拟合数据的参数。这称作模型训
练。在我们的例子中,算法得到的参数值是θ
0
=4.85和θ
1
=4.91×10
–5
。
现在模型已经最紧密地拟合到训练数据了,见图1-19。
![](https://csdnimg.cn/release/download_crawler_static/10821160/bg11.jpg)
图1-19 最佳拟合训练数据的线性模型
最后,可以准备运行模型进行预测了。例如,假如你想知道塞浦路斯人有多幸福,但OECD没有它的数据。幸
运的是,你可以用模型进行预测:查询塞浦路斯的人均GDP,为22587美元,然后应用模型得到生活满意度,
后者的值在4.85 + 22,587 × 4.91 × 10
-5
= 5.96左右。
为了激起你的兴趣,案例1-1展示了加载数据、准备、创建散点图的Python代码,然后训练线性模型并进行预
测。
案例1-1,使用Scikit-Learn训练并运行线性模型。
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import sklearn
# 加载数据
oecd_bli = pd.read_csv("oecd_bli_2015.csv", thousands=',')
gdp_per_capita = pd.read_csv("gdp_per_capita.csv",thousands=',',delimiter='\t',
encoding='latin1', na_values="n/a")
# 准备数据
country_stats = prepare_country_stats(oecd_bli, gdp_per_capita)
X = np.c_[country_stats["GDP per capita"]]
y = np.c_[country_stats["Life satisfaction"]]
# 可视化数据
country_stats.plot(kind='scatter', x="GDP per capita", y='Life satisfaction')
plt.show()
# 选择线性模型
lin_reg_model = sklearn.linear_model.LinearRegression()
# 训练模型
lin_reg_model.fit(X, y)
# 对塞浦路斯进行预测
X_new = [[22587]] # 塞浦路斯的人均GDP
print(lin_reg_model.predict(X_new)) # outputs [[ 5.96242338]]
笔记:如果你之前接触过基于实例学习算法,你会发现斯洛文尼亚的人均GDP(20732美元)和塞浦路
斯差距很小,OECD数据上斯洛文尼亚的生活满意度是5.7,就可以预测塞浦路斯的生活满意度也是5.7。
如果放大一下范围,看一下接下来两个临近的国家,你会发现葡萄牙和西班牙的生活满意度分别是5.1和
6.5。对这三个值进行平均得到5.77,就和基于模型的预测值很接近。这个简单的算法叫做k近邻回归(这
个例子中,k=3)。
在前面的代码中替换线性回归模型为k近邻模型,只需更换下面一行:
clf = sklearn.linear_model.LinearRegression()
![](https://csdnimg.cn/release/download_crawler_static/10821160/bg12.jpg)
为:
clf = sklearn.neighbors.KNeighborsRegressor(n_neighbors=3)
如果一切顺利,你的模型就可以作出好的预测。如果不能,你可能需要使用更多的属性(就业率、健康、空气
污染等等),获取更多更好的训练数据,或选择一个更好的模型(比如,多项式回归模型)。
总结一下:
研究数据
选择模型
用训练数据进行训练(即,学习算法搜寻模型参数值,使代价函数最小)
最后,使用模型对新案例进行预测(这称作推断),但愿这个模型推广效果不差
这就是一个典型的机器学习项目。在第2章中,你会第一手地接触一个完整的项目。
我们已经学习了许多关于基础的内容:你现在知道了机器学习是关于什么的,为什么它这么有用,最常见的机
器学习的分类,典型的项目工作流。现在,让我们看一看会发生什么错误,导致不能做出准确的预测。
机器学习的主要挑战
简而言之,因为你的主要任务是选择一个学习算法并用一些数据进行训练,会导致错误的两件事就是“错误的算
法”和“错误的数据”。我们从错误的数据开始。
训练数据量不足
要让一个蹒跚学步的孩子知道什么是苹果,需要做的就是指着一个苹果说“苹果”(可能需要重复这个过程几
次)。现在这个孩子就能认识所有形状和颜色的苹果。真是个天才!
机器学习还达不到这个程度;需要大量数据,才能让多数机器学习算法正常工作。即便对于非常简单的问题,
一般也需要数千的样本,对于复杂的问题,比如图像或语音识别,你可能需要数百万的样本(除非你能重复使
用部分存在的模型)。
数据不合理的有效性
在一篇2001年发表的著名论文(goo.gl/R5enIE)中,微软研究员Michele Banko和Eric Brill展示了不同的
机器学习算法,包括非常简单的算法,一旦有了大量数据进行训练,在进行去除语言歧义的测试中几乎
有相同的性能(见图1-20)。
![](https://csdnimg.cn/release/download_crawler_static/10821160/bg13.jpg)
图1-20 数据和算法的重要性对比
论文作者说:“结果说明,我们可能需要重新考虑在算法开发vs语料库发展上花费时间和金钱的取舍。”
对于复杂问题,数据比算法更重要的主张在2009年由Norvig发表的论文《The Unreasonable
Effectiveness of Data》得到了进一步的推广。但是,应该注意到,小型和中型的数据集仍然是非常常见
的,获得额外的训练数据并不总是轻易和廉价的,所以不要抛弃算法。
没有代表性的训练数据
为了更好地进行归纳推广,让训练数据对新数据具有代表性是非常重要的。无论你用的是基于实例学习或基于
模型学习,这点都很重要。
例如,我们之前用来训练线性模型的国家集合不够具有代表性:缺少了一些国家。图1-21展示了添加这些缺失
国家之后的数据。
![](https://csdnimg.cn/release/download_crawler_static/10821160/bg14.jpg)
图1-21 一个更具代表性的训练样本
如果你用这份数据训练线性模型,得到的是实线,旧模型用虚线表示。可以看到,添加几个国家不仅可以显著
地改变模型,它还说明如此简单的线性模型可能永远不会达到很好的性能。貌似非常富裕的国家没有中等富裕
的国家快乐(事实上,非常富裕的国家看起来更不快乐),相反的,一些贫穷的国家看上去比富裕的国家还幸
福。
使用了没有代表性的数据集,我们训练了一个不可能得到准确预测的模型,特别是对于非常贫穷和非常富裕的
国家。
使用具有代表性的训练集对于推广到新案例是非常重要的。但是做起来比说起来要难:如果样本太小,就会有
样本噪声(即,会有一定概率包含没有代表性的数据),但是即使是非常大的样本也可能没有代表性,如果取
样方法错误的话。这叫做样本偏差。
一个样本偏差的著名案例
也许关于样本偏差最有名的案例发生在1936年兰登和罗斯福的美国大选:《文学文摘》做了一个非常大
的民调,给1000万人邮寄了调查信。得到了240万回信,非常有信心地预测兰登会以57%赢得大选。然
而,罗斯福赢得了62%的选票。错误发生在《文学文摘》的取样方法:
首先,为了获取发信地址,《文学文摘》使用了电话黄页、杂志订阅用户、俱乐部会员等相似的列
表。所有这些列表都偏向于富裕人群,他们都倾向于投票给共和党(即兰登)。
第二,只有25%的回答了调研。这就又一次引入了样本偏差,它排除了不关心政治的人、不喜欢
《文学文摘》的人,和其它关键人群。这种特殊的样本偏差称作无应答偏差。
下面是另一个例子:假如你想创建一个能识别疯克音乐视频的系统。建立训练集的方法之一是在YouTube
上搜索“疯克音乐”,使用搜索到的视频。但是这样就假定了YouTube的搜索引擎返回的视频集,是对
YouTube上的所有疯克音乐有代表性的。事实上,搜索结果会偏向于人们歌手(如果你居住在巴西,你会
得到许多“疯克卡瑞欧卡”视频,它们和James Brown的截然不同)。另一方面,怎么还能得到一个大的训
练集呢?
低质量数据
很明显,如果训练集中的错误、异常值和噪声(错误测量引入的)太多,系统检测出潜在规律的难度就会变
大,性能就会降低。花费时间对训练数据进行清理是十分重要的。事实上,大多数据科学家的一大部分时间是
做清洗工作的。例如:
如果一些实例是明显的异常值,最好删掉它们或尝试手工修改错误;
剩余173页未读,继续阅读
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
weixin_35773952
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- Hadoop生态系统与MapReduce详解
- MDS系列三相整流桥模块技术规格与特性
- MFC编程:指针与句柄获取全面解析
- LM06:多模4G高速数据模块,支持GSM至TD-LTE
- 使用Gradle与Nexus构建私有仓库
- JAVA编程规范指南:命名规则与文件样式
- EMC VNX5500 存储系统日常维护指南
- 大数据驱动的互联网用户体验深度管理策略
- 改进型Booth算法:32位浮点阵列乘法器的高速设计与算法比较
- H3CNE网络认证重点知识整理
- Linux环境下MongoDB的详细安装教程
- 压缩文法的等价变换与多余规则删除
- BRMS入门指南:JBOSS安装与基础操作详解
- Win7环境下Android开发环境配置全攻略
- SHT10 C语言程序与LCD1602显示实例及精度校准
- 反垃圾邮件技术:现状与前景
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)