网易首页 > 网易号 > 正文 申请入驻

【未来虫教育】Python在数学建模中的应用

0
分享至



Mathematic in Modeling with Python 之数据预处理

标准化:数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。

标准化基于正态分布的假设,将数据变换为均值为0、标准差为1的标准正态分布。但即使数据不服从正态分布,也可以用此法。特别适用于数据的最大值和最小值未知,或存在孤立点。

主要方法: z-score标准化,即零-均值标准化(常用方法)

$$y=\frac{x-μ}σ$$

~~~~~~~ 下面看看在Python中的实现

方法1.scale可以直接对数组进行标准化,请看下例:

import numpy as npfrom sklearn import preprocessingX_train=np.array([[1,50,500],[2,40,400],[5,55,666]])X_scaled=preprocessing.scale(X_train,axis=0)#axis默认值就是0,所以也可以不写print X_scaled #标准化后的数据[[-0.98058068 0.26726124 -0.20054214] [-0.39223227 -1.33630621 -1.11209733] [ 1.37281295 1.06904497 1.31263947]]

咱们可以检验一下这个X_scaled的均值和方差

print X_scaled.mean(axis=0)#均值print X_scaled.std(axis=0)#方差[ 7.40148683e-17 -2.96059473e-16 0.00000000e+00][ 1. 1. 1.]

注意这里的axis=0代表按行处理,也就是把行压缩,也就是对每一列进行标准化,常用!

方法2.from skelearn.preprocessing import StandardScaler

scaler = preprocessing.StandardScaler()scalerStandardScaler(copy=True, with_mean=True, with_std=True)scaler.fit(X_train)StandardScaler(copy=True, with_mean=True, with_std=True)scaler.transform(X_train)array([[-0.98058068, 0.26726124, -0.20054214], [-0.39223227, -1.33630621, -1.11209733], [ 1.37281295, 1.06904497, 1.31263947]])

以上是把fit和transform两步分开进行的,我们也可以直接一步完成,如下:

scaler.fit_transform(X_train)array([[-0.98058068, 0.26726124, -0.20054214], [-0.39223227, -1.33630621, -1.11209733], [ 1.37281295, 1.06904497, 1.31263947]])

但是要注意,在实际的建模过程中,我们通常将数据集划分为训练数据集和测试数据集,这时候我们应该分两步进行,先fit训练数据集,并将其定义为一个变量,比如ss,然后用ss来transform训练数据集从而进行模型的拟合,之后在检验模型的拟合度时,首先也要对测试数据集进行transform,这是就要用之前fit好的ss来transform测试数据集了,当然,这里只针对于变量数据,不包括target

(更新:用第二种方法的时候由于fit能记忆均值和方差,所以可以直接进行)

同样可以用均值和方差来进行验证:

print scaler.fit_transform(X_train).mean(axis=0)print scaler.fit_transform(X_train).std(axis=0)[ 7.40148683e-17 -2.96059473e-16 0.00000000e+00][ 1. 1. 1.]

我们一般采用方法2,因为它可以保存训练集中的参数(均值、方差)直接使用其对象转换测试集数据.

其实,对数据进行标准化的数学方法不止上面这一个,还有以下几个:

  • 离差标准化

则是对原始数据的一个线性变换,公式如下:

$$y=\frac{x-x_{min}}{x_{max}-x_{min}}$$

这种方法有个缺陷就是当有新数据加入时,可能导致$x_{max}$和$x_{min}$的变化,需要重新定义。

下面来编程模拟实现一个实例:

import numpy as npx=np.array([[1.5,8.8,2.3],[5.8,5.0,6.2],[7.2,8.3,9.6],[4.4,5.5,6.6]])xarray([[ 1.5, 8.8, 2.3], [ 5.8, 5. , 6.2], [ 7.2, 8.3, 9.6], [ 4.4, 5.5, 6.6]])x.shape(4, 3)X_NEW=[]for i in range(0,x.shape[1]): x_new=(x[:,i]-min(x[:,i]))/(max(x[:,i])-min(x[:,i])) print x_new X_NEW.append(x_new)[ 0. 0.75438596 1. 0.50877193][ 1. 0. 0.86842105 0.13157895][ 0. 0.53424658 1. 0.5890411 ]np.array(X_NEW).transpose()#最终数据array([[ 0. , 1. , 0. ], [ 0.75438596, 0. , 0.53424658], [ 1. , 0.86842105, 1. ], [ 0.50877193, 0.13157895, 0.5890411 ]])

