1. 特征处理
    1. 数据预处理
      1. 不属于同一量纲
        1. 标准化
          1. 前提
          2. 特征值服从正态分布 标准化后,其转换成标准正态分布
          3. 公式
          4. x' = (x-均值)/标准差
          5. 代码
          6. StandardScaler().fit_transform(iris.data)
        2. 区间缩放法
          1. 公式
          2. x = (x-最小值)/(最大值-最小值)
          3. 代码
          4. MinMaxScaler().fit_transform(iris.data)
      2. 信息冗余
      3. 定量特征二值化
        1. 大于阈值的赋值为1,小于等于阈值的赋值为0
        2. Binarizer(threshold=3).fit_transform(iris.data)
      4. 定性特征不能直接使用
      5. 存在缺失值
        1. 缺失值填充
          1. Imputer().fit_transform(vstack((missing_value, strategy, iris.data)))
          2. missing_value为缺失值的表现形式,默认为NaN
          3. strategy为默认填充策略,默认为mean
      6. 信息利用率低
      7. OnHot编码
        1. OneHotEncoder().fit_transform(iris.target.reshape((-1,1)))
  2. 特征选取
    1. 考虑要点
      1. 特征是否发散
        1. 如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,没有特异性
      2. 特征与目标的相关性
        1. 与目标相关性高的特征,应当优选选择
    2. 特征选择方法
      1. Filter:过滤法
        1. 按照发散性或者相关性对各个特征进行评分, 设定阈值或者待选择阈值的个数,选择特征
        2. 方法步骤
          1. 方差选取法
          2. 1. 计算各个特征的方差
          3. 2. 根据阈值,选择方差大于阈值的特征
          4. 代码
          5. VarianceThreshold(threshold=3).fit_transform(iris.data)
          6. 相关系数法
          7. 1. 先要计算各个特征对目标值的相关系数以及相关系数的P值
          8. 2. 用feature_selection库的SelectKBest类结合相关系数来选择特征
          9. 代码
          10. SelectKBest(lambda X, Y:).fit_transform(iris.data, iris.target)
          11. 卡方检验
          12. 检验定性自变量对定性因变量的相关性
          13. 代码
          14. SelectKBest(chi2, k=2).fit_transform(iris.data, iris.target)
          15. 互信息法
          16. 也是评价定性自变量对定性因变量的相关性的
          17. 代码
          18. SelectKBest(lambda X,k=2).fit_transform(iris.data, iris.target)
      2. Wrapper:包装法
        1. 根据目标函数,每次选择若干特征,或者排除若干特征
        2. 方法
          1. 递归特征消除法
          2. 使用一个基模型来进行多轮训练,每轮训练后,消除若干权值 系数的特征,再基于新的特征集进行下一轮训练
          3. 代码
          4. RFE(estimator=LogisticRegression(), n_features_to_select=2).fit_transform(iris.data, iris.target)
      3. Embedded:嵌入法
        1. 先使用某些机器学习的算法和模型进行训练,得到 各个特征的权值系数,根据系数从大到小选择特征
        2. 方法
          1. 基于惩罚项的特征选择法
          2. 使用带惩罚项的基模型,除了筛选出特征外,同时也进行了降维
          3. 代码
          4. SelectFromModel(LogisticRegression(penalty="l1", C=0.1)).fit_transform(iris.data, iris.target)
          5. 基于树模型的特征选择法
          6. 代码
          7. SelectFromModel(GradientBoostingClassifier()).fit_transform(iris.data, iris.target)
  3. 降维
    1. 引入原因
      1. 特征矩阵过大,导致计算量大
    2. 方法
      1. 主成分分析法(PCA)
        1. PCA是为了让映射后的样本具有最大的发散性
        2. 代码
          1. PCA(n_components=2).fit_transform(iris.data)
        3. 无监督的降维
      2. 线性判别分析法(LDA)
        1. 而LDA是为了让映射后的样本有最好的分类性能
        2. 代码
          1. LDA(n_components=2).fit_transform(iris.data, iris.target)
        3. 有监督的降维