特征选择与特征降维

# coding = utf-8
from sklearn.feature_selection import VarianceThreshold
from sklearn.decomposition import PCA
'''
数据降维:特征的数量减少(即columns减少)
    1、特征选择原因:
        1、数据冗余:部分特征的相关度高,容易消耗计算机性能
        2、噪声:部分特征对预测结果有影响
    2、特征选择
        方式1:
            Filter(过滤式 VarianceThreshold): 从方差大小考虑样本的数据情况
               Api:VarianceThreshold.fit_transform()
            Embedded(嵌入式):正则化、决策树
            Wrapper(包裹式)
            其他方式:神经网络
        方式2:
            主成分分析(PCA):使得数据会改变,同时特征维度也减少
                公式:Y =PX,其中Y为降维后数据,P为映射矩阵,X为原始矩阵
                作用:可以削减回归分析或者聚类分析中特征的数量
                API: PCA(n_components=None) ,n_components取值范围为(90%-95%) 将数据分解为较低维数空间
                    PCA.fit_transform(X)       
                        X:numpy array格式的数据[n_samples,n_features]
                        返回值:转换后指定维度的array
            其他降维方法:线性判别法
                
            

     Pandas合并表,一般使用merge()
     交叉表:特殊的分组工具
        pd.crosstab(mt["user_id"],mt["aisle"]),其中mt["user_id"]作为index ,mt["aisle"]作为columns
'''

def var():
    """
    特征选择--删除低方差的特征,低方差表明数据相近,没有意义不大
    :return:
    """
    var = VarianceThreshold(threshold=0.0) #一般在(0-10)之间范围取值
    data = var.fit_transform([[0,2,0,3],[0,1,4,3],[0,1,1,3]])
    print(data)
    return None


def pca():
    """
    主成分分析进行特征降维
    :return:
    """
    p = PCA(n_components=0.9)
    data = p.fit_transform([[0,2,0,3],[0,1,4,3],[0,1,1,3]])
    print(data)
    return None
if __name__ == '__main__':
    var()
    pca()

猜你喜欢

转载自www.cnblogs.com/ywjfx/p/10847154.html