数据降维

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

降维

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

数据降维方法

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

相关帖子

回帖

欢迎来到这里!

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

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