当然,我们也可以直接调用sklearn中的MinMaxScaler()来实现上述功能:

from sklearn import preprocessing min_max_scaler = preprocessing.MinMaxScaler() X_minMax = min_max_scaler.fit_transform(x)X_minMax#最终数据array([[ 0. , 1. , 0. ], [ 0.75438596, 0. , 0.53424658], [ 1. , 0.86842105, 1. ], [ 0.50877193, 0.13157895, 0.5890411 ]])

结果是一模一样的!

为了方便起见,我们今后就直接调用MinMaxScaler() 就好了.

离差标准化可以扩展一下,比如我们想要把数据映射到-1和1之间,那么就采用以下数学公式:

$$x_{new}=\frac{x-x_{mean}}{x_{max}-x_{min}}$$

编程模拟一下,直接对之前的代码做一些改动就可以了,如下:

import numpy as npx=np.array([[1.0,2.2,3.3],[5.2,3.3,2.2],[1.3,2.5,6.8]])X_NEW=[]for i in range(x.shape[1]): x_new=(x[:,i]-np.mean(x[:,i]))/(max(x[:,i])-min(x[:,i])) print x_new X_NEW.append(x_new)[-0.56578947 0.18859649 0.43421053 -0.05701754][ 0.5 -0.5 0.36842105 -0.36842105][-0.53082192 0.00342466 0.46917808 0.05821918]np.array(X_NEW).transpose()#最终数据array([[-0.56578947, 0.5 , -0.53082192], [ 0.18859649, -0.5 , 0.00342466], [ 0.43421053, 0.36842105, 0.46917808], [-0.05701754, -0.36842105, 0.05821918]])

以上都是些常用的数据标准化方法,还有一些不太常用的方法,比如:

  • 对数Logistic模式:

$$X_{new}=\frac{1}{1+e^{-X_{old}}}$$

得出的数都在0和1之间

最后来说一下数据正则化

正则化主要是用于解决过拟合,正则性衡量了函数光滑的程度,正则性越高,函数越光滑。(光滑衡量了函数的可导性,如果一个函数是光滑函数,则该函数无穷可导,即任意n阶可导).
采用正则化方法会自动削弱不重要的特征变量,自动从许多的特征变量中”提取“重要的特征变量,减小特征变量的数量级。这个方法非常有效,当我们有很多特征变量时,其中每一个变量都能对预测产生一点影响。我们可以有很多特征变量,其中每一个变量都是有用的,因此我们不希望把它们删掉,这就导致了正则化概念的发生。

看一下在sklearn中的调用方法

import numpy as npfrom sklearn.preprocessing import normalizex=np.array([[1,2,3],[4,5,6],[7,8,9]])xarray([[1, 2, 3], [4, 5, 6], [7, 8, 9]])normalizer = preprocessing.Normalizer().fit(x) # fit does nothingnormalizerNormalizer(copy=True, norm='l2')normalizer.transform(x)#最终结果array([[ 0.26726124, 0.53452248, 0.80178373], [ 0.45584231, 0.56980288, 0.68376346], [ 0.50257071, 0.57436653, 0.64616234]])

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
惊呆!“金龙鱼”老板郭鹤年身家达834亿,座驾竟是低配版奔驰!

惊呆!“金龙鱼”老板郭鹤年身家达834亿,座驾竟是低配版奔驰!

小毅说事
2025-01-04 18:19:13
全是戏精啊,杨议送给侯二哥的貂皮大衣,居然他是八十块钱租来的

全是戏精啊,杨议送给侯二哥的貂皮大衣,居然他是八十块钱租来的

阿凫爱吐槽
2025-01-04 15:01:31
波杰缺席,勇士4战3胜!李凯尔:我很想上场比赛 DNP时会玩命训练

波杰缺席,勇士4战3胜!李凯尔:我很想上场比赛 DNP时会玩命训练

锅子篮球
2025-01-05 13:33:24
什么动物?四川甘孜,有游客在野外路边,拍到两只想要打架的怪猫

什么动物?四川甘孜,有游客在野外路边,拍到两只想要打架的怪猫

蜉蝣说
2025-01-03 10:27:52
美国游客:我们去中国不是为了旅游,是为了买这个,太好用了

美国游客:我们去中国不是为了旅游,是为了买这个,太好用了

常高俊April工作室
2024-12-10 10:30:07
原来这就是绿水效应?就算是女高管都不愿招女员工!评论区太心寒

