python机器学习之数据降维(sklearn)
特征选择(删除方差较小的特征值)sklearn的APIfrom sklearn.feature_selection import VarianceThreshold例如var=VarianceThreshold(threshold=0.0)#threshold就是只方差的大小默认为0,如果是填1,就是值删除方差0-1的所有特征值data=var.fit_transform([[1,3,6,2],[
·
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个!
更多推荐
所有评论(0)