1.特征选择(删除方差较小的特征值)

sklearn的API

from sklearn.feature_selection import VarianceThreshold

例如

var=VarianceThreshold(threshold=0.0)#threshold就是只方差的大小默认为0,如果是填1,就是值删除方差0-1的所有特征值
    data=var.fit_transform([[1,3,6,2],[1,2,4,3],[1,8,5,3]])
    print(data)

在这里插入图片描述

2.PCA(主成分分析)

当数据的特征值达到上百个时,要考虑数据的化简

目的:数据维数压缩,尽可能降低数据维度,损失少量信息。

作用:可以削减回归分析或者聚类分析中特征值的数量。

PCA的API

from sklearn.decomposition import PCA

例如

 pca=PCA(n_components=0.9)#这里的n_components代表着数据的保留率为90%一般取0.9-0.95
    data=pca.fit_transform([[2,8,4,5],[6,3,0,8],[5,4,9,1]])
    print(data)

结果如下

在这里插入图片描述

3.案例分析(基于pandas,numpy,sklearn)

通过对每位顾客购买的商品进行分析,对顾客进行分类

以下是4个文件

product.csv  #商品信息
order_products_prior.csv   #订单与商品信息
orders.csv    #用户的订单信息
aisles.csv    #商品所属具体物品类别

文件内的内容

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

有点像sql,把各个表联系起来。

import pandas as pd
from sklearn.decomposition import PCA
import numpy as np
#读取数据
priors=pd.read_csv("/home/cc1997/Desktop/instacart/order_products__prior.csv")
products=pd.read_csv("/home/cc1997/Desktop/instacart/products.csv")
aisles=pd.read_csv("/home/cc1997/Desktop/instacart/aisles.csv")
orders=pd.read_csv("/home/cc1997/Desktop/instacart/orders.csv")

#数据合并
n1=pd.merge(priors,products,on=["product_id","product_id"])#将两个表中的product_id这列为主健进行合并
n2=pd.merge(n1,orders,on=["order_id","order_id"])
n3=pd.merge(n2,aisles,on=["aisle_id","aisle_id"])
print(n3.head(10))


#利用交叉表将用户名作为索引,购买物品作为内容展示出来
cross=pd.crosstab(n3["user_id"],n3["aisle"])
print(cross.head(10))

#数据主成分分析
pca=PCA(n_components=0.9)
data=pca.fit_transform(cross)
print(data.shape)

结果如下

在这里插入图片描述

由以前134个特征值变成现在的53个!

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