# 利用scikit-learn进行机器学习：特征工程（一）数据预处理

scikit-learn是Python中专门针对机器学习应用而发展起来的一款优秀的开源机器学习框架。从scikit-learn给出的官方文档我们可以看到，scikit-learn将机器学习内容分为六大块：分类、回归、聚类、降维、模型选择与评估以及数据预处理。其中降维和数据预处理的内容均可视为特征工程的内容。下面就开始小编的特征工程第一讲：数据预处理。

>>>>

fromsklearnimportpreprocessing

importnumpyasnp

X_train=np.array([[1.,-1.,2.],[2.,0.,0.],[0.,1.,-1.]])

X_scaled=preprocessing.scale(X_train)

X_scaled

array([[ 0. ..., -1.22..., 1.33...],[ 1.22..., 0. ..., -0.26...], [-1.22..., 1.22..., -1.06...]])

X_scaled.mean(axis=)

array([ 0., 0., 0.])

X_scaled.std(axis=)

array([ 1., 1., 1.])

scaler=preprocessing.StandardScaler().fit(X_train)

scalerStandardScaler(copy=True, with_mean=True, with_std=True)

scaler.mean_

array([ 1. ..., 0. ..., 0.33...])

scaler.scale_

array([ 0.81..., 0.81..., 1.24...])

scaler.transform(X_train)

array([[ 0. ..., -1.22..., 1.33...],[ 1.22..., 0. ..., -0.26...],[-1.22..., 1.22..., -1.06...]])

X_test=[[-1.,1.,0.]]

scaler.transform(X_test)

array([[-2.44..., 1.22..., -0.26...]])

X_train=np.array([[1.,-1.,2.],[2.,0.,0.],[0.,1.,-1.]])

min_max_scaler=preprocessing.MinMaxScaler()

X_train_minmax=min_max_scaler.fit_transform(X_train)

X_train_minmaxarray([[ 0.5,0.,1.],[1.,0.5,0.33333333],[ 0.,1.,0.]])

>>>>

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

X_normalized=preprocessing.normalize(X,norm='l2')

X_normalized

array([[ 0.40..., -0.40..., 0.81...],[ 1. ..., 0. ..., 0. ...],[ 0. ..., 0.70..., -0.70...]])

normalizer=preprocessing.Normalizer().fit(X)

normalizer

normalizerNormalizer(copy=True, norm='l2')

normalizer.transform(X)

array([[ 0.40..., -0.40..., 0.81...],[ 1. ..., 0. ..., 0. ...],[ 0. ..., 0.70..., -0.70...]])

normalizer.transform([[-1.,1.,0.]])

array([[-0.70..., 0.70..., 0. ...]])

>>>>

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

binarizer=preprocessing.Binarizer().fit(X)

binarizerBinarizer(copy=True, threshold=0.0)

binarizer.transform(X)

array([[1.,0.,1.],[ 1.,0.,0.],[0.,1.,0.]])

binarizer=preprocessing.Binarizer(threshold=1.1)

binarizer.transform(X)

array([[ 0.,0.,1.],[ 1.,0.,0.],[ 0.,0.,0.]])

>>>>

enc=preprocessing.OneHotEncoder()

enc.fit([[,,3],[1,1,],[,2,1],[1,,2]])

OneHotEncoder(categorical_features='all', dtype=,handle_unknown='error', n_values='auto', sparse=True)

enc.transform([[,1,3]]).toarray()array([[ 1., 0., 0., 1., 0., 0., 0., 0., 1.]])

>>>>

importnumpyasnp

fromsklearn.preprocessingimportImputer

imp=Imputer(missing_values='NaN',strategy='mean',axis=)

imp.fit([[1,2],[np.nan,3],[7,6]])

Imputer(axis=0, copy=True, missing_values='NaN', strategy='mean', verbose=0)>X=[[np.nan,2],[6,np.nan],[7,6]]

print(imp.transform(X))

[[ 4. 2.][ 6. 3.666][ 7. 6.]]

>>>>

http://scikit-learn.org/stable/modules/preprocessing.html#preprocessing

0 条评论

• ### 如何使用java代码通过JDBC访问Sentry环境下的Hive

温馨提示：要看高清无码套图，请使用手机打开并单击图片放大查看。 Fayson的github：https://github.com/fayson/cdhproje...

• ### IBM 招聘数据科学家，看重的是哪些技能和特质？

编者按：求职者有时会问 IBM 如何定义“数据科学家”这一职位。这是一个重要的问题，因为市场需要越来越多的数据科学家，IBM 分析师Seth Dobrin 在本...

• ### 动态语言的灵活性是把双刃剑：以 Python 语言为例

新媒体管家 关键时刻，第一时间送达！ 本文有些零碎，总题来说，包括两个问题：（1）可变对象（最常见的是list dict）被意外修改的问题，（2）对参数（par...

• ### 专题一：预处理数据（使用sklearn-preprocessing）

数据集的标准化(Standardization)对scikit-learn中实现的大多数机器学习算法来说是常见的要求 。如果个别特征或多或少看起来不是很像标准正...

• ### 数据预处理

注：关于数据预处理的相关问题，若本文未涉及可在下方留言告诉我，我会在文章中进行补充的

• ### sklearn-preprocessing使用

将数据按期属性（按列进行）减去其均值，并处以其方差。得到的结果是，对于每个属性/每列来说所有数据都聚集在0附近，方差为1。

• ### 机器学习第3天：多元线性回归

简单线性回归：影响Y的因素唯一，只有一个。 多元线性回归：影响Y的因数不唯一，有多个。

• ### 正态分布

比如你可能会问班里的考试成绩是怎样的？这里其实指的是大部分同学的成绩如何。以下图为例，在正态分布中，大部分人的成绩会集中在中间的区域，少部分人处于两头的位置。正...

本文首发于简书——何时夕，搬运转载请注明出处，否则将追究版权责任。交流qq群：859640274