赞
踩
解释:通过一些转换函数,将特征数据转换成更适合算法模型的特征数据的过程
特征的单位或者大小相差较大,或者某特征的方法相比其他的特征要大出几个数量级,容易影响(支配)目标结果,使得一些算法无法学习到其它的特征
sklearn.preprocessing
定义:通过对原始数据进行变换,把数据映射到某一区间(默认为[0,1])
作用于每一列,max为一列的最大值,min为一列的最小值,X''为最终结果,mx,mi 分别为指定区间值,默认mx为1 ,mi为0
对以下数据进行运算,在dating.txt中保存的是“约会对象的数据”
import pandas as pd from sklearn.preprocessing import MinMaxScaler def minmax_demo(): """ 归一化 :return: """ # 1、获取数据 data = pd.read_csv("dating.txt") data = data.iloc[:, :3] #只需处理前三列,不需要对目标值进行处理 print("data:\n", data) # 2、实例化一个转换器类 transform = MinMaxScaler() #transform = MinMaxScaler(feature_range=[2,3]) #转化到[2,3]范围内 # 3、调用fit_transform进行转化 data_new = transform.fit_transform(data) print("data_new:\n", data_new) return None if __name__ == "__main__": minmax_demo()
定义:通过对原始数据进行变换,把数据变换到均值为0,标准差为1
4.数据计算实例
依旧是对在dating.txt中保存的是“约会对象的数据”进行运算
import pandas as pd from sklearn.preprocessing import MinMaxScaler, StandardScaler def stand_demo(): """ 标准化 :return: """ # 1、获取数据 data = pd.read_csv("dating.txt") data = data.iloc[:, :3] print("data:\n", data) # 2、实例化一个转换器类 transform = StandardScaler() #transform = StandardScaler(feature_range=[2,3]) # 3、调用fit_transform data_new = transform.fit_transform(data) print("data_new:\n", data_new) return None if __name__ == "__main__": stand_demo()
降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组不相关主变量的过程
在训练模型时我们都是用特征进行学习的,如果特征本身 存在问题或者特征之间相关性较强,对算法的学习预测影响较大
定义:数据中包含冗余或相关变量(或称特征、属性、指标等),特征选择旨在从原有特征中找出主要特征
from sklearn.feature_selection import VarianceThreshold def variance_demo(): """ 过滤低方差特征 :return: """ # 1、获取数据 data = pd.read_csv('factor_returns.csv') data = data.iloc[:,1:-2] # 选取需要进行筛选的特征 print('data:\n', data) # 2、实例化一个转换器类 #transform = VarianceThreshold() transform = VarianceThreshold(threshold=10) # 3、调用fit_transform data_new = transform.fit_transform(data) print("data_new\n", data_new, data_new.shape) return None if __name__ == "__main__": variance_demo()
反映变量之间相关关系密切程度的统计指标
公式:
from sklearn.feature_selection import VarianceThreshold from scipy.stats import pearsonr def variance_demo(): """ 低方差特征过滤 :return: """ # 1、获取数据 data = pd.read_csv('factor_returns.csv') print('data:\n', data) data = data.iloc[:,1:-2] print('data:\n', data) # 2、实例化一个转换器类 #transform = VarianceThreshold() transform = VarianceThreshold(threshold=10) # 3、调用fit_transform data_new = transform.fit_transform(data) print("data_new\n", data_new, data_new.shape) # 计算两个变量之间的相关系数 r = pearsonr(data["pe_ratio"],data["pb_ratio"]) print("相关系数:\n", r) return None if __name__ == "__main__": variance_demo()
如果特征与特征相关性很高,可采取以下方法:
from sklearn.decomposition import PCA def pca_demo(): """ PCA降维 :return: """ data = [[2,8,4,5], [6,3,0,8], [5,4,9,1]] # 1、实例化一个转换器类 transform = PCA(n_components=2) # 4个特征降到2个特征 # 2、调用fit_transform data_new = transform.fit_transform(data) print("data_new\n", data_new) transform2 = PCA(n_components=0.95) # 保留95%的信息 data_new2 = transform2.fit_transform(data) print("data_new2\n", data_new2) return None if __name__ == "__main__": pca_demo()
data_new
[[ 1.28620952e-15 3.82970843e+00]
[ 5.74456265e+00 -1.91485422e+00]
[-5.74456265e+00 -1.91485422e+00]]
data_new2
[[ 1.28620952e-15 3.82970843e+00]
[ 5.74456265e+00 -1.91485422e+00]
[-5.74456265e+00 -1.91485422e+00]]
探究用户对物品类别的喜好细分降维
# 1、获取数据 # 2、合并表,使得suer_id和aisle数据在同一个表中 # 3、找到suer_id和aisle之间的关系:交叉表,透视表 # 4、PAC降维 import pandas as pd # 1、获取数据 order_products = pd.read_csv('./instacart/order_products__prior.csv') products = pd.read_csv('./instacart/products.csv') orders = pd.read_csv('./instacart/orders.csv') aisles = pd.read_csv('./instacart/aisles.csv') # 2、合并表' # 合并aisles和products tab1 = pd.merge(aisles, products, on=["aisle_id", "aisle_id"]) tab2 = pd.merge(tab1, order_products, on=["product_id", "product_id"]) tab3 = pd.merge(tab2, orders, on=["order_id", "order_id"]) # 3、找到suer_id和aisle之间的关系 table = pd.crosstab(tab3["user_id"], tab3["aisle"]) data = table[:10000] #保存前10000条数据(数据太大,运行慢) # 4、PAC降维,去除冗余数据(大量的0) from sklearn.decomposition import PCA # 1)实例化一个转换器类 transfer = PCA(n_components=0.95) # 保留95%的信息 # 2)调用fit_transform data_new = transfer.fit_transform(data) #(10000, 42),由134个特征降维到42个
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。