第一章 赋予计算机从数据中学习的能力

每一行:代表一个样本,行向量用上标表示:每一列:代表一个维度,列向量用下标表示。
numpy:多维矩阵的存储和操作数据,pandas:基于numpy,提供更高级操作,使表格数据操作更加方便。matplotlib:数据可视化

第二章 训练简单的机器学习分类方法

fit方法:用于从数据中学习;
predict方法:用于预测
对象初始化时未创建而通过其他方法创建的属性:后缀加_:如 self.w_
自适应线性神经元adaline:定义了最小化连续性代价函数这一概念,优点是使得代价函数可分,并且凸起。可以理解为也是映射的一种,只是将输出不在直接与结果比较,而是自己有了一个期望的输出,与之进行比较。
通过调整特征大小改善梯度特征:对每一个样本的同一个特征做减去均值,然后除以标准差。
使用方法mean 和 std 可以实现,x_std=np.copy(x) x_std[:,0]=(x_std[:,0]-x_std[:,0].mean())/x_std[:,0].std() 对每一列都做此操作。
批量梯度下降法(BGD):对所有样本都进行求解后,取均值进行更新权重。(速度慢,计算量大)
随机梯度下降法(SGD):随机选择一个样本,进行权重的更新。(速度快,但容易陷入局部最优);此方法的学习率通常要实时调整,可选 a/(b+迭代次数),另一优点,可以在线学习,在存储较少时.
折中的算法:小批量梯度下降(MBGD)

第三章 scikit-learn机器学习分类器一览

训练机器学习算法的步骤:1、选择特征并收集训练样本。2、选择度量性能的指标。3、选择分类器并优化算法。4、评估模型性能。5、调整算法。
对特征进行标准化:from sklearn.preprocessing import StandarScaler 引入StandarCsaler 类。
学习方法的使用:1、将选择的分类器的类初始化;2、采用fit 方法训练分类器;3、采用predict方法查看测试结果;4、将预测结果与标签进行比较。
性能指标:from sklearn.metrics import accuracy_score 性能指标的一种 accuracy_score(y_test,y_pred);还可以用分类器自带的方法 score.
逻辑回归同样是一种分类方法,不仅可以用来分类,还给出了分类的可能性。
方差:模型对样本预测结果的一致性,在面对训练集的不同子集,模型是否能保持不变。
偏差:针对不同的训练集多次重新建模,用偏置来度量预测值与真值之间的差异性。
正则化:引入额外的偏置来惩罚过多的参数值。
svm的优点:通常具有较小的泛化误差。
逻辑回归与svm通常会造成相似的结果,逻辑回归模型更容易更新,适用于流式数据。
核:可以理解为两个样本间的相似性函数,
高斯核:径向基核函数(rbf)
gama:高斯球截止参数,增大时,会加大训练样本的影响范围,导致决策边界紧缩和波动,适合在训练集上训练模型,但是会加大泛化误差。
决策树学习:可解释性强烈,分类速度快,损失函数也是正则化的极大似然函数,np问题,所以采用启发式算法寻找次最优。
sklearn 尚不提供手工修剪决策树的功能,需要自行设置 for 函数通过修改决策树的深度来 在验证数据集上观测选取决策树。
随机森林:减少样本规模可以增加单棵决策树之间的多样性,增加了随机性,有助于减少过拟合的影响,但是会导致测试集性能变差。抽取的特征一般为根号m,抽取的样本一般等于原始样本。
参数模型:训练好模型之后可以抛弃不再使用原始训练集,如感知机、线性可分支持向量机、逻辑回归
非参数模型:决策树分类器、随机森林、核支持向量机、knn;不能用固定的参数来描述。
knn容易过拟合,维数诅咒的原因,随着样本的增加,维数增大,特征空间越来越稀疏,即是是最近的邻居在空间中也相距的很远,以至于无法估计。

第四章 构建良好的训练集-预处理

