目录
降维:维度:特征的数量
数据降维:1.特征选择 2.主成分分析
特征选择
原因:1.冗余:部分特征的相关度高,容易消耗计算性能
2.噪声:部分特征对预测结果有影响
VarianceThreshold语法
from sklearn.feature_selection import VarianceThreshold
def var():
"""特征选择-删除低方差的特征"""
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()
PCA(主成分分析)
本质:PCA是一种分析、简化数据集的技术
目的:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息
作用:可以削减回归分析或者聚类分析中特征的数量
(特征数量达到上百的时候,考虑数据的简化,数据也会改变,特征数量也会减少)
from sklearn.decomposition import PCA
def pca():
"""主成分分析进行特征降维"""
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()
降维案例
import pandas as pd
from sklearn.decomposition import PCA
# 读取四张表的数据
prior = pd.read.csv("./data/instacart/order_products_prior.csv")
products = pd.read.csv("./data/instacart/products.csv")
orders = pd.read.csv("./data/instacart/orders.csv")
aisles = pd.read.csv("./data/instacart/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'])
# 交叉表(特殊的分组工具)
cross = pd.crosstab(mt['user_id'],mt['aisle'])
# 进行主成分分析
pca = PCA(n_components=0.9)
data = pca.fit_transform(cross)