读书|《Mastering Machine Learning with Python in Six Steps》
蜗牛最近精力真是有限,很快就要大考了,不过读书不能停。
接下来几天读一读 《Mastering Machine Learning with Python in Six Steps》这本书。
更完整的思维导图 在整本书结束后,在我的公众号后台回复 MLb01 即可下载。
本文目的为速读,一些重要的知识点有相关历史博文链接,还没有写到的后续也会陆续推出。
如书名 in Six Steps,本书结构也是 6 部分。
step 1: 主要讲了 python 的安装和一些基础。
step 2: 讲了机器学习的发展史,分为 监督式,非监督式,解决问题的基本流程,核心 package 的主要组件。
发展史
常用中间的CRISP-DM流程。
一个框架解决几乎所有机器学习问题 通过一个kaggle实例学习解决机器学习问题
step 3: 机器学习基础,包括 数据的类型,特征工程,数据探索方法,以及回归 /分类/聚类等基础算法。
特征工程怎么做 机器学习算法应用中常用技巧-1 轻松看懂机器学习十大常用算法
step 4: 调优,讲了如何选择合适的模型参数,超参数,Bagging/Boosting/Stacking 等模型融合方法。
Bagging 简述 Adaboost 算法 浅谈 GBDT 详解 Stacking 的 python 实现
step 5: 讲了在文本挖掘方面的应用,包括 数据预处理的常用几种方法,以及如何做 情感分析和推荐系统。
一个 tflearn 情感分析小例子 怎样做情感分析 推荐系统
step 6: 深度学习,简单介绍几种神经网络,FNN,CNN,RNN。
step 3:
3.1 数据的类型
对于不同类型的数据,可以通过相应的描述性统计方法来观察数据:
3.2 特征工程
讲了几种基本方法,例如
对缺失数据,
- < 5% 时可以删除,2. 用 mean/average or mode or median 等值进行代替,3. 用随机数替代, 4. 或者用简单的回归/分类模型预测。
对类别数据,
- 可以用 One Hot Encoder 转化,2. 可以用 LabelEncoder() 转化成 0 到 n_classes-1 的数字
对数据进行规范化,
- Normalizing:将数据范围缩到 0 to 1, 2. standardization:将数据转化成标准正态分布的
3.3 数据探索
单变量的可以用 value_counts(), hist(), boxplot() 等方法,
多变量的可以用 Correlation Matrix 看相关关系,
也可以用 matrix of scatter plots 看各对变量间的关系和分布,
通过这些可视化的观察,可以得到一些基本的发现,例如 missing values,各变量的range,变量间相关性等。
3.4 回归
这一部分先讲了几种回归的模型,然后讲了几种诊断。
几种回归的模型
1. Linear regression
在评估模型好坏时,常用指标
- R-squared:在 0~1 之间,越接近 1 模型越好
- RMSE
- MAE
2. Polynomial Regression
可以通过 from sklearn.preprocessing import PolynomialFeatures 实现,用 R-squared 看哪个degree好一些。
3. Multivariate Regression
例如房价就会由 Bedrooms,Bathrms 等多个因素决定。
此处会涉及到 Multicollinearity 多重共线性问题,即多个自变量彼此强相关这时应该只使用其中一个自变量。
可以用 VIF 来检查多重共线性:
方法就是:
- 1.plot correlation matrix
- 2.Remove multicollinearity
Pseudo code:
vif = [variance_inflation_factor(X[independent_variables].values, ix)
if max(vif) > thresh:
del independent_variables[maxloc]
- 3.Build the multivariate linear regression model
lm = sm.OLS(y_train, X_train).fit()
几种诊断:
1. outliers
通过执行 Bonferroni outlier test,得到 p value < 0.05 为影响精度的异常值。
2. Homoscedasticity and Normality
误差方差应该是常数,且误差应该是正态分布的。
3. Over-fitting and Under-fitting
随着变量数的增加,模型的复杂性增加,过拟合的概率也会增加。
Regularization
是其中一种可以缓解过拟合问题的方法,常用 Ridge 和 LASSO 回归通过惩罚系数的大小来处理这个问题。
持续更新
- flash 显示 qq客服状态
- android获得ImageView图片的等级
- SqlServer:此数据库处于单用户模式,导致数据库无法删除的处理
- jQuery中排除指定元素,同时选择剩下的所有元素
- windows客户机连接gerrit的一个报错处理
- 装箱与值类型虽然很容易理解,但是在实际使用中,并不总是能100%用对
- Jexus 配置ssl
- 局部打印插件 jquery.PrintArea.js
- FluorineFx应用中“页面长时间不动”导致无法连接的解决办法
- Mysql主从同步(1)-主从/主主环境部署梳理
- mysql主从同步(3)-percona-toolkit工具(数据一致性监测、延迟监控)使用梳理
- 网站压力测试软件WebBench以及压测Jexus
- Gershon Dublon & Nan Zhao:用传感器网络感知世界
- 即日起珠海可用微信乘公交,腾讯乘车码助力智慧城市建设
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java 8的新特性还不了解?快进来!
- 【Vulnhub】Play XML Entities
- 一切皆是映射:詳解 Kotlin Map 集合類
- 10大高性能开发宝石,我要消灭一半程序员!
- 面试官:你说你会RabbitMQ,那聊聊它的交换机(Exchange)吧
- Kubeadm 1.9 HA 高可用集群本地离线镜像部署【已验证】
- kubernetes(k8s)集群安装calico
- kubernetes(k8s) Prometheus+grafana监控告警安装部署
- 基于OpencvCV的情绪检测
- 设计模式 之 抽象工厂模式
- Angular应用里HTTP请求的错误处理
- 使用npm安装TypeScript
- TypeScript的interface关键字
- TypeScript的class关键字
- TypeScript里一些特殊的类型