美文网首页
Python基础训练营

Python基础训练营

作者: 山雾幻华 | 来源:发表于2019-04-30 19:59 被阅读0次

绪论

    • 解决数据科学任务和挑战
      • Numpy
      • Pandas
    • 解决数据可视化
      • Matplotlib
    • 解决机器学习问题
      • Scikit-learn
      • XGBoost/LightGBM
    • 数据采集
      • Scrapy
    • 解决深度学习任务
      • Tensorflow
      • PyTorch
      • Keras
    • 分布式深度学习
      • Dist-keras
      • elephas
      • spark-deep-learning
    • 自然语言处理
      • NLTK
      • SpaCy
      • Gensim
  • 机器学习项目四大步

    • 问题定义与抽象业务
      • 问题抽象成数学问题,使用算法模型解决
      • 对业务的理解
      • 算法模型使用问题
      • 明确输入输出
    • 数据清洗和特征工程
      • 缺失值
      • 异常值
      • 不规范数据
      • 特征选择
      • 数据降维
    • 算法选择与模型训练
      • 算法模型
      • 模型调用,训练
      • 模型评估指标
    • 模型调优与应用
      • 模型调参
      • 特征优化
      • 模型融合

Python基础知识

编程规范

  • 代码开头
    Python中的代码必须顶格编写,除非被作为语句嵌套在条件判断或者条件循环
  • 代码层级
    第一层顶格编写,第二层开头需要预留4个空格(不考虑跨平台可以使用tab)
  • 对齐方式
    同一个层级的代码必须严格对齐(第一层顶格,第二层空4个空格,第三层空8个空格)
  • 注释
    单行注释:#
    多行注释:首尾处用成对三引号引用即可,“注释”;"””注释””"
  • 代码块
    逻辑判断i以及循环条件while和for条件后均以冒号结尾,然后通过4个空格开始下一层级的实际执行动作语句编写。(冒号后面接上的语句时代码块)

基本数据类型

Number(数字);String(字符串);List(列表)Tuple(元组);Set(集合);Dictionary(字典)

Numpy

numpy属性:
ndim-维度,shape-行数和列数,size-元素个数

Pandas

序列Series和数据框DataFrame

Series类似于NumPy中的一维数组,可以使用一维数组的可用函数和方法,而且还可以通过索引标签的方式获取数据,具有索引的自动对齐功能

DataFrame类似于Numpy中的二维数组,同样可以使用Numpy数组的函数和方法,还具有一些其它灵活的使用

  • pd.Series():
    • 通过一维数组创建序列
    • 通过字典的方式创建序列
    • 通过DataFrame中的某一行或者某一列创建序列
  • pd.DataFrame():
    • 通过二维数组创建
    • 通过字典方式创建
    • 通过数据框创建

查询数据,我们需要使用索引有针对的选取原数据中的子集,指定行,指定列等

无论数据框还是序列,最左侧始终有一个非原始数据对象,这个就是接下来要介绍的数据索引

通过索引获取目标数据,对数据进行一系列的操作

  • 通过index属性获取序列的索引值
  • 更改index
  • 通过索引获取数据
  • 自动化对齐

sklearn

  • Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression)、降维(Dimensionality Reduction)、分类(Classfication)、聚类(Clustering)方法。
    • 常用的回归:线性、决策树、SVM、KNN;集成回归:随机森林、Adaboost、GradientBoosting、Bagging、ExtraTrees
    • 常用的分类:线性、决策树、5VM、KNN,朴索贝叶斯;集成分类:随机森林、Adaboost、GradientBoosting.Bagging、ExtraTrees
    • 常用聚类:k均值(K-means)、层次聚类(Hierarchical clustering)、DBSCAN常用降维:LinearDiscriminantAnalysis、PCA
  • 常规使用模式
    • 导包
    • 加载数据
    • 数据预处理:降维,数据归一化,特征提取,特征转换
    • 选择算法训练数据:直接查看api找到你需要的方法,直接调用即可,其中你可能需要调调参等
    • 测试数据:使用模型自带的score方法,或者使用sklearn指标函数,或者使用自己的评价方法
    • 预测结果写入.csv中
  • 数据标准化
    • 存在的问题:如果某个特征的方差比其他特征大几个数量级,那么他就会在学习算法中占据主导位置,导致学习器对其他特征有所忽略。
    • 概念:标准化:先对数据进行去中心化,再除以特征的标准差,对数据进行缩放
    • 实现方式:数据标准化通过sklarn中preprocessing.scale()方法实现
  • 交叉验证
    • 思想:重复使用数据,把得到的样本数据进行切分,组合成为不同的训练集和验证集,用训练集来训练模型,用验证集评估模型预测的好坏
    • 简单的交叉验证:随机的将样本数据分为两部分(如70%训练,30%测试),然后用训练集来训练模型,在验证集上验证模型及参数;接着再把样本打乱,重新选择训练集和验证集,重新训练验证,最后选择损失函数评估最优的模型和参数
    • K折交叉验证:随机将样本数均分为K份,每次随机选择其中的k-1份作为训练集,剩下的1份做验证集。当这一轮完成后,重新随机选择k-1份来训练数据,若干轮后选择损失函数评估最优的模型和参数。
    • 留一交叉验证:留一交叉验证是k折交叉验证的一种特例,此时k=n(样本的个数),每次选择n-1个样本进行训练,留一个样本进行验证模型的好坏(这种方法适合样本量非常少的情况)
    • boostrapping自助采样:这种方法也是随机森林训练样本采用的方法。在n个样本中随机有放回抽样m个样本作为一颗树的一个训练集,这种采用会大约有1/3的样本不被采到,这些不被采到的样本就会被作为这棵树的验证集。
  • 过拟合
    • 过拟合的问题是因为模型过于复杂,对于训练数据能很好的拟合,却不能正确的处理测试数据,从一个角度说就是,学到了一些样本数据一些非通用信息,使得模型的泛化效果非常不好。
    • learning_curve():主要是用来判断(可视化)模型是否过拟合的
    • validation curve():主要是用来查看在参数不同的取值下模型的性能
  • 保存模型
    • 目的:节约时间,方便的将模型迁移
    • 从sklearn中导入自带保存模块
      from sklearn.externals import joblib
      
    • 保存模型
      joblib.dump(model,'sklearn_save/clf.pkl')
      
    • 重新加载模型
      model2=joblib.load('sklearn_save/clf.pkl')
      

参考

深度之眼-Python基础训练营

相关文章

网友评论

      本文标题:Python基础训练营

      本文链接:https://www.haomeiwen.com/subject/cwhbnqtx.html