简介:专注于AI领域的资源共享和整合
- Geekhoo官方群【248087140】
- 【干货】机器学习项目流程
- 推荐:你可能会用到的计算机书籍
- AI = Python + MachineLearning(Sklearn) + DeepLearning(PyTorch)
编程入门学习建议
具体的做法:
1、选择一个方向:产品、实施、测试、运维、编程、架构、算法、人工智能。
2、选择一门编程语言:Shell、JAVA、Python、C、C++、C#、PHP、GO
3、然后计算机基础:可以看看《计算机导论》和《计算机操作系统》,《计算机网络》《XXX编程语言教学指南》
4、然后开始着手你想要做的项目:Web前端? Web前端?自动化运维?数据分析?数据挖掘?
5、然后就开始去横冲直撞的找工作和选择Offer
说完这些干货后,我作为过来人想告诉你:
书还是别看了,网上去搜索《某某技术》的视频教程??
视频网站:百度搜索?网易云课堂?淘宝?慕课网?51CTO?哔哩哔哩?传智播客?
最后送你一句话:加油!! 路可远可近,但愿遇见都是好人一枚!
项目开发流程
1.理解实际问题,抽象为机器学习能处理的数学问题
理解实际业务场景问题是机器学习的第一步,机器学习中特征工程和模型训练都是非常费时的,深入理解要处理的问题,能避免走很多弯路。理解问题,包括明确可以获得的数据,机器学习的目标是分类、回归还是聚类。如果都不是的话,考虑将它们转变为机器学习问题。参考[机器学习分类](http://www.cnblogs.com/wxquare/p/5281753.html)能帮助从问题提炼出一个合适的机器学习方法。
2.获取数据
获取数据包括获取原始数据以及从原始数据中经过特征工程从原始数据中提取训练、测试数据。机器学习比赛中原始数据都是直接提供的,但是实际问题需要自己获得原始数据。“ 数据决定机器学习结果的上限,而算法只是尽可能的逼近这个上限”,可见数据在机器学习中的作用。总的来说数据要有具有“代表性”,对于分类问题,数据偏斜不能过于严重,不同类别的数据数量不要有数个数量级的差距。不仅如此还要对评估数据的量级,样本数量、特征数量,估算训练模型对内存的消耗。如果数据量太大可以考虑减少训练样本、降维或者使用分布式机器学习系统。
3.特征工程
特征工程是非常能体现一个机器学习者的功底的。特征工程包括从原始数据中特征构建、特征提取、特征选择,非常有讲究。深入理解实际业务场景下的问题,丰富的机器学习经验能帮助我们更好的处理特征工程。特征工程做的好能发挥原始数据的最大效力,往往能够使得算法的效果和性能得到显著的提升,有时能使简单的模型的效果比复杂的模型效果好。数据挖掘的大部分时间就花在特征工程上面,是机器学习非常基础而又必备的步骤。数据预处理、数据清洗、筛选显著特征、摒弃非显著特征等等都非常重要,建议深入学习。
4.模型训练、诊断、调优
现在有很多的机器学习算法的工具包,例如sklearn,使用非常方便,真正考验水平的根据对算法的理解调节参数,使模型达到最优。当然,能自己实现算法的是最牛的。模型诊断中至关重要的是判断过拟合、欠拟合,常见的方法是绘制学习曲线,交叉验证。通过增加训练的数据量、降低模型复杂度来降低过拟合的风险,提高特征的数量和质量、增加模型复杂来防止欠拟合。诊断后的模型需要进行进一步调优,调优后的新模型需要重新诊断,这是一个反复迭代不断逼近的过程,需要不断的尝试,进而达到最优的状态。
5.模型验证、误差分析
模型验证和误差分析也是机器学习中非常重要的一步,通过测试数据,验证模型的有效性,观察误差样本,分析误差产生的原因,往往能使得我们找到提升算法性能的突破点。误差分析主要是分析出误差来源与数据、特征、算法。
6.模型融合
一般来说实际中,成熟的机器算法也就那么些,提升算法的准确度主要方法是模型的前端(特征工程、清洗、预处理、采样)和后端的模型融合。在机器学习比赛中模型融合非常常见,基本都能使得效果有一定的提升。这篇[博客](http://www.cnblogs.com/wxquare/p/5440664.html)中提到了模型融合的方法,主要包括一人一票的统一融合,线性融合和堆融合。
7.上线运行
这一部分内容主要跟工程实现的相关性比较大。工程上是结果导向,模型在线上运行的效果直接决定模型的成败。 不单纯包括其准确程度、误差等情况,还包括其运行的速度(时间复杂度)、资源消耗程度(空间复杂度)、稳定性是否可接受。这些工作流程主要是工程实践上总结出的一些经验。并不是每个项目都包含完整的一个流程。这里的部分只是一个指导性的说明,只有大家自己多实践,多积累项目经验,才会有自己更深刻的认识。
面向0基础编程的同学,请仔细Coding
- 01. Python 工具
- 02. Python 基础
- 03. Numpy
- 03.01 Numpy 简介
- 03.02 Matplotlib 基础
- 03.03 Numpy 数组及其索引
- 03.04 数组类型
- 03.05 数组方法
- 03.06 数组排序
- 03.07 数组形状
- 03.08 对角线
- 03.09 数组与字符串的转换
- 03.10 数组属性方法总结
- 03.11 生成数组的函数
- 03.12 矩阵
- 03.13 一般函数
- 03.14 向量化函数
- 03.15 二元运算
- 03.16 ufunc 对象
- 03.17 choose 函数实现条件筛选
- 03.18 数组广播机制
- 03.19 数组读写
- 03.20 结构化数组
- 03.21 记录数组
- 03.22 内存映射
- 03.23 从 Matlab 到 Numpy
- 04. Scipy
- 05. Python 进阶
- 05.01 sys 模块简介
- 05.02 与操作系统进行交互:os 模块
- 05.03 CSV 文件和 csv 模块
- 05.04 正则表达式和 re 模块
- 05.05 datetime 模块
- 05.06 SQL 数据库
- 05.07 对象关系映射
- 05.08 函数进阶:参数传递,高阶函数,lambda 匿名函数,global 变量,递归
- 05.09 迭代器
- 05.10 生成器
- 05.11 with 语句和上下文管理器
- 05.12 修饰符
- 05.13 修饰符的使用
- 05.14 operator, functools, itertools, toolz, fn, funcy 模块
- 05.15 作用域
- 05.16 动态编译
- 06. Matplotlib
- 07. 使用其他语言进行扩展
- 08. 面向对象编程
- 09. Theano 基础
- 09.01 Theano 简介及其安装
- 09.02 Theano 基础
- 09.03 Theano 在 Windows 上的配置
- 09.04 Theano 符号图结构
- 09.05 Theano 配置和编译模式
- 09.06 Theano 条件语句
- 09.07 Theano 循环:scan(详解)
- 09.08 Theano 实例:线性回归
- 09.09 Theano 实例:Logistic 回归
- 09.10 Theano 实例:Softmax 回归
- 09.11 Theano 实例:人工神经网络
- 09.12 Theano 随机数流变量
- 09.13 Theano 实例:更复杂的网络
- 09.14 Theano 实例:卷积神经网络
- 09.15 Theano tensor 模块:基础
- 09.16 Theano tensor 模块:索引
- 09.17 Theano tensor 模块:操作符和逐元素操作
- 09.18 Theano tensor 模块:nnet 子模块
- 09.19 Theano tensor 模块:conv 子模块
- 10. 有趣的第三方模块
- 11. 有用的工具
- 12. Pandas
面向基础编程转型做 MachineLearning,请仔细Coding
第一部分-分类 | 第二部分 回归 | 第三部分 无监督学习 | 第四部分 其他工具 |
---|---|---|---|
1」 机器学习基础 | 8」 预测数值型数据:回归 | 10」 k-means聚类 | 13」 利用PCA来简化数据 |
2」 k-近邻算法 | 9」 树回归 | 11」 使用Apriori算法进行关联分析 | 14」 利用SVD简化数据 |
3」 决策树 | 12」 使用FP-growth算法发现频繁项集 | 15」 大数据与MapReduce | |
4」 朴素贝叶斯 | |||
5」 Logistic回归 | |||
6」 支持向量机 | |||
7」 集成方法-随机森林、AdaBoost |
面向 MachineLearning 转型做 DeepLearning,请仔细Coding
代码地址:高级-PyTorch/tutorial-contents
PyTorch 简介
PyTorch 神经网络基础
建造第一个神经网络
- 3.1 关系拟合 (回归 Regression)
- 3.2 区分类型 (分类 Classification)
- 3.3 快速搭建回归神经网络
- 3.4 保存和恢复模型
- 3.5 数据读取 (Data Loader)
- 3.6 Optimizer 优化器
高级神经网络结构
- 4.1 CNN 卷积神经网络
- 4.2 RNN 循环神经网络 (分类 Classification)
- 4.3 RNN 循环神经网络 (回归 Regression)
- 4.4 AutoEncoder (自编码/非监督学习)
- 4.5 DQN 强化学习 (Reinforcement Learning)
- 4.6 GAN (Generative Adversarial Nets 生成对抗网络)
高阶内容
项目名称 | 文档地址 | 代码地址 | 作者信息 | 更新时间 |
---|---|---|---|---|
手写数字识别 | 文档 | 代码 | 片刻 | 2017-12-16 |
房屋预测 | 文档 | 代码 | 忧郁一休 | 2017-12-16 |