预处理:1、去除和填补数据集的缺失数值;2、将分类数据转换为适合机器学习算法的格式;3、为构造模型选取相关的特征。
NaN:不是一个数值
NULL:关系数据未知值指示符,
处理缺失数据:删除或填充,transform方法 对输入数据进行相同的转换。
处理分类数据:区分名词特征和序数特征(可以排序的特征),映射序数特征,如xl:3 l:2 m:1 ,使用map函数,df[‘size’]=df[‘size’].map(size_maping),换可以取反序列如 a={v:k for k,v in size_maping.items()}; 分类标签编码,也可以使用映射将标签码映射为整数(但此整数不具有序列特性),还可以使用LabelEncoder 类来处理。为名词特征做热编码,使用OneHotEncoder 防止直接转换成整数之后对机器的学习过程造成影响,或 get_dummies()此方法会只转换字符串序列,可以删除一列而保证数据仍能被正确表示。
分裂数据集为特征集和数据集。
把特征保持在同一尺度上,归一化,把特征的比例调整到0,1之间,x减去平均值,除以最大值减去最小值,通过MinMaxScaler类来实现(步骤:先调用类,再定义对象,最后使用fit_transform 方法来调试)需要先在训练集上使用fit_transform或者fit 方法拟合了相对应的参数,才可以使用 transform 来对测试集和新的数据点。
减少泛化误差的方案:1、收集更多的训练数据;2、通过正则化引入对复杂项的惩罚;3、选择参数较小的模型;4、减少数据的维数。
选择有意义的特征,L1和L2正则化,前者会产生大部分权重为0的稀疏特征向量(当正则化系数c大于原损失函数在0点的倒数值时),如果高维样本存在很多不相关的特征时,稀疏性很有实际价值,因此前者可以作为特征选择技术 设置参数为penalty=‘l1’ 设置正则化L1;两类降维技术,特征选择(从原特征空间中选取特征)和特征提取(构造生成新的特征)。
特征选择算法:1、顺序特征选择(属于贪婪搜索算法),自动选择与问题最相关的特征子集 ,如 逆顺序选择(sbs),将对分类器性能影响最小的特征去除,sklearn 不存在先成的算法,需要自行使用python实现。
用随机森林评估特征的重要性,因为生成模型中计算了基尼指数,所以可以直接访问各个特征的重要性,通过SelectFromModel 类来实现对特征的挑选,然后用transform方法来实现。

第五章 通过降维压缩数据

无监督数据降维方法:pca
有监督数据降维方法:lda(线性判别分析)
pca步骤:1、标准化数据库;2、构建协方差矩阵np.cov;3、获取协方差矩阵特征值和特征向量 np.linalg.eig;4、以降序对特征值排序,选取相应的特征向量;5、选择前k个特征向量,由特征向量组成投影矩阵;6、用投影矩阵转换新的数据。
pca的不足:分类标签信息会被遗漏。
在sklearn 中pca 用 from sklearn.decomposition import PCA 类。
LDA步骤:1、标准化d维数据集;2、计算每个类的d维均值向量;3、构造跨类的散布矩阵sb和类内散布矩阵sw;4、矩阵sw的逆乘以sb的特征值和特征向量;5、按特征值进行排序,将对应的特征向量也做排序;6、选择最大的k个特征值,将对应的特征向量构造成投影矩阵,将新的数据根据矩阵投影。
lda的线性判别数量最多为c-1,其中c是分类标签的数量。
利用sklearn类实现lda, form sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA 再初始化lda对象,通过对象的fit_transform方法来对参数进行训练。
实现rbf的核主成分分析:1、计算核矩阵,对每一个样本都进行计算,即矩阵为样本数*样本数;2、利用公式处理核矩阵详见226;3、按照特征值的大小,收集k个特征向量,此k个特征向量为投影到轴上的样本。
sklearn的kpca实现:from sklearn.decomposition import KernelPCA

第六章 模型评估和超参数调优的最佳实践

