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

[复制链接]
" `' D5 z1 {; }9 V7 e1 w" i
( v! `+ ^3 [2 T9 j, q

铁甲将军夜渡关

8 K7 _6 x. B& l. |& v: p2 P

朝臣带漏五更寒

* A. S' v7 n9 p0 x @( ^+ f, r+ p

山寺日高僧未起

' F- ]: r5 {" R* D

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

2 o$ E6 X" `1 J6 f# F0 [

一周没有更新了【吃瓜】

; R+ H& j1 u' f! ]$ E* `+ b

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

1 e' {% _% `2 [5 |# n7 b; N

2 j7 i: x) F1 Z/ u8 H; R; G+ x

都忙

5 @- J* Y6 v; _' B

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

& s" f+ n0 u$ z, t% o7 t
9 z4 Y7 r1 d$ w* `8 ~) ^$ r

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

" V- }$ U9 U2 _1 s

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

: v2 X. b u9 D# o' {1 Z

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

& J" w8 l( n* I D9 V( E

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

5 f( b8 O% y8 t! X! Z

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

1 w4 _# |# D8 d7 y+ q: w: e* ~- f

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

# r& Q" Z& e9 @. S$ z

数据预处理(无量纲化

: R# C/ M$ j% V% t' S; x7 q

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

0 o1 R+ @: ?2 r! t& |; [% L

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

& ^1 G9 j6 Q( b7 @: v2 H

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

! Q! d4 b ~6 s! p, j

这会放大温度的影响效果

& |8 `; N2 r, h7 `- N

数据归一化

) j g$ R$ p& r% \) ~1 c

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

& n4 { E$ r) H

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

1 L- y& T3 m6 u- e! D8 V; K

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

" x# P% c; d, p& D7 m
from sklearn.preprocessing import MinMaxScaler, m; k5 X1 @5 G. j M5 U2 L" @ * k1 ^4 P' O- a% V( M) s1 s" M def mm(): - i9 g- D3 ~8 H' L- e """& x8 d0 F1 F& x( ? 归一化处理/ S, R5 m, ^) ~5 w8 x9 f$ B! w """; ~' T8 \2 {; E, \+ Y/ P. w6 Z" A # 实例化MinMaxScaler函数,不填写feature_range参数默认为0,1 ; d1 i6 u$ K' p1 T mm = MinMaxScaler(feature_range=(2, 3)) 0 a8 v/ Z# ]$ r. u3 i7 ]6 e1 v4 U9 }! F data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]]) ' ?' M5 `. n, k4 D$ z5 N7 p% k# X9 r7 T( u print(data)" w# \8 g. U+ P6 V: V1 C* p 8 _3 P# P' I8 k0 j2 W: \ return None . s8 L7 m& Y" A& j9 ?( g& V3 A# ~( T if __name__ == "__main__": % K: [' n2 }/ C6 R! ^7 d; D/ p mm() ! U+ J! g. H& O: j6 f" `- V6 v
z- _7 n7 W7 i/ F) E, B

数据标准化

3 { B5 X+ o, {' E

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

* @# I1 f. j% t! o
from sklearn.preprocessing import StandardScaler $ j- L* ~2 F6 T8 l9 W# U . s! |& d7 S' y( w G # x = x-mean/γ mean:平均值 γ:标准差 2 O( j. `! n. O% `$ F # 方差 = (x1-mean)²+(x2-mean)²+(xn-mean)² / n 标准差 = 方差开根号* ^0 X9 ~8 z3 a( V' b' n5 p- I2 n q # 优点,不易受异常数据印象4 v, G, E! A6 Z ; E% u0 G! E+ A* W2 K, r: u/ c ~ # 一个目标变量由多个特征变量影响,当一个特征变量很大时,影响程度更大,所以我们进行标准化,消除这样的影响 8 c; f# J, ]" o4 {9 q def stand(): 5 ]$ K5 n$ E- {' u """ 1 K; @* @: l, A" k9 G 标准化缩放 . h: F: a5 `0 ^: U' u( X """ / b( T6 N6 A/ \. F* g; o# \& a: q# b2 P: B std = StandardScaler() 6 x9 c" K( c' N" Q* j, m% T9 ~, }/ A/ t# z# u( i! w Z$ K0 D) j pre_data = [[ 1000., -1., 3.],[ 2000., 4., 2.],[ 4000., 6., -1.]]- {1 E9 o" i0 T: c6 X, h 9 A( m9 S# B- b4 P4 ` ] data = std.fit_transform(pre_data)# W: V! Z8 U$ Y$ L0 ^+ ?9 U print((1000-2000)) 9 S1 C1 j: X$ K# u print(pre_data): L. p; k3 G. a9 ^/ q# L1 \% ` print(data) 3 D0 w& h" b4 Z$ m m3 M4 I 9 {6 O% C% J3 a1 x3 |; B& w return None+ N+ J$ D8 x/ h : | u4 h& `% i; Z6 S; l) o if __name__ == "__main__": # M% q1 S' |3 K( A stand(), U( \. E2 z% ?0 T: c+ Y' o5 [1 ~
$ v& ?8 Y/ E$ r% o

下一期讲一讲特征工程

, j2 j& g& z# A% A

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

: D# ^5 k4 Z: @! a% D
+ y6 w" t6 ?$ f' d" R ' j: ?9 Z) ^8 A- B2 d9 [* K1 J; }8 o 0 p9 Z3 ]* G7 F" H # S) U2 R4 {% ^# a 5 }! p v3 |$ K: @, v) t

相关帖子

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