降维
降维不是数组的维度,而是特征的数量.
数据降维方法
1.特征选择
2.主成分分析
特征选择
冗余:部分特征的相关程度高,影响性能
噪声:部分特征对预测成功有影响
特征选择 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]]
主成分分析(PCA)
应用场景并不多,大量特征会使用
sklearn.decomposition
n_components:小数(通常是90%~95%),整数:(减少到的特征数量)
代码
# 特征工程 - 数据降维之主成分分析(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
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于