机器学习----数据特征预处理---数据降维
原标题:机器学习----数据特征预处理---数据降维
原文来自:CSDN 原文链接:https://blog.csdn.net/qq_36853469/article/details/103385448
注意这里的意思不是说将多维数据降为低维数据,比如说,将三维降为二维这种。
而是减少相关度低的特征数据。
冗余: 部分特征的相关度高,容易消耗计算性能
噪声: 部分特征对预测结果有影响。
主要方法:
Filter(过滤式):VarianceThreshold
Embeded(嵌入式):正则化,决策树
Wrapper(包裹式)
神经网络==> 后续深入
API:
sklearn.feature_selection.VarianceThreshold(threshold=0.0)
删除所有低方差特征
Variance.fit_transform(X)
X:numpy array 格式的数据
返回值: 训练集差异低于threshold的特征将会被删除
默认值是保留所有非零方差特征,即删除所有样本中具有相同值的特征。
from sklearn.feature_selection import VarianceThreshold from sklearn.decomposition import PCA import pandas as pd def filter_Variance(): ''' 删除低方差的数据 指定阈值方差 调用fit_transform :return: ''' var = VarianceThreshold(threshold=1.0) data = var.fit_transform([[0,2,0,3],[0,1,4,3],[0,1,1,3]]) print(data) ''' 默认 threshold=0.0 [[2 0] [1 4] [1 1]] 取方差为1.0 [[0] [4] [1] ] ''' return None
本质:PCA是一种分析、简化数据集的技术
目的:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息
作用:可以削减回归分析或者聚类分析中特征的数量。
特征数量达到上百的时候,考虑数据的简化(即PCA)
API:skelarn.decomposition
PCA(n_compoents = None):当n_compoents为小数时,降维到百分比(0-1之间,90%-95%最好);整数时降到相应个数
将数据分解为较低维度空间
PCA.fit_transform(X)
返回值:转换后指定维度的array
def pca(): ''' 主成分分析,数据特征降维 指定减少后的维度 调用fit_transform :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) ''' [[ 1.28620952e-15 3.82970843e+00] [ 5.74456265e+00 -1.91485422e+00] [-5.74456265e+00 -1.91485422e+00]] ''' return None
数据集见: https://www.kaggle.com/c/instacart-market-basket-analysis/data
products 商品信息 product_id,aisle_id,department_id
order_products__prior 订单与商品的信息 order_id,product_id,
orders 用户的订单信息: order_id,user_id,
aisles 商品所属具体物品类别 aisle_id
products ,order_products_prior,以及两表合并的数据如图:
def groupByUser(): ''' products 商品信息 product_id,aisle_id,department_id order_products__prior 订单与商品的信息 order_id,product_id, orders 用户的订单信息: order_id,user_id, aisles 商品所属具体物品类别 aisle_id 数据降维,将用户分类 :return: ''' #数据处理:先读取四张表 products = pd.read_csv(r"./files/products.csv") prior = pd.read_csv(r'./files/order_products__prior.csv') oriders = pd.read_csv(r'./files/orders.csv') aisles = pd.read_csv(r"./files/aisles.csv") #将四张表数据合并为一张表 # print(products.head()) # print(prior.head()) df1 = pd.merge(products,prior,left_on="product_id",right_on="product_id") # print(df1.head()) df2 = pd.merge(df1,oriders,on=["order_id","order_id"]) df3 = pd.merge(df2,aisles,on=["aisle_id","aisle_id"]) print(df3.head())
数据交叉
#交叉表:特殊的分组工具 cross = pd.crosstab(df3.user_id,df3.aisle) print(cross.head()) #每个人买了多少个某个商品 10行 134个样本特征
进行主成分分析
pca = PCA(n_components=0.9) data = pca.fit_transform(cross) print(data) print(data.shape) #27个特征
免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。
合作及投稿邮箱:E-mail:editor@tusaishared.com
热门资源
Python 爬虫(二)...
所谓爬虫就是模拟客户端发送网络请求,获取网络响...
TensorFlow从1到2...
原文第四篇中,我们介绍了官方的入门案例MNIST,功...
TensorFlow从1到2...
“回归”这个词,既是Regression算法的名称,也代表...
TensorFlow2.0(10...
前面的博客中我们说过,在加载数据和预处理数据时...
机器学习中的熵、...
熵 (entropy) 这一词最初来源于热力学。1948年,克...
智能在线
400-630-6780
聆听.建议反馈
E-mail: support@tusaishared.com