目录
本关任务:进行数据的极大极小归一化处理。
为了完成本关任务,你需要掌握:
通常情况下,在建模之前,都需要对数据进行标准化处理,以消除量纲的影响。如果对未标准化的数据直接进行建模,可能会导致模型对数值大的变量学习过多,而对数值小的变量训练不够充分,往往模型效果会不好。常用的数据标准化方法有最大最小归一化、均值方差标准化、小数定标法、定量特征二值化等。
最大最小归一化,顾名思义,就是利用数据列中的最大值和最小值进行标准化处理,标准化后的数值处于[0,1]
之间,计算方式为数据与该列的最小值作差,再除以极差。
引入库
用户使用 numpy
库进行基本的科学运算,pandas
库是一个强大的分析结构化数据的工具集,以 numpy
为基础。
import numpy
创建数据
利用随机数种子,每次生成的随机数相同方便进行数据检测。pd.DataFrame
类似多维数组,每列数据可以是不同类型。
将数据的最大最小值记录下来,并通过Max-Min
作为基数(即 Min = 0,Max = 1)进行数据的归一化处理。
根据提示,在右侧编译器中的 begin-end 代码块内完成极小极大归一化函数代码。
平台会对你编写的代码进行测试:
预期输出:
value1 value2 value1_n value2_n
0 13.071792 20.708234 0.673810 0.155708
1 2.300139 74.246953 0.081684 0.761993
2 19.005657 39.215413 1.000000 0.365288
3 9.643828 18.225652 0.485372 0.127595
4 17.449491 74.353941 0.914456 0.763205
开始你的任务吧,祝你成功!
- import numpy as np
- import pandas as pd
-
- np.random.seed(1000)
- df = pd.DataFrame({"value1": np.random.rand(10) * 20,
- 'value2': np.random.rand(10) * 100})
-
-
- # 创建函数,标准化数据
- def data_norm(df, *cols):
- df_n = df.copy()
- ############## Begin ##############
- for col in cols:
- ma = df_n[col].max()
- mi = df_n[col].min()
- df_n[col + '_n'] = (df_n[col] - mi) / (ma - mi)
- ############## End ##############
- return df_n
-
-
- df_n = data_norm(df, 'value1', 'value2')
- print(df_n.head())
-
本关任务:进行数据的0均值标准化处理。
为了完成本关任务,你需要掌握:
0 均值标准化处理方法处于整个框架中的数据准备阶段。也就是说,在源数据通过网络爬虫、接口或其他方式进入数据库中后,下一步就要进行的数据预处理阶段中的重要步骤。
数据分析与挖掘中,很多方法需要样本符合一定的标准,如果需要分析的诸多自变量不是同一个量级,就会给分析工作造成困难,甚至影响后期建模的精准度。
0 均值标准化是数据处理的一种常用方法。通过它能够将不同量级的数据转化为统一量度的 0 均值分值进行比较。也叫标准差标准化,这种方法给予原始数据的均值和标准差进行数据的标准化。
经过处理的数据符合标准正态分布,即均值为 0 ,标准差为 1 。
优点:
算法简单方便,结果方便比较;
可够应用与数值型的数据,并且不受数据量级的影响。
缺点
总体平均值与方差不一定可知;
在一定程度上要求数据分布;
0均值标准化的数据没有实际意义,只能用于比较。
根据提示,在右侧编译器的 begin-end 代码块内完成 0 均值标准化函数代码。
平台会对你编写的代码进行测试:
预期输出:
value1 value2 value1_Zn value2_Zn
0 65.358959 20.708234 0.520694 -1.024567
1 11.500694 74.246953 -1.093571 0.565028
2 95.028286 39.215413 1.409956 -0.475078
3 48.219140 18.225652 0.006971 -1.098276
4 87.247454 74.353941 1.176746 0.568204
5 21.233268 6.958208 -0.801862 -1.432813
6 4.070962 88.533720 -1.316258 0.989210
7 39.719446 95.264440 -0.247785 1.189049
8 23.313220 93.114343 -0.739520 1.125211
9 84.174072 41.543095 1.084629 -0.405968
标准化后value1的均值为:-0.00, 标准差为:1.00
开始你的任务吧,祝你成功!
- import numpy as np
- import pandas as pd
-
- np.random.seed(1000)
- df = pd.DataFrame({"value1": np.random.rand(10) * 100,
- 'value2': np.random.rand(10) * 100})
- # print(df.head())
-
- # 创建函数,标准化数据
-
- def data_Znorm(df, *cols):
- df_n = df.copy()
- ############## Begin ##############
- for col in cols:
- u = df_n[col].mean()
- std = df_n[col].std()
- df_n[col + '_Zn'] = (df_n[col] - u) / std
- ############## End ##############
- return (df_n)