Pileline类:可以将多个转换步骤拟合在一起。from sklearn.pipelinr import make_pipeline ;生成pipeline对象,然后将想要管道的方法输入进去,如make_pipeline(StandardScaler(),PCA(n_components=2),LogisticRegression(random_state=1)).
两种对模型泛化性能的评估技术:1、抵抗交叉验证;2、k折交叉验证
抵抗方法:如果在模型选择时频繁使用相同的测试集,那测试集将成为训练集的一部分,所以用测试集做模型选择,会极大地影响过拟合。更好的方式是将训练集分为测试集、验证集;训练集用于模型的拟合,验证集用于在模型选择过程中验证性能,可以大大地增大模型的泛化能力,
抵抗方法的缺点,会因为测试集和验证集的分隔影响较大,因而采用k折交叉验证。
k折交叉验证:将训练集分为k个无更换子集,k-1个为训练集,1个为验证集,重复k次,得到k个模型和k次性能估计。训练集规模较小,可以选择较大的k值(增加了每个训练集内的样本个数),训练集规模较大时,选择较小的k值(减小计算成本)。
留存交叉验证:k折交叉验证的特殊情况,只保留一个样本用于验证,在训练集样本个数较少时使用。
学习曲线:诊断方差和偏差,通过训练集和交叉验证与样本的数量关系作图(用作模型评估)
高偏差:训练和交叉验证准确度都低,解决方法,增加模型参数个数,如增加特征变量,减小正则化系数;高方差:训练和交叉验证的准确度相差较大,解决方法,收集更多的训练数据,减少特征个数,增加正则化系数。from sklearn.model_selection import learning_curve
验证曲线:解决过拟合和欠拟合,通过模型参数和训练测试准确度的关系绘图;from sklearn.model_selection import validation_curve.
机器学习有两类参数:一类是从训练数据中学习到的参数,如逻辑回归的权重;一类是单独优化的算法参数;后者是模型的参数,也称为超参数,例如逻辑回归的正则化系数和决策树的深度。调整方法:1、验证曲线;2、网格搜索。
通过网格搜索为超参数调优:暴力穷尽性搜索,通过提前定义好不同的参数值,然后通过对超参数组合分别评估模型的性能,从而获得最佳组合参数值。from sklearn.model_selection import GridSearch_CV。
嵌套式交叉验证法:外循环负责把数据分为训练和测试子集,内循环以k折交叉验证法在训练子集上训练模型。在大型数据中,此方法也被称为5*2方法。
比较不同的性能评估指标:除模型准确度外,精度、召回率和F1分数。
含混矩阵分析:from sklearn.metrics import confusion_matrix
真阳率(TPR)和假阳率(FPR)是对非平衡分类问题特别有效的性能指标,精度(PRE)和召回率(REC)与真阳性和真阴性的比率相关,召回率等于真阳率,F1分数等于二倍的召回率乘以精度除以召回率和精度的和。from sklearn.metrics import precision_score from sklearn.metrics import recall_score from sklearn.metrics import f1_score
ROC(受试者操作特性图)是选择分类模型的有效工具,其对角线表示随机猜想,对角线以下的分类器比随机猜想还要差,最好的分类器在左上角。from sklearn.metrics import roc_curve,auc
多元多类评分指标:通过一对所有将其扩展到多元分类。
处理类的不平衡问题:此时注意力不应该集中在准确率上,应放在,如精度、召回率、ROC曲线上;或对少数类的错误给予较大的惩罚,把class_weight 设置为class_weight=‘balanced’,在少数类的样本执行重复采样。from sklearn.utils import resample

第七章 综合不同模型的组合学习

集成学习:from scipy.misc import comb; 既可以通过分类标签来进行集成,也可以通过概率进行集成,如逻辑回归中返回的概率,通过此概率也可以集成。
最大投票分类器,
套袋:基于导引样本构建分类器集成,from sklearn.ensemble import AdaBoostClassifier

第八章 应用机器学习于情感分析

自然语言处理的一个分支:情感分析:1、清洗和准备文本数据;2、根据文本数据建立特征向量;3、训练机器学习模型来区分正面和负面评论;4、用基于外存的学习方法来处理大型文档数据;5、根据文档判断主题进行分类。
词袋:将文本转换为数字类型的特征向量;1、从整个文档集中创建一个独立令牌(如单词)的词汇表;2、为每个文档构建一个特征向量,其中包含每个词在特定文档中出现中出现的频率。
词袋模型步骤:1、把文档处理成令牌;2、清洗文本数据;3、把词转化成特征向量;4、根据词频逆反文档频率评估单向相关性
当词袋中只有一个单词时,称为单克模型,一般采用3克或4克模型。
主题建模:潜在狄氏分配(LDA)是一种依据文档的各个词语的将文档进行聚类的无监督学习方法,将输入的词袋矩阵分解为两个新的矩阵:1、文档主题矩阵;2、单词主题矩阵。缺点:需要预先定义好主题数量。

第九章 将机器学习模型嵌入网络应用

第十章 用回归分析预测连续目标变量

残差(误差):回归线到样本点的垂直线。
除了直接绘制关系图外,还可以利用关联矩阵(皮尔森矩阵)来查看关系,用协方差除以(标准差的乘积)表示。实际上,一对标准化的协方差的值等同于皮尔森矩阵的值。

第十一章 用聚类分析处理无标签数据

第十二章 从零开始实现多层人工神经网络

第十三章 用TensorFlow并行训练神经网络

第十四章 深入探讨TensorFlow的工作原理

第十五章 深度卷积神经网络图像识别

第十六章 用递归神经网络为序列数据建模

