1、特征选择
特征选择原因?
冗余:部分特征的相关度高,容易消耗计算性能
噪声:部分特征对预测结果有影响
特征选择是什么?
特征选择就是单纯的从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值、也可不改变值,但是选择后的特征维数肯定比选择前小,毕竟我们只选择了其中的一部分特征。
主要方法(三大武器)
Filter(过滤式):VarlanceThreshold
Embedded(嵌入式):正则化、决策树
Wrapper(包裹式)
其他特征选择方法:神经网络
2、sklearn特征选择API:sklearn.feature_selection.VarianceThreshold
from sklearn.feature_selection import VarianceThreshold
def variance():
"""
删除低方差特征
:return:
"""
var = VarianceThreshold()
data = var.fit_transform(
[
[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]
]
)
print(data)
打印结果:
3、主成分分析API:sklearn.decomposition.PCA
PCA是什么?
本质:PCA是一种分析、简化数据集的技术
目的:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息
作用:可以削减回归分析或者聚类分析中特征的数量
from sklearn.decomposition import PCA
def pca():
"""
主成分分析数据
:return:
"""
pc = PCA(n_components=None)
data = pc.fit_transform(
[
[2, 8, 4, 5], [6, 3, 0, 8], [5, 4, 9, 1]
]
)
print(data)
打印结果:
4、主成分分析案例
探究:用户对物品类别的喜好细分降维
直接上代码,数据资源链接:https://pan.baidu.com/s/1cJylt-FRyJo7QKCG9DLttQ 密码:zniv
# -*- coding: utf-8 -*-
import pandas as pd
from sklearn.decomposition import PCA
# 读取数据
# 订单信息 order_id, product_id
prior = pd.read_csv("./instacart/order_products__prior.csv")
# 商品表 product_id, aisles_id
products = pd.read_csv("./instacart/products.csv")
# 用户与订单表 user_id, order_id
orders = pd.read_csv("./instacart/orders.csv")
# 商品名称表 aisle_id, aisles
aisles = pd.read_csv("./instacart/aisles.csv")
# 合并四张表到一张表
mg = pd.merge(prior, products, on=["product_id", "product_id"])
mg = pd.merge(mg, orders, on=["order_id", "order_id"])
merge_csv = pd.merge(mg, aisles, on=["aisle_id", "aisle_id"])
print(merge_csv.head(5))
# 将数据变成行:用户, 列:物品类别名称 分组 交叉表; 特殊的分组
user_aisle = pd.crosstab(merge_csv["user_id"], merge_csv["aisle"])
print(user_aisle.head(5))
# 进行主成分分析
pc = PCA(n_components=0.9)
data = pc.fit_transform(user_aisle)
print(data)
print(data.shape)