标签:des 其它 numpy 指定 调用 降维 product lin nts
【维降】:把三维降成二维,本质就是减少特征数量;
什么是特征选择:
为什么要进行特征选择:
主要方法(三大武器):前2种主要方式
其它方法:神经网络(以后介绍)
sklearn.feature_selection.VarianceThreshold
【删除所有低方差特征】:
VarianceThreshold(threshold = 0.0)
Variance.fit_transform(X,y)
【解释】:
X:numpy array格式的数据[n_samples,n_features]
返回值:训练集差异低于threshold的特征将被删除。
默认值是保留所有非零方差特征,即删除所有样本
中具有相同值的特征。
1、初始化VarianceThreshold,指定阀值方差
2、调用fit_transform
【演示数据】:
[[0, 2, 0, 3],
[0, 1, 4, 3],
[0, 1, 1, 3]]
【方差选择实例:day1.py】
from sklearn.feature_selection import VarianceThreshold
def var():
'''
特征选择-删除低方差的特征
:return: None
'''
var=VarianceThreshold(threshold=0) #去除方差等于0的列;【threshold即域值。方差(每一列每个数-这列的平均数)^2/数的个数=0的列】
data=var.fit_transform([[0, 2, 0, 3],[0, 1, 4, 3],[0, 1, 1, 3]]) #按去除方差等于0列,对此列表进行转换
print(data)
if __name__=='__main__':
var()
'''结果:
原数据:
[[0, 2, 0, 3],
[0, 1, 4, 3],
[0, 1, 1, 3]]
threold=0时,去除特征值完全一样的列:
[[2 0]
[1 4]
[1 1]]
threold=1时,去除特征值小于1的列:
[[0]
[4]
[1]]
'''
sklearn. decomposition
【本质】:PCA是一种分析、简化数据集的技术
【目的】:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。
【作用】:可以削减回归分析或者聚类分析中特征的数量
【场景】:特征数量达到上百的时候,就要考虑数据的简化,即用到PCA
【公式】:理解即可,不必掌握(参考例2理解此公式):
【例1】:用二维的照片去更好的表示三维的洒水壶,哪张能更好的表现三维实体?
这时就要用到PCA来分析决定选择去除哪些特征,又不影响对实体的表现(信息不会损失很大)。
【例2】
要求:将这个二维的数据简化成一维?
数据:(-1,-2),(-1, 0),( 0, 0),( 2, 1),( 0, 1)
方法1:直接降到x轴,或y轴上,数据都剩下3个点,都损失了2个点。这就是信息损失比较大的情况;
方法2:如果在都投到(蓝线),则还是5个点,虽然还是有信息损失,但已经把损失降到最小。
【例3】
下图的特征1、特征50相差其实不大,把50进行缩放,和特征1类似,因此可把1、50当一个数据处理
特征1 特征2 特征3 特征50,。。。。特征100
1 2
2 4
3 6
4 8
5 9
6 12
7 13
8 15
【例4】实际应用:把人脸特征用PCA分析后,进行的数据降维
from sklearn.decomposition import PCA
1)PCA(n_components=None)
2)PCA.fit_transform(X)
1、初始化PCA,指定减少后的维度
2、调用fit_transform
3、演示数据:
[[2,8,4,5],
[6,3,0,8],
[5,4,9,1]]
【代码实例】
from sklearn.decomposition import PCA
def pca():
'''
特征选择-PCA处理(decomposition)
主成分分析进行特征降维
:return:
'''
pca=PCA(n_components=0.9)
data=pca.fit_transform([[2,8,4,5],[6,3,0,8],[5,4,9,1]])
print(data)
if __name__=='__main__':
pca()
'''结果:其信息量为输入信息的90%
[[ 1.28620952e-15 3.82970843e+00]
[ 5.74456265e+00 -1.91485422e+00]
[-5.74456265e+00 -1.91485422e+00]]
'''
地址:https://www.kaggle.com/c/instacart-market-basket-analysis/data
https://pan.baidu.com/s/1CD8JsfoxOh8NeRSGNYMPyg 提取码: 6qfp
1、合并各张表到一张表当中
pd.merge()
prior: product_id,order_id
products:product_id, aisle_id
orders:order_id,user_id
aisles:aisle_id,aisle
2、建个类似,列数据
交叉表(特殊的分组表)
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'])
mt.head(10)# 展示此表前十个【表1】
# 交叉表(特殊的分组工具)以userid为列,商品分类 aisle为行的表
cross = pd.crosstab(mt['user_id'], mt['aisle'])
cross.head(10) #展示此示前十个【表2】
# 进行主成分分析
pca = PCA(n_components=0.9)
data = pca.fit_transform(cross)
data.shape() #将看到数据维度明显变小
【表1】:
order_id | product_id | add_to_cart_order | reordered | product_name | aisle_id | department_id | user_id | eval_set | order_number | order_dow | order_hour_of_day | days_since_prior_order | aisle | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2 | 33120 | 1 | 1 | Organic Egg Whites | 86 | 16 | 202279 | prior | 3 | 5 | 9 | 8.0 | eggs |
1 | 26 | 33120 | 5 | 0 | Organic Egg Whites | 86 | 16 | 153404 | prior | 2 | 0 | 16 | 7.0 | eggs |
2 | 120 | 33120 | 13 | 0 | Organic Egg Whites | 86 | 16 | 23750 | prior | 11 | 6 | 8 | 10.0 | eggs |
3 | 327 | 33120 | 5 | 1 | Organic Egg Whites | 86 | 16 | 58707 | prior | 21 | 6 | 9 | 8.0 | eggs |
4 | 390 | 33120 | 28 | 1 | Organic Egg Whites | 86 | 16 | 166654 | prior | 48 | 0 | 12 | 9.0 | eggs |
5 | 537 | 33120 | 2 | 1 | Organic Egg Whites | 86 | 16 | 180135 | prior | 15 | 2 | 8 | 3.0 | eggs |
6 | 582 | 33120 | 7 | 1 | Organic Egg Whites | 86 | 16 | 193223 | prior | 6 | 2 | 19 | 10.0 | eggs |
7 | 608 | 33120 | 5 | 1 | Organic Egg Whites | 86 | 16 | 91030 | prior | 11 | 3 | 21 | 12.0 | eggs |
8 | 623 | 33120 | 1 | 1 | Organic Egg Whites | 86 | 16 | 37804 | prior | 63 | 3 | 12 | 3.0 | eggs |
9 | 689 | 33120 | 4 | 1 | Organic Egg Whites | 86 | 16 | 108932 | prior | 16 | 1 | 13 | 3.0 | eggs |
【表2】
aisle | air fresheners candles | asian foods | baby accessories | baby bath body care | baby food formula | bakery desserts | baking ingredients | baking supplies decor | beauty | beers coolers | ... | spreads | tea | tofu meat alternatives | tortillas flat bread | trail mix snack mix | trash bags liners | vitamins supplements | water seltzer sparkling water | white wines | yogurt |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
user_id | |||||||||||||||||||||
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
2 | 0 | 3 | 0 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | ... | 3 | 1 | 1 | 0 | 0 | 0 | 0 | 2 | 0 | 42 |
3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 4 | 1 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0 |
4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
5 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3 |
6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
7 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 |
8 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
9 | 0 | 0 | 0 | 0 | 6 | 0 | 2 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 19 |
10 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 |
标签:des 其它 numpy 指定 调用 降维 product lin nts
原文地址:https://www.cnblogs.com/chenxi188/p/11940190.html