收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

关于机器学习数据挖掘中的数据预处理问题?

[复制链接]
- H0 s( |% x5 a9 E0 R' ?1 s& e. y
: F7 g7 j9 u+ b: O: y! G1 x

铁甲将军夜渡关

( h0 @- V) m( [( [$ T2 `3 N

朝臣带漏五更寒

* q$ B) t) Q2 q, a5 z& G' G

山寺日高僧未起

7 g) `. w9 J% ` I

看来名利不如闲 啪!(醒木的声音)

" \, l* }+ K1 ]* m2 F. Q

一周没有更新了【吃瓜】

5 J3 X0 S/ p! x9 A$ e7 Z5 Z

因为了小小的科(摸)研(鱼)任务

?( b0 c) e2 x0 H6 }" m

* Y' k4 D: \; P9 i& T6 n( M* d

都忙

, @4 n# r! k; j+ `& T1 A3 |

忙点好啊(主要是早上不起床)

' r: L' h' T; B# f/ l9 ~
; h8 L" y2 r8 t+ e1 O6 ?/ L

我们在进行数据分析时,有一个非常重要的前期操作--数据预处理

' l; ?' z3 |, T

在学习机器学习算法时,为了更好的理解算法的基本思想

% B5 V% s2 x j4 ^9 \; ^( J& x' U. i

会用到处理过的很干净的数据集

: o9 F* Q. U' Y+ I0 A y9 r( u- W9 h

而真实的数据中,多种多样的数据类型、输入的错误、数据的质量等等原因

9 h0 h7 J2 Q' ]! ^0 M) ]

都可能导致无法匹配模型需求

7 F J0 T- S. L v4 |4 T% O/ C7 D

这时候就需要进行数据预处理工作

/ Z0 x% p" |; x+ V

数据预处理(无量纲化

+ y: R0 p: j, ?/ `* \: h5 P |2 }; ]

把不同规格的数据转为到统一规格就是无量纲化

$ u" q: Q$ Q. ?% d( R* ^# w! V

比如我们判断环境参数对浮游植物的影响

9 e3 c1 U2 X" e; B- C0 q ]

22.9°的温度显然比0.044μmol/L的磷浓度有更大取值范围

4 h* Q2 ^! ~8 o

这会放大温度的影响效果

0 |5 o" H2 ~2 h0 ?$ z3 L/ F$ u$ U. G

数据归一化

( X/ _% S' `. G1 J7 Y; G1 Z7 [

将数据收敛到[0,1]之间该过程就是数据归一化

/ O4 L0 g: a" Z$ f6 D

可以使用sklearn中preprocessing.MinMaxScaler来实现这个功能

, a- ~) ~" g3 \& k7 y- G B

归一化后的数据服从正态分布

% e3 y: C. j; N
from sklearn.preprocessing import MinMaxScaler- B( Z( h& [( A& Y6 T 1 F, A0 v. C5 K4 {+ b def mm():# E9 O; x. F, [; w7 P9 ^( m; { """ : Z8 s7 s9 g3 y1 @ 归一化处理 0 S; I+ L( d( u' ~- s """ 7 r/ T! T$ L! c) z, M- F4 _ # 实例化MinMaxScaler函数,不填写feature_range参数默认为0,1 " Y' U/ |5 _* e( w mm = MinMaxScaler(feature_range=(2, 3))1 F7 t6 g- s( T: F8 @ ( }8 a& ^4 }0 f& d, F* a2 N% ?/ L data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])& G% Q/ D! t" y' ^ , e8 K0 x* Z+ G' }) E: l print(data)0 S' Q- O1 G; ~# j( Y% Y: r3 D ; z7 e4 v2 [. a/ m/ @' [4 `: r return None % t; i7 h* \5 j; H+ F0 @ * Z/ A$ C! D' E! B$ y# Z( J: b2 v if __name__ == "__main__": . e7 D+ W8 t: K& D) n) k. X3 H S mm() + [* S6 R& @4 M6 Q
$ R! O' [2 w2 y% k @7 \2 W

数据标准化

" Z0 n! ?- }7 J" W! y- Y: ?9 ^

标准化后的数据服从均值为0方差为1的正态分布

1 |( ? G0 e# p
from sklearn.preprocessing import StandardScaler " A) B5 ^# Q0 g1 P2 {) C* E3 Z, X7 t- ]. O( L1 J # x = x-mean/γ mean:平均值 γ:标准差 0 M e, r C) L- S& k # 方差 = (x1-mean)²+(x2-mean)²+(xn-mean)² / n 标准差 = 方差开根号# |0 {' _# I# k. f8 j& [9 g; e0 O6 Z& ` # 优点,不易受异常数据印象5 E' O) ~3 m& b' z1 W3 s- Q / v& z: \& q( n. D! f8 Y. ^ # 一个目标变量由多个特征变量影响,当一个特征变量很大时,影响程度更大,所以我们进行标准化,消除这样的影响 $ H! E) k6 C! f- {+ U def stand(): 6 H9 J& p: e- O" X" r! l d """5 {4 j: V4 R' } 标准化缩放 2 I: ^8 g. X' J; F- D """2 K9 A; D" m, j ^/ w+ Q F! b( K8 X$ L std = StandardScaler()4 F4 ^$ o0 Y! ^" z4 S # g8 m) `# O8 G3 E5 s pre_data = [[ 1000., -1., 3.],[ 2000., 4., 2.],[ 4000., 6., -1.]] ! N. r0 I, a2 M& ]; i- d/ E( X) _7 m) K7 t8 R# k data = std.fit_transform(pre_data) 0 B3 m4 |3 l! l. j print((1000-2000)) 4 k5 [* c8 X! d print(pre_data) * j4 Q& c& `' j" v1 f; H print(data) % f- C1 y3 X; A; @' z `1 V* ` v5 i4 I; z: O( C1 ^2 _ return None: e/ I2 b7 l; l/ @ y # L, `) ^+ m) e' R7 c! e if __name__ == "__main__":7 j0 k' Z- h. U% b- G2 N* I stand() # a+ m4 Z& u/ X3 e: I; m) e
- C/ Q& v8 y$ s* ` ~' r

下一期讲一讲特征工程

; r/ W, i. a4 T1 m! Y) O- x6 N4 S

关注我【生物海洋计算机支线】,获得更多生物海洋学,数据处理,作图等相关知识

, z5 `2 x5 p: x$ L4 E# o. f
" G& a) ]7 ?. C, H% {/ O5 ` 8 U1 P U+ Z4 i/ [" }& Z/ y 2 O7 J: V8 _( a" W% y6 F7 r0 F! Y G; y# O8 g F' H. ^$ w $ I g* r* x6 F7 ?+ e3 u
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
哈依盟
活跃在3 小时前
快速回复 返回顶部 返回列表