具体描述
内容介绍
基本信息
| 书名: | Python机器学习及实践-从零开始通往Kaggle竞赛之路 |
| 作者: | 范淼 | 开本: | |
| YJ: | 49 | 页数: | |
| 现价: | 见1;CY =CY部 | 出版时间 | 2016-10 |
| 书号: | 9787302442875 | 印刷时间: | |
| 出版社: | 清华大学出版社 | 版次: | |
| 商品类型: | 正版图书 | 印次: | |
内容提要 作者简介 范淼 :清华大学计算机系人工智能研究所博士,研究方向涉及机器学习与自然语言处理技术。2015年3月受国家留学基金委公派至美国纽约大学计算机系联合培养。攻读博士期间,于所在研究领域内多个重要GJ会议与期刊上发表论文近20篇。先后在Hulu、MSRA(微软亚洲研究院)、百度自然语言处理部、Bosch(博世)北美硅谷研究院等多个公司的研发部门实习,并承担机器学习与自然语言处理相关的研究任务。
李超: 工学博士,清华大学副研究员,信息技术研究院Web 与软件技术研究中心副主任。中国计算机学会信息存储技术专委会WY、中国计算机学会GJ会员、全国文献影像技术标准化技术WY会(SAC/TC86/SC6)WY、IEEE 会员。研究领域包括海量数据存储、组织与管理、分析,及其在数字图书馆/档案馆/教育/医疗/金融等领域的应用。主持及参与多项国家973、863、科技支撑、自然基金等纵向项目及横向合作项目。已发表学术论文50 余篇、获得授权发明专利10 余项。
精彩导读 D3章 进阶篇 在D2章中,我们向读者介绍了大量经典的机器学习模型,并且使用Python编程语言分析这些模型在许多不同现实数据上的性能表现。然而,细心的读者在深入研究这些数据或者查阅Scikit-learn的文档之后J会发现: 所有我们在D2章中使用过的数据几乎都经过了规范化处理,而且模型也大多只是采用了默认的初始化配置。换言之,尽管我们可以使用经过处理之后的数据,在默认配置下学习到一套用以拟合这些数据的参数,并且使用这些参数和默认配置取得一些看似良好的性能表现;但是我们仍然无法回答几个Z为关键的问题: 实际研究和工作中接触到的数据都是这样规整的吗?难道这些默认配置J是ZJ的么?我们的模型性能是否还有提升的空间?本章“3.1模型使用技巧”节将会帮助读者朋友解答上述疑问。阅读完这一节,相信各位读者朋友J会掌握如何通过抽取或者筛选数据特征、优化模型配置,进一步提升经典模型的性能表现。 然而,随着近些年机器学习研究与应用的快速发展,经典模型渐渐无法满足日益增长的数据量和复杂的数据分析需求。因此,越来越多更加高效而且强力的学习模型以及对应的程序库正逐渐被设计和编写,并慢慢被科研圈和工业界所广泛接受与采用。这些模型和程序库包括: 用于自然语言处理的NLTK程序包;词向量技术Word2Vec;能够提供强大预测能力的XGBoost模型,以及Google发布的用于深度学习的Tensorflow框架等等。更加令人振奋的是,上述这些Z为流行的程序库和模型, 不但提供了Python的编程接口API,而且有些成为Python编程语言的工具包,更是方便了我们后续的学习和使用。因此,在“3.2流行库/模型实践”节将会带领各位读者一同领略这些时下Z为流行的程序库和新模型的奥妙。
3.1模型实用及技巧 这一节将向读者朋友传授一系列更加偏向于实战的模型使用技巧。相信各位读者在D2章中品味了多个经典的机器学习模型之后,J会发现: 一旦我们确定使用某个模型,本书所提供的程序库J可以帮助我们从标准的训练数据中,依靠默认的配置学习到模型所需要的参数(Parameters);接下来,我们便可以利用这组得来的参数指导模型在测试数据集上进行预测,进而对模型的表现性能进行评价。 但是,这套方案并不能保证: (1) 所有用于训练的数据特征都是Z好的;(2) 学习得到的参数一定是Z优的;(3) 默认配置下的模型总是ZJ的。也J是说,我们可以从多个角度对在前面所使用过的模型进行性能提升。本节将向大家介绍多种提升模型性能的方式,包括如何预处理数据、控制参数训练以及优化模型配置等方法。 3.1.1特征提升 早期机器学习的研究与应用,受模型种类和运算能力的限制。因此,大部分研发人员把更多的精力放在对数据的预处理上。他们期望通过对数据特征的抽取或者筛选来达到提升模型性能的目的。所谓特征抽取,J是逐条将原始数据转化为特征向量的形式,这个过程同时涉及对数据特征的量化表示;而特征筛选则更进一步,在高维度、已量化的特征向量中选择对指定任务更有效的特征组合,进一步提升模型性能。 3.1.1.1特征抽取 原始数据的种类有很多种,除了数字化的信号数据(声纹、图像),还有大量符号化的文本。然而,我们无法直接将符号化的文字本身用于计算任务,而是需要通过某些处理手段,预先将文本量化为特征向量。 有些用符号表示的数据特征已经相对结构化,并且以字典这种数据结构进行存储。这时,我们使用DictVectorizer对特征进行抽取和向量化。比如下面的代码55。
代码55: DictVectorizer对使用字典存储的数据进行特征抽取与向量化 >>> # 定义一组字典列表,用来表示多个数据样本(每个字典代表一个数据样本)。 >>>measurements= [{'city': 'Dubai', 'temperature': 33.}, {'city': 'London', 'temperature': 12.}, {'city': 'San Fransisco', 'temperature': 18.}] >>> # 从sklearn.feature_extraction 导入 DictVectorizer >>>from sklearn.feature_extraction import DictVectorizer >>> # 初始化DictVectorizer特征抽取器 >>>vec=DictVectorizer() >>> # 输出转化之后的特征矩阵。 >>>print vec.fit_transform(measurements).toarray() >>> # 输出各个维度的特征含义。 >>>print vec.get_feature_names()[[1. 0 0.33] [0. 1. 0.12.] [0. 0. 1.18.]] ['city=Dubai', 'city=London', 'city=San Fransisco', 'temperature']
从代码55的输出可以看到: 在特征向量化的过程中,DictVectorizer对于类别型(Categorical)与数值型(Numerical)特征的处理方式有很大差异。由于类别型特征无法直接数字化表示,因此需要借助原特征的名称,组合产生新的特征,并采用0/1二值方式进行量化;而数值型特征的转化则相对方便,一般情况下只需要维持原始特征值即可。 另外一些文本数据则表现得更为原始,几乎没有使用特殊的数据结构进行存储,只是一系列字符串。我们处理这些数据,比较常用的文本特征表示方法为词袋法(Bag of Words): 顾名思义,不考虑词语出现的顺序,只是将训练文本中的每个出现过的词汇单D视作一列特征。我们称这些不重复的词汇集合为词表(Vocabulary),于是每条训练文本都可以在高维度的词表上映射出一个特征向量。而特征数值的常见计算方式有两种,分别是: CountVectorizer和TfidfVectorizer。对于每一条训练文本,CountVectorizer只考虑每种词汇(Term)在该条训练文本中出现的频率(Term Frequency)。而TfidfVectorizer除了考量某一词汇在D前文本中出现的频率(Term Frequency)之外,同时关注包含这个词汇的文本条数的倒数(Inverse Document Frequency)。相比之下,训练文本的条目越多,TfidfVectorizer这种特征量化方式J更有优势。因为我们计算词频(Term Frequency)的目的在于找出对所在文本的含义更有贡献的重要词汇。然而,如果一个词汇几乎在每篇文本中出现,说明这是一个常用词汇,反而不会帮助模型对文本的分类;在训练文本量较多的时候,利用TfidfVectorizer压制这些常用词汇的对分类决策的干扰,往往可以起到提升模型性能的作用。 我们通常称这些在每条文本中都出现的常用词汇为停用词(Stop Words),如英文中的the、a等。这些停用词在文本特征抽取中经常以黑名单的方式过滤掉,并且用来提高模型的性能表现。下面的代码让我们重新对“20类新闻文本分类”问题进行分析处理,这一次的重点在于列举上述两种文本特征量化模型的使用方法,并比较他们的性能差异。 ……
目录
●D1章简介篇1
1.1机器学习综述1
1.1.1任务3
1.1.2经验5
1.1.3性能5
1.2Python编程库8
1.2.1为什么使用Python8
1.2.2Python机器学习的优势9
1.2.3NumPy & SciPy10
1.2.4Matplotlib11
1.2.5Scikit�瞝earn11
1.2.6Pandas11
1.2.7Anaconda12
1.3Python环境配置12
1.3.1Windows系统环境12
1.3.2Mac OS 系统环境17
1.4Python编程基础18
1.4.1Python基本语法19
1.4.2Python 数据类型20
1.4.3Python 数据运算22
1.4.4Python 流程控制26
1.4.5Python 函数(模块)设计28
1.4.6Python 编程库(包)的导入29
1.4.7Python 基础综合实践30
1.5章末小结33〖1〗Python机器学习及实践〖1〗目录●D2章基础篇34
2.1监督学习经典模型34
2.1.1分类学习35
2.1.2回归预测64
2.2无监督学习经典模型81
2.2.1数据聚类81
2.2.2特征降维91
2.3章末小结97
●D3章进阶篇98
3.1模型实用技巧98
3.1.1特征提升99
3.1.2模型正则化111
3.1.3模型检验121
3.1.4超参数搜索122
3.2流行库/模型实践129
3.2.1自然语言处理包(NLTK)131
3.2.2词向量(Word2Vec)技术133
3.2.3XGBoost模型138
3.2.4Tensorflow框架140
3.3章末小结152
●D4章实战篇153
4.1Kaggle平台简介153
4.2Titanic罹难乘客预测157
4.3IMDB影评得分估计165
4.4MNIST手写体数字图片识别174
4.5章末小结180
●后记181
●参考文献182
目录
。。。。。。。。。。
《Python机器学习与数据科学实战:探索数据驱动的智能世界》 内容概要 本书是一本面向数据科学和机器学习初学者的综合性指南,旨在引导读者从零开始,掌握Python语言在数据科学领域的应用,并逐步深入到机器学习的核心概念和实用技术。本书不局限于单一算法的讲解,而是强调实际应用与理论的结合,通过丰富的案例和实践项目,帮助读者构建解决实际问题的能力。 第一部分:Python数据科学基础 本部分将为你打下坚实的数据科学基础,让你能够熟练运用Python进行数据处理、分析和可视化。 Python语言入门与进阶: 基础语法回顾与强化: 即使你对Python已有一定了解,我们也会快速回顾关键概念,如变量、数据类型、运算符、控制流(条件语句、循环)、函数定义与调用等,并重点讲解在数据科学中常用的高级特性,例如列表推导式、生成器、装饰器以及面向对象编程的基本思想,确保你拥有编写高效、可读性强的Python代码的能力。 数据结构精讲: 深入剖析Python内置数据结构(列表、元组、字典、集合)的特性、常用方法以及在不同场景下的适用性。特别强调列表推导式和字典推导式在数据转换中的强大之处,以及元组在不可变性上的优势。 模块与包管理: 详细介绍Python的模块化编程理念,如何导入和使用标准库及第三方库。重点讲解pip的使用,包括安装、卸载、升级库,以及虚拟环境(如venv, conda)的创建与管理,这是保证项目依赖独立性和可复现性的关键。 NumPy:科学计算的基石 N维数组对象(ndarray): 深入理解NumPy的核心——ndarray,包括其创建、索引、切片、重塑(reshape)、轴(axis)的概念以及广播(broadcasting)机制。我们将演示如何高效地执行数学运算,避免显式循环,从而显著提升计算速度。 向量化操作: 重点讲解NumPy的向量化操作,展示如何用简洁的代码实现对大量数据的批量处理,例如逐元素运算、逻辑运算、聚合运算(sum, mean, std, max, min)等,并与传统的Python循环进行性能对比,直观感受向量化的优势。 常用函数与统计: 介绍NumPy提供的丰富数学函数、线性代数函数、随机数生成器等,并演示如何利用NumPy进行基本的数据统计分析。 Pandas:数据处理与分析的利器 Series与DataFrame: 详细讲解Pandas的核心数据结构——Series(一维带标签数组)和DataFrame(二维带标签表格),包括它们的创建、索引(iloc, loc)、数据类型(dtypes)以及内存占用。 数据加载与存储: 学习如何从各种常见数据源(CSV, Excel, JSON, SQL数据库)加载数据到DataFrame,以及如何将DataFrame保存到这些格式。重点介绍不同参数的配置,以应对各种复杂的数据文件。 数据清洗与预处理: 这是数据科学实践中最耗时但至关重要的一环。本书将详细介绍: 缺失值处理: 如何识别、统计和处理缺失值(NaN),包括删除(dropna)、填充(fillna)等策略,并讨论不同填充方法的优劣。 重复值处理: 如何查找和删除重复的行。 数据类型转换: 如何将字符串、数字、日期等数据转换为正确的数据类型,以方便后续分析。 异常值检测与处理: 介绍使用统计方法(如Z-score, IQR)和可视化手段来识别异常值,并讨论如何选择合适的处理方式(删除、替换、视为特殊值)。 数据合并与连接: 学习使用`merge`, `join`, `concat`等函数将多个DataFrame进行灵活组合,以构建完整的数据集。 数据分组与聚合: 深入理解`groupby()`操作,实现对数据进行分组后进行各种聚合计算(如求和、平均值、计数、最大/最小值),这是进行探索性数据分析(EDA)和特征工程的关键。 数据透视表与交叉表: 掌握`pivot_table()`和`crosstab()`的使用,快速生成多维度的汇总统计报表。 Matplotlib与Seaborn:数据可视化之道 Matplotlib基础: 学习如何使用Matplotlib绘制各种基本图表,包括折线图、散点图、柱状图、饼图、直方图等。掌握图表的元素(标题、轴标签、图例、网格线)的设置,以及如何调整图表的样式和布局。 Seaborn高级绘图: 介绍Seaborn,一个基于Matplotlib的更高级、更美观的绘图库。学习使用Seaborn绘制更复杂的统计图表,如箱线图(boxplot)、小提琴图(violinplot)、热力图(heatmap)、分布图(distplot)、分类图(countplot, catplot)等,它们能更直观地展示数据分布、关系和模式。 探索性数据分析(EDA)可视化: 重点演示如何结合NumPy、Pandas和可视化库,通过多样的图表来探索数据的特征、分布、相关性、异常值等,为后续的建模打下基础。 第二部分:机器学习核心理论与实践 本部分将带领你走进机器学习的世界,理解核心算法的原理,并学会如何将其应用于解决实际问题。 机器学习基础概念: 监督学习、无监督学习与强化学习: 清晰界定这三大类机器学习的范畴、目标和典型应用场景。 特征工程: 强调特征工程的重要性,它是决定模型性能的关键。我们将讲解: 特征提取: 如何从原始数据中提取有用的特征,例如文本数据的TF-IDF,图像数据的SIFT/HOG等。 特征创建: 如何组合现有特征或创建新特征,例如多项式特征、交互特征。 特征编码: 如何处理类别型特征,包括独热编码(One-Hot Encoding)、标签编码(Label Encoding)、目标编码(Target Encoding)等。 特征缩放: 为什么要进行特征缩放(标准化 Standardization, 归一化 Normalization),以及常见的缩放方法。 特征选择: 如何从高维特征空间中选择最相关的特征,以提高模型效率和泛化能力,介绍过滤法、包裹法和嵌入法。 模型评估与选择: 讲解评估模型性能的各种指标: 分类: 准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1分数(F1-Score)、ROC曲线与AUC值、混淆矩阵。 回归: 均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)、R²分数(R-squared)。 过拟合与欠拟合: 深入理解这两个模型训练中的常见问题,以及如何通过调整模型复杂度、正则化、交叉验证等方法来解决。 交叉验证: 详细介绍K折交叉验证(K-Fold Cross-Validation),它是评估模型泛化能力、避免过拟合的黄金标准。 经典监督学习算法解析与实现: 线性回归(Linear Regression): 理论基础: 最小二乘法原理,代价函数。 模型实现: 使用Scikit-learn实现线性回归,并介绍其参数。 正则化: 讲解L1(Lasso)和L2(Ridge)正则化如何防止过拟合,以及它们的应用。 逻辑回归(Logistic Regression): 理论基础: Sigmoid函数,概率建模,损失函数(交叉熵)。 模型实现: 使用Scikit-learn实现逻辑回归,理解其用于二分类和多分类。 决策树(Decision Tree): 理论基础: 节点划分标准(信息增益,基尼不纯度),剪枝。 模型实现: 使用Scikit-learn实现决策树,并讲解如何可视化树结构。 支持向量机(Support Vector Machine - SVM): 理论基础: 间隔最大化,核函数(线性核,多项式核,径向基核 RBF)。 模型实现: 使用Scikit-learn实现SVM,理解不同核函数的选择。 K近邻(K-Nearest Neighbors - KNN): 理论基础: 距离度量(欧氏距离,曼哈顿距离),K值的选择。 模型实现: 使用Scikit-learn实现KNN,并讨论其优缺点。 集成学习(Ensemble Learning): 概念介绍: Bagging(装袋)与Boosting(提升)的区别与联系。 随机森林(Random Forest): Bagging的代表,如何通过多棵决策树的投票来提高模型鲁棒性和准确性。 梯度提升(Gradient Boosting): Boosting的代表,如AdaBoost, XGBoost, LightGBM。重点介绍XGBoost和LightGBM,它们是现代机器学习竞赛中的利器,讲解它们的模型原理、调参技巧和性能优化。 经典无监督学习算法解析与实践: 聚类(Clustering): K-Means: 算法原理、初始化方法、收敛条件。 层次聚类(Hierarchical Clustering): 凝聚型与分裂型聚类。 DBSCAN: 基于密度的聚类算法,适用于发现任意形状的簇。 聚类评估: 轮廓系数(Silhouette Coefficient)。 降维(Dimensionality Reduction): 主成分分析(Principal Component Analysis - PCA): 理论基础,特征提取,方差解释。 t-SNE: 用于高维数据可视化。 第三部分:机器学习项目实战与高级技巧 本部分将带领读者进行端到端项目实践,并介绍一些在实际应用中非常重要的进阶技巧。 一个完整的机器学习项目流程: 问题定义与数据理解: 如何清晰地定义问题,并进行深入的数据探索性分析。 数据预处理与特征工程: 细致讲解如何根据数据特性进行特征工程。 模型选择与训练: 如何根据问题类型选择合适的模型,并进行有效训练。 模型评估与调优: 使用交叉验证和网格搜索/随机搜索进行超参数调优。 模型部署与解释: (可选,根据内容范围)简要介绍模型部署的思路和模型解释性工具。 文本数据处理与自然语言处理(NLP)基础: 文本预处理: 分词、去除停用词、词干提取/词形还原。 文本表示: 词袋模型(Bag-of-Words, BoW),TF-IDF。 文本分类示例: 使用朴素贝叶斯(Naive Bayes)或逻辑回归进行情感分析等。 模型调优与性能提升: 超参数调优: 网格搜索(Grid Search),随机搜索(Random Search),贝叶斯优化。 模型集成: Stacking(堆叠),Voting(投票)。 机器学习中的实践考量: 计算效率与内存优化: 如何处理大规模数据集,使用更高效的库或方法。 可复现性: 版本控制(Git),依赖管理,随机种子设置。 学习目标 通过本书的学习,你将能够: 1. 精通Python数据科学核心库: 熟练运用NumPy、Pandas进行高效的数据处理与分析。 2. 掌握数据可视化技能: 利用Matplotlib和Seaborn生成有洞察力的数据图表,辅助决策。 3. 理解机器学习基本原理: 深入掌握监督学习和无监督学习的核心算法。 4. 具备模型构建能力: 能够独立完成从数据预处理到模型训练、评估、优化的完整机器学习流程。 5. 应用多种机器学习算法: 能够根据实际问题选择并应用线性模型、树模型、集成模型等。 6. 初步掌握文本数据处理: 了解基本的NLP技术。 7. 构建解决实际问题的能力: 通过丰富的案例和实践,将理论知识转化为解决现实世界数据问题的能力。 本书的目标是让你不仅仅掌握算法,更能理解算法背后的原理,并学会如何在实际项目中灵活运用这些工具和技术,从而自信地开启你的数据科学之旅。