sklearn是python自带工具吗_Python下的机器学习工具sklearn--数据预处理

1.数据标准化(Standardization or Mean Removal and Variance Scaling)

进行标准化缩放的数据均值为0,具有单位方差。

from sklearn importpreprocessing

X= [[1., -1., 2.],

[2., 0., 0.],

[0.,1., -1.]]

X_scaled=preprocessing.scale(X)printX_scaled#[[ 0. -1.22474487 1.33630621]#[ 1.22474487 0. -0.26726124]#[-1.22474487 1.22474487 -1.06904497]]

print X_scaled.mean(axis =0)print X_scaled.std(axis =0)#[ 0. 0. 0.]#[ 1. 1. 1.]

同样我们也可以通过preprocessing模块提供的Scaler(StandardScaler 0.15以后版本)工具类来实现这个功能:

scaler =preprocessing.StandardScaler().fit(X)printscaler#StandardScaler(copy=True, with_mean=True, with_std=True)

printscaler.mean_#[ 1. 0. 0.33333333]

print scaler.scale_#之前版本scaler.std_#[ 0.81649658 0.81649658 1.24721913]

printscaler.transform(X)#[[ 0. -1.22474487 1.33630621]#[ 1.22474487 0. -0.26726124]#[-1.22474487 1.22474487 -1.06904497]]

注:上述代码与下面代码等价

scaler =preprocessing.StandardScaler().fit_transform(X)printscaler#[[ 0. -1.22474487 1.33630621]#[ 1.22474487 0. -0.26726124]#[-1.22474487 1.22474487 -1.06904497]]

print scaler.mean(axis =0)#[ 0. 0. 0.]

print scaler.std(axis =0)#[ 1. 1. 1.]

2.数据规范化(Normalization)

把数据集中的每个样本所有数值缩放到(-1,1)之间。

X = [[1., -1., 2.],

[2., 0., 0.],

[0.,1., -1.]]

X_normalized=preprocessing.normalize(X)printX_normalized#[[ 0.40824829 -0.40824829 0.81649658]#[ 1. 0. 0. ]#[ 0. 0.70710678 -0.70710678]]

等价于:

normalizer =preprocessing.Normalizer().fit(X)printnormalizer#Normalizer(copy=True, norm='l2')

printnormalizer.transform(X)#[[ 0.40824829 -0.40824829 0.81649658]#[ 1. 0. 0. ]#[ 0. 0.70710678 -0.70710678]]

注:上述代码与下面代码等价

normalizer =preprocessing.Normalizer().fit_transform(X)printnormalizer#[[ 0.40824829 -0.40824829 0.81649658]#[ 1. 0. 0. ]#[ 0. 0.70710678 -0.70710678]]

3.二进制化(Binarization)

将数值型数据转化为布尔型的二值数据,可以设置一个阈值(threshold)。

X = [[1., -1., 2.],

[2., 0., 0.],

[0.,1., -1.]]

binarizer= preprocessing.Binarizer().fit(X) #默认阈值为0.0

printbinarizer#Binarizer(copy=True, threshold=0.0)

printbinarizer.transform(X)#[[ 1. 0. 1.]#[ 1. 0. 0.]#[ 0. 1. 0.]]

binarizer= preprocessing.Binarizer(threshold=1.1) #设定阈值为1.1

printbinarizer.transform(X)#[[ 0. 0. 1.]#[ 1. 0. 0.]#[ 0. 0. 0.]]

4.标签预处理(Label preprocessing)

4.1)标签二值化(Label binarization)

LabelBinarizer通常用于通过一个多类标签(label)列表,创建一个label指示器矩阵.

lb =preprocessing.LabelBinarizer()print lb.fit([1, 2, 6, 4, 2])#LabelBinarizer(neg_label=0, pos_label=1, sparse_output=False)

printlb.classes_#[1 2 4 6]

print lb.transform([1, 6])#[[1 0 0 0]#[0 0 0 1]]

4.2)标签编码(Label encoding)

le =preprocessing.LabelEncoder()print le.fit([1, 2, 2, 6])#LabelEncoder()

printle.classes_#[1 2 6]

print le.transform([1, 1, 2, 6])#[0 0 1 2]

print le.inverse_transform([0, 0, 1, 2])#[1 1 2 6]

也可以用于非数值类型的标签到数值类型标签的转化:

le =preprocessing.LabelEncoder()print le.fit(["paris", "paris", "tokyo", "amsterdam"])#LabelEncoder()

printlist(le.classes_)#['amsterdam', 'paris', 'tokyo']

print le.transform(["tokyo", "tokyo", "paris"])#[2 2 1]

print list(le.inverse_transform([2, 2, 1]))#['tokyo', 'tokyo', 'paris']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值