本文将陆续汇总特征处理常见方法
StandardScaler:标准化
通过求z-score,求数据转换为正态分布,常用于回归等基于正态分布的算法
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler().fit(X_train)
standardized_X = scaler.transform(X_train)
standardized_X_test = scaler.transform(X_test)
Normalizer正则化
常见于难以收敛的场景,防止过拟合。
应用:神经网络,文本分类,聚类,逻辑回归,
基于矩阵的行,将样本向量转换为单位向量,样本向量在点乘运算或核函数计算相似性时,拥有统一的标准
from sklearn.preprocessing import Normalizer
scaler = Normalizer().fit(X_train)
normalized_X = scaler.transform(X_train)
normalized_X_test = scaler.transform(X_test)
min-max归一化
将数据转换为0-1之间,提升收敛速度和精度
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler().fit(X_train)
normalized_X = scaler.transform(X_train)
normalized_X_test = scaler.transform(X_test)
Binarizer二值化
对二维数据处理,如果是一个特征(series),需要reshape为二维的
from sklearn.preprocessing import Binarizer
# 小于等于10的置为0,大于10的置为1
binarizer = Binarizer(threshold=10).fit(X)
binary_X = binarizer.transform(X)
LabelEncoder类别数值化
from sklearn.preprocessing import LabelEncoder
# 设置类别
le = LabelEncoder().fit(['male','female'])
encoded_x = le.transform(x)
x=le.fit_transform(x)# 也可以一步到位
OneHotEncoder类别向量化
将每一个元素转为向量,只有1个值为1,其余为0,长度为特异值的个数
from sklearn.preprocessing import OneHotEncoder
import numpy as np
tr=OneHotEncoder()
x=np.array(['hehe','haha','hehe','gg']).reshape(-1,1)# 对象需要是二维的
res=tr.fit_transform(x)
# hehe转为[0,0,1],此处共有3种类别
PolynomialFeatures特征构造
通过多项式对特征进行构造(用途?)
比如(a,b)->(1,a,b,ab,a2,b2,ab2,ba2,...)
from sklearn.preprocessing import PolynomialFeatures
# 指定多项式最高幂次
# interaction_only:True表示只有交叉项
# include_bias:True表示允许0次幂(即都为1的列)
poly = PolynomialFeatures(5,interaction_only=True,include_bias=False)
poly.fit_transform(np.arange(6).reshape(3, 2))
Imputer空值处理
from sklearn.preprocessing import Imputer
# strategy:mean/median/most_frequent
imp = Imputer(missing_values=0, strategy='mean', axis=0)
imp.fit_transform(X_train[,col])
PCA主成分分析
用于降维
from sklearn.decomposition import PCA
pca = PCA(n_components=0.95)
pca.fit_transform(X)
print(pca.explained_variance_ratio_)# 解释方差比
print(pca.singular_values_)# 特征值
KMeans聚类
from sklearn.cluster import KMeans
k_means = KMeans(n_clusters=3, random_state=0)
k_means.fit_predict(X)
网友评论