机器学习中的特征工程学习

1. 机器学习的定义

  • 数据
  • 自动分析获取数据
  • 对未知数据仅需预测

2.特征工程意义

  • 意义:会直接的影响机器学习的效果
  • 作用:筛选、处理选择一些合格的特征

3.数据集的构成

  • 平台
    • scikit-learn 方便学习,数据比较少
    • kaggle
    • UCI
  • 结构
    • 特征值:事物的一些特征
    • 目标值:需要预测的值

4. 特征工程包含内容

  • 特征抽取
  • 特征预处理
  • 特征降维

5. 特征抽取

  • 将数据(文本或图像)抽取成机器可以识别的数特征
  • sklearn.feature_extraction
  • 字典数据特征抽取
    • 目的:对特征当中有类型的信息做处理—————>处理成one-hot编码,类别都做成这样
    • dictvectorizer: 默认返回sparse矩阵,sparse=False的时候回返回默认的数据
  • 文本特征抽取
    • get_feature_names() 返回值:单词列表
    • CountVectorizer(stop_words=[])
    • 对于中文来说:也不统计单个汉字,智能以符号或者空格来隔开每一个词语
    • stop_words:停止词的意思
      • 这些词语不能反映文章主题,词语比较中性,
      • 因为、所以、等等、
    • Tf-idf文本特征抽取
      • 用来评估一个词语对于一个文件集或一个语料库中的其中一份文件的重要程度
      • 公式
        • tf 词频 指某一个词语在该文件中出现的频率 词数/总词数
        • 逆文档频率 一个词语的普遍重要 lg( 文章数量/出现关键字的文章数)
        • Tfidf = tf*idf(逆文档频率)

6.特征预处理

  • 通过一些转换函数将特征数据转换成更加适合算法模型的特征数据过程
  • 缺失值处理使用pandas
  • 数值类型数据的无量纲化
    • 归一性(小数据)
      • 将所有数据变换成映射到[0,1]之间
      • 公式: (x-min)/(max-min) * (mx-mi)+mi
        • Max 一列的最大值
        • min一列的最小值
        • mx想得到值的区间的最大值,这里就是1
        • mi想得到值区间的最小值、这里就是0
      • API
        • sklearn.preprocessing import MinMaxScaler
      • 总结
        • 注意最大值和最小值是变化的、最大值和最小值非常容易受到异常点影响、所有这种方法鲁棒性比较差、只适合传统精准小数据场景。
    • 标准化(大数据的时候)
      • 通过对原始数据进行变换到均值为0,标准差为1的范围
      • 公式
        • (x-mean)/o mean是平均值,o为标准差
        • 方差公式 ((x1-mean)2+(x2-mean)2+….(xn-mean)^2)/n
        • 标准差 根号方差
      • 这里一定要比较大的数据量
      • API
        • sklearn.preprocessing.StandardScaler()
          • 处理之后所有数据都聚集在均值为0附近、标准差为1
          • 返回值形状相同的array
    • 为什么要进行归一化/标准化
      • 特征的单位会在大小相差较大、或者某特征的方差相比其他特征大出几个数量级、容易影响目标结果、使得一些算法无法学习到其他的特征
      • 其实就是使得不同规格的数据转换成统一规格的数据

7.特征选择

  • 特征降维
    • 就是降低特征的数量
    • 降低特征数量、得到一些不相关的特征
    • 降维的两种方式
      • 特征选择
        • 过滤式
          • 方差选择法(删除所有低方差的特征值)
          • 相关系数
        • 嵌入式
          • 决策树
          • 正则化
          • 深度学习
      • 主成分分析
posted @ 2019-12-31 12:28  FANDX  阅读(391)  评论(0编辑  收藏  举报