python机器学习第二版(读书笔记)相关推荐

  1. Python核心教程(第二版)读书笔记(三)

    第三章Python基础 2010-04-09 换行  一行过长的语句可以使用反斜杠'\'分解成几行.有两种例外情况一个语句不使用反斜线也可以跨行. 1.在使用闭合操作符时,单一语句可以跨多行.例如:在 ...

  2. python自学教程读书导图-python机器学习基础教程读书笔记八(全书总结)

    全书总结 现在你知道了如何使用重要的机器学习算法进行监督学习和无监督学习,这让你可以解 决很多种机器学习问题.在带你探索机器学习提供的所有可能性之前,我们希望给你一 些最后的建议.一些额外的资源,并提 ...

  3. python去掉字符串最外侧的引号_疯狂Python讲义第二章读书笔记

    本章讲解变量和简单类型 2.1 从注释讲起 单行注释使用#,#后面的代码被注释掉不会运行,如: # print(123) 注释掉后123不会输出.多行注释使用"""  & ...

  4. 《Python核心技术第二版》笔记

    * Note 1. 数字.字符串和元组是不可变的:列表和字典是可变的 2. 可作用于多种类型的通用型操作都是以内置函数或表达式的形式出现的:但是类型特定的操作是以方法调用的形式出现的. 3. 方法也是 ...

  5. 【我的JS第三本】JavaScript_DOM编程艺术第二版读书笔记

    经过前一段时间HTML&CSS的学习,感觉视频加读书是一个比较不错的学习方法,两者相辅相成,互相补充,所以也准备看看关于JavaScript的书. 2015年12月14日,之前使用韩顺平老师的 ...

  6. 深入理解JVM(第二版读书笔记)

    一  开始前 HotSpot:http://xiaomogui.iteye.com/blog/857821 http://blog.csdn.net/u011521890/article/detail ...

  7. 《细说PHP》第二版--读书笔记

    第五章 PHP的基本语法 5.2.4 在程序中使用空白的处理 5.3 变量 5.3.1 变量的声明 在php中变量的声明必须是使用一个$符号,后面跟变量名来表示 unset()函数释放指定变量 iss ...

  8. 刘鹏老师和王超老师的计算广告第二版读书笔记

    广告的定义与目的 广告的基本概念 广告的分类 在线广告的表现形式 横幅广告 文字链广告 富媒体广告 视频广告 交互式广告 社交广告 移动广告 邮件营销广告 广告的基本概念 需求方:可以是广告主.代表广 ...

  9. 《计算广告》第二版 读书笔记

    在线广告创意类型: 横幅广告 文字链广告 富媒体广告 视频广告 社交广告 移动广告 邮件定向营销广告. 广告发展历程: 合约广告->定向广告->竞价广告 (上下文广告) 术语解释: ADN ...

最新文章

  1. 20年的人工智能设计总结:向产品中注入人工智能的指南
  2. String,StringBuffer与StringBuilder的区别
  3. E 和 ? extends E的区别
  4. JavaScript_Util_01
  5. C++判断进程id是否存在
  6. Webform(简单控件、复合控件)
  7. Python 面向对象 —— 特殊函数(setattr、getattr、hasattr)
  8. 智能优化算法:灰狼优化算法-附代码
  9. 全链路异步Rest客户端 ESA RestClient
  10. 【JVM】JVM基础
  11. Java实现PDF转换成图片
  12. AWS Landing Zone Solution
  13. HDU5855 Less Time, More profit(最大权闭合子图)
  14. 黑马程序员C++ 第二阶段 核心程序
  15. jQuery动画基础讲解(教你玩转jQuery动画)
  16. 中国采购行业出现W形复苏迹象
  17. MFC中与时间有关的函数
  18. (附源码)springboot网络微小说 毕业设计031758
  19. 三星s9 android 版本,三星S9+先行版开箱上手,这还是你熟悉的安卓旗舰吗
  20. 电子科技大学《图论及其应用》复习总结---第二章 树

热门文章

  1. puppeteer 的PDD反爬经历
  2. VMware虚拟机三种网络模式详解(一)Bridged(桥接模式)
  3. php调用父类构造,php调用父类构造方法是什么
  4. 后Xposed时代之EdXposed安装教程——以小米MIX3为例
  5. Java 后端国际化设计方案
  6. MATLAB常用内部函数
  7. CCNP——OSPF协议详解及其支持的网络类型
  8. android工厂模式源码,Android源码设计模式——工厂模式
  9. [宋史学习]历代对宋太宗的评价
  10. 信任中心2.0重装上阵,安全触手可及