描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302442875丛书名: 中国高校创意创新创业教育系列丛书
全书共分4章。第1章简介篇,介绍机器学习概念与Python编程知识;第2章基础篇,讲述如何使用Scikitlearn作为基础机器学习工具;第3章进阶篇,涉及怎样借助高级技术或者模型进一步提升既有机器学习系统的性能;第4章竞赛篇,以Kaggle平台为对象,帮助读者一步步使用本书介绍过的模型和技巧,完成三项具有代表性的竞赛任务。
●第1章简介篇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.5Scikitlearn11
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〗目录●第2章基础篇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
●第3章进阶篇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
●第4章实战篇153
4.1Kaggle平台简介153
4.2Titanic罹难乘客预测157
4.3IMDB影评得分估计165
4.4MNIST手写体数字图片识别174
4.5章末小结180
●后记181
●参考文献182
范淼 写于美国纽约中央公园 2015年12月25日
3.1模型实用及技巧 这一节将向读者朋友传授一系列更加偏向于实战的模型使用技巧。相信各位读者在第2章中品味了多个经典的机器学习模型之后,就会发现: 一旦我们确定使用某个模型,本书所提供的程序库就可以帮助我们从标准的训练数据中,依靠默认的配置学习到模型所需要的参数(Parameters);接下来,我们便可以利用这组得来的参数指导模型在测试数据集上进行预测,进而对模型的表现性能进行评价。 但是,这套方案并不能保证: (1) 所有用于训练的数据特征都是好的;(2) 学习得到的参数一定是的;(3) 默认配置下的模型总是的。也就是说,我们可以从多个角度对在前面所使用过的模型进行性能提升。本节将向大家介绍多种提升模型性能的方式,包括如何预处理数据、控制参数训练以及优化模型配置等方法。 3.1.1特征提升 早期机器学习的研究与应用,受模型种类和运算能力的限制。因此,大部分研发人员把更多的精力放在对数据的预处理上。他们期望通过对数据特征的抽取或者筛选来达到提升模型性能的目的。所谓特征抽取,就是逐条将原始数据转化为特征向量的形式,这个过程同时涉及对数据特征的量化表示;而特征筛选则更进一步,在高维度、已量化的特征向量中选择对指定任务更有效的特征组合,进一步提升模型性能。 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): 顾名思义,不考虑词语出现的顺序,只是将训练文本中的每个出现过的词汇单独视作一列特征。我们称这些不重复的词汇集合为词表(Vocabulary),于是每条训练文本都可以在高维度的词表上映射出一个特征向量。而特征数值的常见计算方式有两种,分别是: CountVectorizer和TfidfVectorizer。对于每一条训练文本,CountVectorizer只考虑每种词汇(Term)在该条训练文本中出现的频率(Term Frequency)。而TfidfVectorizer除了考量某一词汇在当前文本中出现的频率(Term Frequency)之外,同时关注包含这个词汇的文本条数的倒数(Inverse Document Frequency)。相比之下,训练文本的条目越多,TfidfVectorizer这种特征量化方式就更有优势。因为我们计算词频(Term Frequency)的目的在于找出对所在文本的含义更有贡献的重要词汇。然而,如果一个词汇几乎在每篇文本中出现,说明这是一个常用词汇,反而不会帮助模型对文本的分类;在训练文本量较多的时候,利用TfidfVectorizer压制这些常用词汇的对分类决策的干扰,往往可以起到提升模型性能的作用。 我们通常称这些在每条文本中都出现的常用词汇为停用词(Stop Words),如英文中的the、a等。这些停用词在文本特征抽取中经常以黑名单的方式过滤掉,并且用来提高模型的性能表现。下面的代码让我们重新对“20类新闻文本分类”问题进行分析处理,这一次的重点在于列举上述两种文本特征量化模型的使用方法,并比较他们的性能差异。 ……
评论
还没有评论。