原来这就是绿水效应?就算是女高管都不愿招女员工!评论区太心寒

时尚的弄潮
2024-12-30 20:32:32
有心了,阿迪达斯铺开10万朵玫瑰作画,罗斯手捧玫瑰微笑合影

有心了,阿迪达斯铺开10万朵玫瑰作画,罗斯手捧玫瑰微笑合影

懂球帝
2025-01-05 11:38:13
中国艾滋病世界第一,1千人中有1人?为什么这么多?入境要检测吗

中国艾滋病世界第一,1千人中有1人?为什么这么多?入境要检测吗

猫小狸同学
2025-01-05 13:45:02
董明珠住院同事来看望,出院第一天开会宣布:去医院看了我的,每人罚款100元

董明珠住院同事来看望,出院第一天开会宣布:去医院看了我的,每人罚款100元

财经三分钟pro
2024-12-24 21:57:17
52岁巩俐直言“每周四次”,70岁米歇尔体检证明自己:我跟得上

52岁巩俐直言“每周四次”,70岁米歇尔体检证明自己:我跟得上

柴叔带你看电影
2024-11-28 15:31:16
马天宇拿抑郁症阴阳李明德,网友扒出他在综艺上怼人片段,好low

马天宇拿抑郁症阴阳李明德,网友扒出他在综艺上怼人片段,好low

美食阿鳕
2025-01-05 09:28:57
银行开始给咱存款上“安全锁”1 月起,存五万以上的朋友注意了!

银行开始给咱存款上“安全锁”1 月起,存五万以上的朋友注意了!

猫小狸同学
2025-01-04 22:05:03
陈思成《误杀3》票房破5亿,黄子华《破·地狱》再破纪录

陈思成《误杀3》票房破5亿,黄子华《破·地狱》再破纪录

千信齐飞
2025-01-04 21:37:41
掘金彻底慌了!掘金战胜马刺重返西部第四,突然发现4大不可思议

掘金彻底慌了!掘金战胜马刺重返西部第四,突然发现4大不可思议

红原体育
2025-01-05 13:14:13
五菱“大G”定妆照曝光,网友:它敢出我就敢买!

五菱“大G”定妆照曝光,网友:它敢出我就敢买!

华哥视界
2025-01-03 12:03:10
大马网红姗姗低胸装扮引热议,性感造型尽显曲线!

大马网红姗姗低胸装扮引热议,性感造型尽显曲线!

大为看点丶
2024-12-06 16:30:03
玩大了佛罗伦萨欧协不当人7-0狂胜,随后1平3负退出意甲争冠

玩大了佛罗伦萨欧协不当人7-0狂胜,随后1平3负退出意甲争冠

直播吧
2025-01-05 10:55:17
妈问我工资,我说:8300,三天后,姐告诉我,你快藏起来

妈问我工资,我说:8300,三天后,姐告诉我,你快藏起来

清风讲故事
2024-12-20 17:01:25
台湾紧张起来了!中美在黄岩岛的对峙,产生了外溢效应!

台湾紧张起来了!中美在黄岩岛的对峙,产生了外溢效应!

星辰故事屋
2025-01-03 17:27:28
美国演员:要阻止中国引进“印度高科技人才”,必要时可动用核武

美国演员:要阻止中国引进“印度高科技人才”,必要时可动用核武

凯撒谈兵
2025-01-03 06:23:37
2025-01-05 15:03:00
原画在线课堂vv
原画在线课堂vv
一家有温度的原画教育机构
1298文章数 1关注度
往期回顾 全部

科技要闻

中国政府拟限制磷酸铁锂技术出口

头条要闻

80后女村干部递补为省委委员 曾主动放弃城里高薪职位

头条要闻

80后女村干部递补为省委委员 曾主动放弃城里高薪职位

体育要闻

波杰姆斯基:你们都算老几?

娱乐要闻

闹大!姜尘语音实锤张颂文 公开细节

财经要闻

商汤重组后海外收缩 正缩减新加坡办公室

汽车要闻

10万元级无图智驾 悦也PLUS全路况实测

态度原创

健康
旅游
艺术
公开课
军事航空

抑郁症患者称好的“乌托邦”宝地

旅游要闻

网红冰瀑冰挂坠落致1人受伤,相关部门:已封控

艺术要闻

故宫珍藏的墨迹《十七帖》,比拓本更精良,这才是地道的魏晋写法

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

以军袭击加沙地带已致至少66人死亡

无障碍浏览 进入关怀版