数据降维

本贴最后更新于 2023 天前,其中的信息可能已经时移世异

降维

降维不是数组的维度,而是特征的数量.

数据降维方法

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

特征选择

冗余:部分特征的相关程度高,影响性能
噪声:部分特征对预测成功有影响

image

特征选择 API

sklearn.feature_selection.VarianceThreshold
默认删除方差为0的特征,删除低方差的特征,阈值一般在0-10(不确定,看实际情况)

特征选择代码

# 特征工程 - 数据降维之特征选择
from sklearn.feature_selection import VarianceThreshold

def var():
    """
    特征选择 - 删除低方差特征  :return: None
    """
    # 实例化 threshold等于地方差范围 这里是删除所有方差为0的特征
    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]]

image

主成分分析(PCA)

应用场景并不多,大量特征会使用
sklearn.decomposition
n_components:小数(通常是90%~95%),整数:(减少到的特征数量)

image

代码

# 特征工程 - 数据降维之主成分分析(PCA)

from sklearn.decomposition import PCA

def pca():

    """
    主成分分析进行特征降维  :return: None
    """
    pca = PCA(n_components=0.9)

    data = pca.fit_transform([[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]])

    print(data)
    return None

if __name__ == "__main__":
    pca()

运行结果

[[-1.76504522]
 [ 2.35339362]
 [-0.58834841]]

主成分分析案例

import pandas as pd 
from sklearn.decomposition import PCA 

# 读取四张表的数据
prior = pd.read_csv("./Desktop/all/order_products__prior.csv")

products = pd.read_csv("./Desktop/all/products.csv")
orders = pd.read_csv("./Desktop/all/orders.csv")
aisles = pd.read_csv("./Desktop/all/aisles.csv")

# 合并四张表到一张表  (用户-物品类别)
_mg = pd.merge(prior,products,on=['product_id','product_id'])
_mg = pd.merge(_mg,orders,on=['order_id','order_id'])
mt = pd.merge(_mg,aisles,on=['aisle_id','aisle_id'])


mt.head(10)

# 交叉表
cross = pd.crosstab(mt['user_id'],mt['aisle'])



cross.head(10)

# 进行主成分分析
pca = PCA(n_components=0.9)


# 计算还是挺快的,因为sklearn是用np计算的
data = pca.fit_transform(cross)

print(data)

# 查看样本信息
data.shape


运行结果

screencapturelocalhost8888notebooksinstacatipynb2018101121_33_58png

相关帖子

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...