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

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

[复制链接]
3 |8 ~( c* g, N6 t! A [. {& B( f
# J0 ^7 U& h6 m

铁甲将军夜渡关

8 `7 a* O7 v3 z. S0 A

朝臣带漏五更寒

% x5 v% G2 ~" z) d* y9 l$ k% }

山寺日高僧未起

7 D7 ?2 y0 I: @2 V& M5 C

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

6 v7 N- ~6 k5 x, ^

一周没有更新了【吃瓜】

/ Z# C+ y9 ?( [. ?5 v

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

; H! a2 G& t) j5 y I1 s @

( k3 `% r% V% ]# Y

都忙

% V4 G9 M" @6 v: K, W7 Q

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

& k8 g+ o% Y+ {% a8 H
* f" _) T. }; m: W- M. s' l( m

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

" D: |- R* O, G! s7 L) l

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

9 i& ^1 s- V0 j( u9 J" C( `

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

* {% p/ o6 j7 Q3 F

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

1 o; J# R9 \8 D/ y8 L3 \* l- W

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

' i$ U5 z) }5 _; @. W5 X" h

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

% d. ?9 t7 ?" K9 p# s

数据预处理(无量纲化

* r+ M5 i! R7 d" F" s* M

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

% w2 Q; @) z$ e1 m7 q0 ]+ D

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

5 ]7 w: \# T( {; t- }1 c

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

7 W6 u( t/ a1 @: n

这会放大温度的影响效果

$ G( G# _) B: X4 m2 B

数据归一化

1 M, f- [ C/ t0 \& l

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

8 z m& t3 M1 |/ Y) c8 X

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

. u9 c) h7 c% \0 n5 N6 b

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

T' G" ]) W2 P% D
from sklearn.preprocessing import MinMaxScaler ) Q# j& G6 G" Q* X' G : l. y% @$ a% r) x/ a2 y5 o- f def mm(): ; G) ]) @' w2 t' C+ W: R """ 8 f$ m# C" h/ @# y. \. `& U 归一化处理. l9 k( \: E0 V& u- J$ D+ v """9 a$ N$ q% U, W$ ` # 实例化MinMaxScaler函数,不填写feature_range参数默认为0,1/ m) y u. P) g4 G: l mm = MinMaxScaler(feature_range=(2, 3))8 ^6 {" |! r0 B ) K) _* j$ }4 S/ [* U data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])3 T) a; R ]1 R8 D - V- P2 W) q9 r5 ?0 S( b7 c* V print(data)/ h$ _5 K4 @6 a2 ` # R, W+ {3 @* H7 D2 C return None $ ?) \0 o, W! d% t8 k( U: y0 a ' i/ h% d1 J6 }$ I U8 g9 @ if __name__ == "__main__": k \* s- z4 U3 w9 H mm()% X2 U2 g: [7 R
0 x, }* P. P: @8 J. A o

数据标准化

% C9 }' T0 \9 M/ D

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

O$ o- d- L* l" H' N
from sklearn.preprocessing import StandardScaler 7 k) M6 S# g6 P+ N- v" b5 \4 V) r7 x' C1 l7 g; \2 f7 P4 z' J # x = x-mean/γ mean:平均值 γ:标准差 ) q( ?1 U( i+ x% i6 c # 方差 = (x1-mean)²+(x2-mean)²+(xn-mean)² / n 标准差 = 方差开根号* g0 k+ d5 T' i1 T& d% P # 优点,不易受异常数据印象0 ~1 C! [! h0 h2 |& V: X+ V A& c ' b; w" z9 _! d! c # 一个目标变量由多个特征变量影响,当一个特征变量很大时,影响程度更大,所以我们进行标准化,消除这样的影响, [$ Y3 Q9 n, E8 j def stand():* s* e$ O0 ^ v1 W8 W! l """0 C+ f, n. z% d1 \3 U 标准化缩放 / l: I7 V6 Q! \, x3 S """ # `8 _, V- E2 [4 c0 c std = StandardScaler() J- |2 ?! V8 j C 6 J) x8 O: p7 Z$ L: d, V" i& L pre_data = [[ 1000., -1., 3.],[ 2000., 4., 2.],[ 4000., 6., -1.]] % d* j$ [2 N# Q) [& [9 W3 r& J % I4 t% b6 ~ F* Y4 S6 m+ x9 b data = std.fit_transform(pre_data) 1 D0 w1 ]% h/ o0 U" u4 ~. u# r, M. @ print((1000-2000))5 \# o( V( B! @: D9 O$ O9 s! Z print(pre_data)3 u: ~0 D( U6 P; N; E print(data)$ Q9 B& h/ Z& x! X( i- E 2 l: b4 F& L. b) b+ {- h: n return None ' V+ G( j) ~+ E K+ e5 k0 `9 `, P2 Z- f! f5 \0 d2 o if __name__ == "__main__":# X5 i8 x2 ~- ^: Z# k* g stand()+ r, D0 [0 K9 Q Y& f
$ t' |4 |5 U/ q6 g1 a- y3 ~" a

下一期讲一讲特征工程

, h" K1 f$ Q* P3 ~/ y s

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

: j% r, _ {2 q9 K9 i
8 r2 I( m2 V2 z8 i0 `+ G; `1 y; A5 O z 3 D$ K# _( K" _ B% c9 |/ n6 D }6 e1 X 4 ] u$ Q7 Z3 ]7 J$ v" j 3 ]# {6 C; Z' t, c
回复

举报 使用道具

相关帖子

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