如何查看python模块参数_【学习】python sklearn机器学习模块参数

本文详细介绍了Python机器学习库Sklearn中的预处理技术,包括数据标准化、归一化、范式归一化、离散化、二值化、特征工程等多个方面。通过实例展示了各种变换方法,如StandardScaler、MinMaxScaler、Normalizer等,以及它们的参数和使用技巧。此外,文章还涉及了缺失值插补、特征选择、模型转换、距离和相似度计算等内容,为理解并应用Sklearn提供详实的指导。
摘要由CSDN通过智能技术生成

中心主题.png

1、sklearn 预处理

5.3 数据变换

标准化

讲一下几个模块的区别:

数据标准化

StandardScaler (基于特征矩阵的列,将属性值转换至服从正态分布)

标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,将样本的特征值转换到同一量纲下

常用与基于正态分布的算法,比如回归

from sklearn import preprocessing

standard_scaler = preprocessing.StandardScaler()

X_train_standard = standard_scaler.fit_transform(X_train)

standard_scaler.mean_ #查看每列均值

standard_scaler.var_ #查看每列方差

数据归一化

MinMaxScaler (区间缩放,基于最大最小值,将数据转换到特定区间上,默认是0~1,也可以对feature_range参数进行设置)

提升模型收敛速度,提升模型精度

常见用于神经网络

from sklearn import preprocessing

min_max_scaler = preprocessing.MinMaxScaler((0,1)) #构建模型,如果不设置范围参数,则默认是0~1

X_train_minmax = min_max_scaler.fit_transform(X_train) #使用模型,肯定是以列进行训练哈

min_max_scaler.data_max_ #查看每列最大值

min_max_scaler.data_min_ #查看每列最小值

范式归一化(查看后面)

Normalizer (基于矩阵的行,将样本向量转换为单位向量)

其目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准

常见用于文本分类和聚类、logistic回归中也会使用,有效防止过拟合,目前没有遇到过。

from sklearn import preprocessing

normalizer = preprocessing.Normalizer(norm='l2')

X_normalized = normalizer.fit_transform(X)

标准化后的数据可以用numpy函数查看其均值和标准差,如果是标准化转换的话,均值和标准差肯定是0和1。

X_train_minmax.mean(axis=0) #每列的均值,为0

X_train_minmax.std(axis=0) #每列的标准差,为1

上面的min_max_scaler是已经训练好的缩放标准,每列的最大值和最小值都知道了,可以用这个标准来缩放其他数据(比如新来了一行数据)。

X_train_new_minmax = min_max_scaler.transform(X_train_new) #已经训练好的模型

非线性转换-转换为分位数(0~1之间)

from sklearn import preprocessing

quantile_transformer = preprocessing.QuantileTransformer(random_state=0)

X_train_trans = quantile_transformer.fit_transform(X_train)

非线性转换-高斯变换

有一些简单的变换,比如说指数变换、对数变换可以直接np函数处理,这里sklearn提供了高斯变换的模型,但是具体场景要应用变换的情况应该比较少,这里也不研究。

类别特征编码

from sklearn import preprocessing

enc = preprocessing.OrdinalEncoder()

enc.fit(X) #模型训练,实际上第一行全部编码为0,第n行编码为n-1,这样的一种对应关系,所以这里的X应当是需要编码的一个特征矩阵

enc.transform(X1) #上述模型,将X1编码,X1也是需要编码的特征矩阵

from sklearn import preprocessing

enc = preprocessing.OneHotEncoder()

enc.fit(X) # fit来学习编码

enc.transform(X1).toarray() # 进行编码

离散化

k-bins离散方法用k个等宽的bins把特征离散化

from sklearn import preprocessing

est = preprocessing.KBinsDiscretizer(n_bins=[3, 2, 2], encode='ordinal').fit(X) #针对三列数据,分别分为3\2\2个bins,最后编码采用0~n-1的编码方式

est.transform(X) #进行离散化

当然也会有分位数的离散化方式,可以采用KBinsDiscretizer来实现。

二值化

设定阈值,不超过阈值的就为0:

from sklearn import preprocessing

binarizer = preprocessing.Binarizer(threshold=0) #构建模型

binarizer.fit_transform(X)

生成多项式特征

构建多项式特征来增加模型复杂度:

from sklearn import preprocessing

poly = preprocessing.PolynomialFeatures(2) #构建二次多项式模型

poly.fit_transform(X)

X 的特征已经从(X1,X2)扩展为(1,X1,X1平方,2,X2,X2平方)。

也可以通过参数设置来构建比如像X1*X2的较差项。一般这种比较简单直接的函数也可以调用np实现。

5.4 缺失值插补

sklearn插补方法不同于dataframe自己的fillna方法,可以用训练好的模型来插补其他值,所以要看具体的需求。如果fillna可以解决那就更方便。

单变量插补

from sklearn import preprocessing

imp = preprocessing.Imputer(missing_values='NaN', strategy='mean', axis=0) #设定缺失值的识别、填补方法

imp.fit_transform(X) #用X来训练,同时插补X

imp.transform(X1) #用训练好的模型来插补X1

多变量插补

使用其他列的情况来插补自己列,暂时也用不到

5.5 无监督降维

PCA和非负矩阵因式分解NNF都可以降维,都在第二章无监督学习的机器学习模型中再介绍。

5.8 距离、相似度以及核函数

tips:距离和相似度计算肯定是按行向量算的哈

距离计算

距离的定义也有几种,可以在参数进行设置,如果不设置那就是平方距离

from sklearn import metrics

metrics.pairwise_distances(X, Y)

相似度

余弦相似度

from sklearn import metrics

metrics.pairwise.cosine_similarity(X, Y)

jaccard相似度在sklearn.metrics.jaccard_similarity_score 里面

核函数

这里不是对单一的X进行变换,而是对X和Y进行联合变换。具体要看公式,比如线性变换:

image.png

from sklearn import metrics

metrics.pairwise.linear_kernel(X, Y) #线性核函数

metrics.pairwise.polynomial_kernel(X, Y) #多项式核函数

metrics.pairwise.sigmoid_kernel(X, Y) #sigmoid核函数

metrics.pairwise.rbf_kernel(X, Y) #RBF核函数

metrics.pairwise.laplacian_kernel(X, Y) #拉普拉斯核函数

metrics.pairwise.chi2_kernel(X, Y) #卡方核函数

5.9 预测目标Y的转换

同样提供了二值化和编码的方法,但是这里要求只能输入series而不是多维的dataframe,所以更多是让你养成习惯,对特征进行编码就用OrdinalEncoder(),对标签进行编码就用LabelEncoder()

from sklearn import preprocessing

lb = preprocessing.LabelBinarizer()

lb.fit(Y)

le = preprocessing.LabelEncoder()

le.fit(Y)

1.13 特征选择(筛除列)

移除低方差特征

from sklearn import feature_selection

sel = feature_selection.VarianceThreshold(threshold=0.25)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值