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

[复制链接]
4 k( h3 V0 @0 c* Q3 P" g7 F5 b" I
2 e2 p3 {, q6 g

铁甲将军夜渡关

2 E8 C7 }, E, g; O7 P5 f

朝臣带漏五更寒

( W; K% N1 c4 v8 a- _" E' t& f

山寺日高僧未起

1 y! } Q6 ~ H2 u/ `

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

8 T: y5 ^# `/ \ r9 g2 q

一周没有更新了【吃瓜】

4 }$ N7 W+ m+ h! A0 h$ w

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

) s. j8 p* r% a' w$ W

+ h( X4 C9 l7 f3 B! G/ P: K5 j

都忙

' ]! J8 v+ o$ J. C3 h8 W

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

R2 X* \8 L8 z
; C" j; Y+ y% s; ~

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

5 r5 K, _8 H# W- `% Z

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

7 ^2 ~0 I7 O+ l. M

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

. F9 n2 E# H7 ]7 k

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

* i+ t$ t2 r: t8 @5 B+ l

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

, |6 l0 {5 s! ?" A

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

5 i8 T2 X: Q7 G4 d7 S

数据预处理(无量纲化

5 \) a+ C) G$ d# |& ]1 ?% r) h7 B4 h

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

7 N5 U) B; N# ?$ h+ V5 F9 r

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

4 L* Q+ g/ R: l! s' L% @

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

. Z2 }! |0 \2 x. l5 g

这会放大温度的影响效果

; Y( D0 m; C) l' p* {' `

数据归一化

! X$ `. R3 @% R# f& A9 x8 Y8 ]

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

+ N9 {+ {+ }& z

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

# x7 g v+ ^7 k! R2 O: ^

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

* s( T9 S( w# R2 L$ i6 p& a
from sklearn.preprocessing import MinMaxScaler: i; c- h+ z H# n" w" o! C6 g ! W' B; g' p+ F" h def mm(): ! Q' b+ }0 b7 c3 ^2 ~ """ 0 z: o' H1 m* ~6 h; ]4 a% q 归一化处理 ' Y6 q, c8 l4 W, B. l H# O$ U) q """ * x5 J, X) f8 n% N* J3 z9 T3 k # 实例化MinMaxScaler函数,不填写feature_range参数默认为0,1' P! p& m1 b9 ^1 i mm = MinMaxScaler(feature_range=(2, 3))" O2 g" t& D; Y K% F4 Q: d0 P% F7 y3 d6 w* K data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]]) b& i8 ?" A2 x5 r/ i- P* q' D" ?8 T8 S print(data) ; _0 C. e9 R2 @' v5 `; D* Q ( s# y G2 |5 J7 t, i8 E$ ~ return None b2 V0 V) |- n; S; x4 _ 6 B/ H: C; S, b; X- X- h9 Z if __name__ == "__main__": 7 O: P- f( X' J& }, |7 l8 @ mm() 0 }6 e) }1 N) N1 u3 q, [7 W& ~
2 U6 R& H$ v* a4 C9 W5 o/ k

数据标准化

+ W9 j% M. D, U7 M

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

& z9 j$ D: U5 k- D& B( r2 H+ F1 g
from sklearn.preprocessing import StandardScaler- j. o( ^* I$ ^1 ~+ r/ v9 [ & \4 t" n2 i, H% F l2 @$ O. k # x = x-mean/γ mean:平均值 γ:标准差 ; t5 H5 X( s! O4 O( A # 方差 = (x1-mean)²+(x2-mean)²+(xn-mean)² / n 标准差 = 方差开根号 ! }2 v. }- G' O # 优点,不易受异常数据印象! h6 Y1 q) U# V" q- L * X* Q6 |# r8 K% W # 一个目标变量由多个特征变量影响,当一个特征变量很大时,影响程度更大,所以我们进行标准化,消除这样的影响 " w7 N3 Q8 ~# Q% P def stand(): 7 z4 l7 k# v; Z$ z& I """ 1 m, ]( i* u5 n& q, M 标准化缩放 ! D+ j) z% s$ j. p- I """' M- q3 z9 h6 e" t std = StandardScaler()( {: [( d$ S5 J # g: B1 V! }6 a! y- h" I pre_data = [[ 1000., -1., 3.],[ 2000., 4., 2.],[ 4000., 6., -1.]]. G, g6 n @! P& e0 G " v" S: K j! N* X/ ~ data = std.fit_transform(pre_data)* k' Q8 m* k5 i; d" s6 ~4 f% b print((1000-2000))/ e8 N" [$ f" j% C2 @3 Q: B( A print(pre_data)8 t0 ` p9 o/ z2 t2 b print(data)# z4 l8 w0 H3 `9 p 2 o7 q5 I+ i, e+ _+ n/ b; X return None# Z5 l4 m# K/ l* Q0 c2 D, e ) [" y) C2 C. u if __name__ == "__main__":1 l! {9 V3 [: |% M* D$ k- Z7 j stand()% B" w: H9 {% W; ?5 g
5 i, z0 L' Z- ?" V3 @

下一期讲一讲特征工程

; M% R! }: x, s

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

0 R v# Y2 D% j- D9 w
L$ ~# G( p, f6 a$ g % f7 @3 ^* B: r! y- c2 ~( o' d2 `1 o: a- b% [ 0 h$ G8 q4 ?) p: P( N! y- q1 x7 `, S+ X7 F
回复

举报 使用道具

相关帖子

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