scikit-learn学习之预处理(preprocessing)一

一、标准化,均值去除和按方差比例缩放

  数据集的标准化:当个体特征太过或明显不遵从高斯正态分布时,标准化表现的效果较差。实际操作中,经常忽略特征数据的分布形状,移除每个特征均值,划分离散特征的标准差,从而等级化,进而实现数据中心化。

  scale 

1 >>> from sklearn import preprocessing
2 >>> import numpy as np
3 >>> X = np.array([[1., -1., 2.], [2., 0., 0.], [0., 1., -1.]])
4 >>> X_scaled = preprocessing.scale(X)
5 >>> X_scaled
6 array([[ 0.        , -1.22474487,  1.33630621],
7        [ 1.22474487,  0.        , -0.26726124],
8        [-1.22474487,  1.22474487, -1.06904497]])

  注:scaled data 的均值为0,方差为1。

1 >>> X_scaled.mean(axis=0)  # column mean
2 array([ 0.,  0.,  0.])
3 >>> X_scaled.std(axis=0)
4 array([ 1.,  1.,  1.])

  StandardScaler

 1 >>> scaler = preprocessing.StandardScaler().fit(X)
 2 >>> scaler
 3 StandardScaler(copy=True, with_mean=True, with_std=True)
 4 >>> scaler.mean_
 5 array([ 1.        ,  0.        ,  0.33333333])
 6 >>> scaler.std_
 7 array([ 0.81649658,  0.81649658,  1.24721913])
 8 >>> scaler.transform(X, 0)
 9 array([[ 0.        , -1.22474487,  1.33630621],
10        [ 1.22474487,  0.        , -0.26726124],
11        [-1.22474487,  1.22474487, -1.06904497]])
12 >>> scaler.transform([[-1., 1., 0.]], 0.)  #scale the new data
13 array([[-2.44948974,  1.22474487, -0.26726124]])

  

  注:scale和StandardScaler可以用于回归模型中的目标值处理。

1.scaling features to a range

  MinMaxScaler(最小最大值化)

  公式:X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0)) ; X_scaler = X_std / (max - min) + min

  训练过程(fit_transform())

1 >>> scaler = preprocessing.StandardScaler().fit(X,None)
2 >>> scaler = preprocessing.StandardScaler().fit(X)
3 >>> X_train = np.array([[1., -1., 2.], [2., 0., 0.], [0., 1., -1.]])
4 >>> min_max_scaler = preprocessing.MinMaxScaler()
5 >>> X_train_minmax = min_max_scaler.fit_transform(X_train)
6 >>> X_train_minmax
7 array([[ 0.5       ,  0.        ,  1.        ],
8        [ 1.        ,  0.5       ,  0.33333333],
9        [ 0.        ,  1.        ,  0.        ]])

  测试过程 (transform())

1 >>> X_test = np.array([[ -3., -1., 4.]])
2 >>> X_test_minmax = min_max_scaler.transform(X_test)
3 >>> X_test_minmax
4 array([[-1.5       ,  0.        ,  1.66666667]])

2.Nomalization

  向量空间模型(VSM)的基础,用于文本分类和聚类处理

  normalize

  sklearn.preprocessing.normalize(X, norm=‘l2‘, axis=1, copy=Ture)

    l1: 标准化每个非0样本(row,axis=0) l2:标准化每个非0特征(column,axis=1)

  Normalizer

1 >>> X
2 array([[ 1., -1.,  2.],
3        [ 2.,  0.,  0.],
4        [ 0.,  1., -1.]])
5 >>> normalizer = preprocessing.Normalizer().fit(X)
6 >>> normalizer
7 Normalizer(copy=True, norm=‘l2‘)

  注:normalizer实例可以作为其他数据的转换器

3.Binarization

  feature binarization是将数值型的特征值转换为布尔值,可以用于概率估计

1 >>> binarizer = preprocessing.Binarizer().fit(X)
2 >>> binarizer
3 Binarizer(copy=True, threshold=0.0)
4 >>> binarizer.transform(X)
5 array([[ 1.,  0.,  1.],
6        [ 1.,  0.,  0.],
7        [ 0.,  1.,  0.]])

4.Encoding categorical features

  类别型特征用整数值进行编码,OneHotEncoder将m种值转换为m个二元位,其中只有一位是活跃的。

