sklearn.preprocessing
数据填充(sklearn.preprocessing.Imputer)
收集到的数据总会遇到一些残缺值,如果不想丢弃这个样本,就只能想办法最数据进行填充了,一般的填充方法有:向上填充、向下填充、均值填充、中位数填充等等。填充数据可以使用sklearn中的类,也可以使用pandas里面的方法~
Imputer(missing_values=’NaN’, strategy=’mean’, axis=0, verbose=0, copy=True)
missing_values='NaN'
用于匹配缺失值strategy='mean'
填充策略,[‘mean’, ‘median’, ‘most_frequent’],均值、中位数、众数。axis=0
填充方向,默认为列verbose=0
控制imputer的详细程度copy=True
是否拷贝
数据标准化(skleaarn.preprocessing.StandardScaler)
z = (x - u) / s ,转换使得数据均值为0,方差为1。
StandardScaler(copy=True, with_mean=True, with_std=True)
with_mean=True
若为False,则 u=0with_std=True
若为False,则 z=1
数据归一化(sklearn.preprocessing.MinMaxScaler)
缩放数据到一定范围。
MinMaxScaler(feature_range=(0, 1), copy=True)
独热编码
对非数值型的数据进行编码,根据数据每一特征的值的种类,将其生成向量。1~k
- sklearn.preprocessing.OneHotEncoder()
OneHotEncoder(n_values=’auto’, categorical_features=’all’, categories=’auto’, dtype=<class‘numpy.float64’>, sparse=True, handle_unknown=’error’)
n_values
每个特征使用几维数据,默认由数据集自动决定categorial_features
指定对哪些特征进行编码,默认为传入的所有值,通过bool值或索引进行指定(e.g. [True, True, False] / [0, 1])categories
每个特征的类别dtype
编码数值格式sparse
默认返回稀疏矩阵,设置为False可直接返回array,否则需要.toarray()
转换handle_unknown
‘error’/‘ignore’,遇到未知类别,返回错误/忽略
1 | from sklearn.preprocessing import OneHotEncoder |
使用OneHotEncoder编码后,返回为一个数组(np.array),且编码后的数据会丢失原来的列名称。
- pandas.get_dummies()
get_dummies()
只对输入数据中类型为 object 的数据进行独热编码 (故使用该方法进行独热编码时可以不分离出数值型特征) 。对数据进行编码后,返回 pd.DataFrame ,并且可以根据特征中不同的值自动生成列名称。getdummies(data, prefix=None, prefix_sep=’‘, dummy_na=False, columns=None, sparse=False, drop_first=False, dtype=None)
prefix
列表或这字符串用于添加列名称prefix_sep
字符串/列表/字典,基于prefix,用作分隔符dummy_na
默认’False’忽略空值,设置为’True’则新增列用于指示空值columns
需要编码的列名称drop_first
是否删除特征的第一类
1 | import pandas as pd |
标签编码(sklearn.preprocessing.OrdinalEncoeder)
对非数值型的数据进行编码,根据数据每一特征的值的种类,将其生成向量。1~1
若使用 LabelEncoder,则每次只能对一列数据进行编码,输入的数据也需要是一维,本身是适用于对样本标签进行编码。
特征降维-主成分分析法PCA(sklearn.decomposition.PCA)
特征降维能在尽可能多的保留数据信息的情况下减少特征的数量,在数据样本不足而特征值过多的时可以是模型得到较好的解,还能提高模型泛化能力……此外,还能减少模型的训练成本,加快运算速度。
PCA(n_components=None, copy=True, whiten=False, svd_solver=’auto’, tol=0.0, iterated_power=’auto’, random_state=None)
n_components=None
期望保留的主成分个数。为整数时,即为保留的个数;若为小于1的正整数,则保留使得方差百分比大于该值的最少数目的成分。还可以传入字符型参数,比如’mle’,将自动选取特征个数n,使得满足所要求的方差百分比。copy=True
是否复制原始数据。whiten=False
白化,是否要使得每个特征具有相同的方差。svd_solver='auto'
string {‘auto’,’full’,’arpack’,’randomized’}.
(老实说,下面这一段是谷歌翻译得来的,还没有时间细究,因为我也还不太明白)
auto:解析器由基于X.shape和n_components的默认策略选择:如果输入数据大于500x500且要提取的组件数低于数据最小维数的80%,那么效率更高’随机化’方法已启用。否则,计算精确的完整SVD并随后截断。
full:运行完全完整的SVD通过scipy.linalg.svd调用标准LAPACK解算器并通过后处理选择组
arpack:运行SVD截断为n_components通过scipy.sparse.linalg.svds调用ARPACK解算器。它严格要求0= 0,或’auto’,由svd_solver ==’randomized’计算的幂方法的迭代次数。 random_state=None
(略)
1 | from sklearn.decomposition import PCA |
(完)