数据预处理(1)——标准化(Standardization)与归一化(Normalization)

In [19]:
 
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
np.set_printoptions(precision=4)
×
In [20]:
x
from sklearn import preprocessing
×
In [21]:
 
dataSet_df = pd.read_table('datingTestSet2.txt', names=['feature_1', 'feature_2', 'feature_3', 'label'])
dataSet_df
×
Out[21]:
feature_1feature_2feature_3label
0409208.3269760.9539523
1144887.1534691.6739042
2260521.4418710.8051241
37513613.1473940.4289641
4383441.6697880.1342961
57299310.1417401.0329551
6359486.8307921.2131923
74266613.2763690.5438803
8674978.6315770.7492781
93548312.2731691.5080533
10502423.7234980.8319171
11632758.3858791.6694851
1255694.8754350.7286582
13510524.6800980.6252241
147737215.2995700.3313511
15436731.8894610.1912831
16613647.5167541.2691641
176967314.2391950.2613331
18156690.0000001.2501852
192848810.5285551.3048443
2064873.5402650.8224832
21377082.9915510.8339201
22226205.2978650.6383062
23287826.5938030.1871083
24197392.8167601.6862092
253678812.4582580.6496173
2657410.0000001.6564182
27285679.9686480.7312323
2868081.3648380.6401032
29416110.2304531.1519961
9705371112.1497471.3890883
971643719.1496780.8749051
97292899.6665761.3703302
973606133.6201100.2877671
974183385.2388001.2536462
9752284514.7157821.5037583
9767467614.4457401.2111601
9773414313.6095280.3642403
978141533.1415850.4242802
97993270.0000000.1209472
980189910.4547501.0332802
98191930.5103100.0163952
98222853.8641710.6163492
98394936.7240210.5630442
98423714.2893750.0125632
985139630.0000001.4370302
98622993.7336170.6982692
98752622.0025891.3801842
98846592.5026270.1842232
989175826.3821290.8765812
990277508.5467410.1287063
99198682.6949770.4328182
992183333.9512560.3333002
99337809.8561830.3291812
994181902.0689620.4299272
995111453.4106270.6318382
996688469.9747150.6697871
9972657510.6501020.8666273
998481119.1345280.7280453
999437577.8826011.3324463

1000 rows × 4 columns

In [33]:
 
# ----------------------
# 标准化
'''
公式为:(X-mean)/std  计算时对每个属性/每列分别进行。
将数据按期属性(按列进行)减去其均值,并处以其方差。得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1。
'''
standardize_x = preprocessing.scale(dataSet_df.iloc[:, :-1].values)
standardize_x
×
Out[33]:
array([[ 0.3319,  0.4166,  0.2452],
       [-0.8725,  0.1399,  1.6939],
       [-0.3455, -1.2067, -0.0542],
       ..., 
       [-0.3217,  0.9643,  0.0695],
       [ 0.6596,  0.607 , -0.2093],
       [ 0.4612,  0.3118,  1.0068]])
In [52]:
 
int(standardize_x.mean())
×
Out[52]:
0
In [53]:
 
int(standardize_x.var())
×
Out[53]:
1
In [34]:
 
# ----------------------
# 归一化
'''
1、把数变为[0,1]之间的小数
主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。
2、把有量纲表达式变为无量纲表达式
 归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。 
'''
normalize_x = preprocessing.normalize(dataSet_df.iloc[:, :-1].values)
normalize_x
×
Out[34]:
array([[  1.0000e+00,   2.0349e-04,   2.3313e-05],
       [  1.0000e+00,   4.9375e-04,   1.1554e-04],
       [  1.0000e+00,   5.5346e-05,   3.0904e-05],
       ..., 
       [  1.0000e+00,   4.0076e-04,   3.2611e-05],
       [  1.0000e+00,   1.8986e-04,   1.5133e-05],
       [  1.0000e+00,   1.8014e-04,   3.0451e-05]])
In [48]:
 
len(normalize_x[(normalize_x >= 0)])
×
Out[48]:
3000
In [54]:
 
len(normalize_x[( normalize_x <= 1)])
×
Out[54]:
3000
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值