1 >>> enc = preprocessing.OneHotEncoder()
2 >>> enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])
3 OneHotEncoder(categorical_features=‘all‘, dtype=<type ‘float‘>,
4        n_values=‘auto‘, sparse=True)
5 >>> enc.transform([[0, 1, 3]]).toarray()
6 array([[ 1.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  1.]])  # from letf to right,the first ‘1,0‘ represent 0

  默认情况下,每个特征有几种值是由数据集确定的。可以通过n_values参数对其进行显性指定。

时间: 2024-10-19 01:37:07

scikit-learn学习之预处理(preprocessing)一的相关文章

机器学习-scikit learn学习笔记

scikit-learn官网:http://scikit-learn.org/stable/ 通常情况下,一个学习问题会包含一组学习样本数据,计算机通过对样本数据的学习,尝试对未知数据进行预测. 学习问题一般可以分为: 监督学习(supervised learning) 分类(classification) 回归(regression) 非监督学习(unsupervised learning) 聚类(clustering) 监督学习和非监督学习的区别就是,监督学习中,样本数据会包含要预测的标签(

Query意图分析:记一次完整的机器学习过程(scikit learn library学习笔记)

所谓学习问题,是指观察由n个样本组成的集合,并根据这些数据来预测未知数据的性质. 学习任务(一个二分类问题): 区分一个普通的互联网检索Query是否具有某个垂直领域的意图.假设现在有一个O2O领域的垂直搜索引擎,专门为用户提供团购.优惠券的检索:同时存在一个通用的搜索引擎,比如百度,通用搜索引擎希望能够识别出一个Query是否具有O2O检索意图,如果有则调用O2O垂直搜索引擎,获取结果作为通用搜索引擎的结果补充. 我们的目的是学习出一个分类器(classifier),分类器可以理解为一个函数,

Learning How to Learn学习笔记(转)

add by zhj: 工作中提高自己水平的最重要的一点是——快速的学习能力.这篇文章就是探讨这个问题的,掌握了快速学习能力的规律,你自然就有了快速学习能力了. 原文:Learning How to Learn学习笔记 强力推荐的Coursera课程 “learning how to learn”. 这门课的一个主要观点是 diffuse mode thinking (如常规的身体锻炼) 对提高思考和学习能力有很大帮助.我实践了一两个月,感觉效果很好.工作中遇到的问题都更容易梳理解决.我们目标只

Python之扩展包安装(scikit learn)

scikit learn 是Python下开源的机器学习包.(安装环境:win7.0 32bit和Python2.7) Python安装第三方扩展包较为方便的方法:easy_install + packages name 在官网 https://pypi.python.org/pypi/setuptools/#windows-simplified 下载名字为 的文件. 在命令行窗口运行 ,安装后,可在python2.7文件夹下生成Scripts文件夹.把路径D:\Python27\Scripts

scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类

scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类数据集 fetch_20newsgroups #-*- coding: UTF-8 -*- import numpy as np from sklearn.pipeline import Pipeline from sklearn.linear_model import SGDClassifier from sklearn.grid_search import GridSearchCV from sk

Linear Regression with Scikit Learn

Before you read ?This is a demo or practice about how to use Simple-Linear-Regression in scikit-learn with python. Following is the package version that I use below: The Python version: 3.6.2 The Numpy version: 1.8.0rc1 The Scikit-Learn version: 0.19

Scikit Learn安装教程

Windows下安装scikit-learn 准备工作 Python (>= 2.6 or >= 3.3), Numpy (>= 1.6.1) Scipy (>= 0.9), Matplotlib(可选). NumPy NumPy系统是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)). Scipy SciPy是一款方便.易于使用

Scikit Learn

安装pip 代码如下:# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate# tar -xzvf pip-1.5.4.tar.gz# cd pip-1.5.4# python setup.py install 输入pip如果能看到信息证明安装成功. 安装scikit-learn

Spark技术在京东智能供应链预测的应用——按照业务进行划分,然后利用scikit learn进行单机训练并预测

3.3 Spark在预测核心层的应用 我们使用Spark SQL和Spark RDD相结合的方式来编写程序,对于一般的数据处理,我们使用Spark的方式与其他无异,但是对于模型训练.预测这些需要调用算法接口的逻辑就需要考虑一下并行化的问题了.我们平均一个训练任务在一天处理的数据量大约在500G左右,虽然数据规模不是特别的庞大,但是Python算法包提供的算法都是单进程执行.我们计算过,如果使用一台机器训练全部品类数据需要一个星期的时间,这是无法接收的,所以我们需要借助Spark这种分布式并行计算