1. 特征选择
  2. 主成分分析

特征选择

  • 是什么:
    • 特征选择就是单纯的从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值、也不改变值,但是选择后的特征维度数肯定比选择前小,毕竟只选择了其中的一部分特征。
  • 原因:
    1. 冗余:部分特征的相关度高,容易消耗计算性能;
    2. 噪声:部分特征对预测结果有影响
  • 主要方法(三大武器):
    • Filter(过滤式):VarianceThreshold
    • Embedded(嵌入式):正则化、决策树
    • Wrapper(包裹式)

特征选择API:sklearn.feature_selection.VarianceThreshold

VarianceThreshold语法

流程

  1. 初始化VarianceThreshold,指定阈值方差
  2. 调用fit_transform

代码

from sklearn.feature_selection import VarianceThreshold

def var():
    '''
    特征选择-删除低方差特征
    :return:None
    '''
    var = VarianceThreshold(threshold=0.0)
    data = var.fit_transform([[0,2,0,3],[0,1,4,3],[0,1,1,3]])
    print(data)
    return None
if __name__ == '__main__':
    var()
# 运行结果
[[2 0]
 [1 4]
 [1 1]]

主成分分析API:sklearn.decomposition

PCA(主成分分析)

  • 本质:PCA是一种分析、简化数据集的技术
  • 目的:是数据维数压缩,尽可能降低原数据的维度(复杂度),损失少量信息
  • 作用:可以削减回归分析或者聚类分析中特征的数量

PCA语法

PCA流程

  1. 初始化PCA,指定减少后的维度
  2. 调用fit_transform

代码

from sklearn.decomposition import PCA

def pca():
    '''
    主成分分析,进行特征降维
    :return: None
    '''
    pca = PCA(n_components=0.9)
    data = pca.fit_transform([[2,8,4,5],[6,3,0,8],[5,4,9,1]])
    print(data)
    return None
if __name__ == '__main__':
    pca()
# 运行结果
[[ 1.22879107e-15  3.82970843e+00]
 [ 5.74456265e+00 -1.91485422e+00]
 [-5.74456265e+00 -1.91485422e+00]]

高维数据容易出现的问题:特征之间通常是相关的

数据类型

  • 离散型数据:由记录不同类别个体的数目所得到的数据,又称计数数据,所有这些数据全部都是整数,而且不能再细分,也不能进一步提高他们的精确度。
  • 连续型数据:变量可以再某个范围内取任一数,即变量的取值可以是连续的,如:长度、时间、质量值等,这类整数通常是非整数,含有小数部分。
  • 注:只要记住,离散型是区间内不可分,连续型是区间内可分。

发表回复