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

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

[复制链接]
$ C, Q1 i! C3 d1 p3 k
0 ]: e8 {8 B- W( b7 p

铁甲将军夜渡关

# U: t# [! f* J( H9 p0 Z- h

朝臣带漏五更寒

1 b- A! b* n/ {( {* ~: M# ~. D1 \

山寺日高僧未起

$ n5 y. e5 _; X

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

8 c; V1 [0 P, e# _

一周没有更新了【吃瓜】

6 V& ^0 h4 z2 Y

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

# I& K9 P+ I, K! U* u8 ~* ^) L

- e! J9 u! G5 U K

都忙

3 U0 l6 F; i6 L& J

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

5 R! d2 Q; `4 b* p) s/ m* J6 R
3 I- w$ g) G. L6 ^/ F) k9 }! Q

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

( B" G: {0 Y8 o% U6 U

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

4 ^7 U0 n9 R1 e8 ]% K# I

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

7 \* b: O7 ~$ U

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

. H; _* Z0 K3 W

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

+ t6 H! K: X8 q

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

- w( D% \% M' `; y, n* }3 F( \0 {0 }% o3 ^

数据预处理(无量纲化

& Z5 T0 Z/ g- ]- g6 @, ]: }9 c! B

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

3 Q$ G9 y6 E3 i3 t

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

8 K* V' a i" K4 Z5 L- i4 R' S

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

5 u7 t% u/ A' f( z

这会放大温度的影响效果

: p& z6 z1 X6 c

数据归一化

3 t! e$ h4 @6 K* l4 V

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

2 m; f) ] x' C

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

, e* z* n' F7 H& l _" H$ m7 s; J

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

: ?' Z0 P( n# l% `: w; z
from sklearn.preprocessing import MinMaxScaler * G, s9 s+ [& P( X0 `! q, t( ]6 Y! m8 f- S( s8 x1 u; @) c4 P0 f q def mm():+ \0 L+ O5 y' I, t+ [# q9 Q" i """ 7 f. Q% |3 j4 n, Z9 e' }3 G 归一化处理 ; V& ]/ ^3 F/ m0 j3 ]2 e# q# } Y """ " P* y8 t: H) l7 t& z1 P6 h+ k) \0 n # 实例化MinMaxScaler函数,不填写feature_range参数默认为0,1 : m, N( f+ @0 Y2 `+ O( I2 y mm = MinMaxScaler(feature_range=(2, 3)) $ r; y) g( e) t9 n5 f. \% A I1 a/ M, E& W0 U! X: m, I data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])6 K" q3 V+ { S* {& K 0 u6 U% w; R& Y: ^+ \( \/ k print(data)( ]+ C: w+ E$ O3 e1 b ; t- P6 a( {) B$ c% _ return None - e0 Q4 d; d" Y7 d" s 2 N) V! ?2 ?' a) P if __name__ == "__main__":& c. e+ W. V9 d1 w: e mm()' i3 F5 Q. \. R9 i ~ f& d
; t( D7 T8 G+ `% ~/ h! W

数据标准化

' g7 y+ n4 A3 ], [

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

+ ]3 Y/ A* z, [% V7 { g7 E) S
from sklearn.preprocessing import StandardScaler" W3 V; L9 e; R6 S. C+ V6 r5 {) m, L + _% t/ x) U: j4 n- l3 t0 | # x = x-mean/γ mean:平均值 γ:标准差: g9 i1 S6 r; W# h6 G) _ # 方差 = (x1-mean)²+(x2-mean)²+(xn-mean)² / n 标准差 = 方差开根号 - }4 z7 d7 }" T/ Z # 优点,不易受异常数据印象 3 t& v# n8 F" T7 P; q l5 M5 u, k4 e/ d" p% \0 z1 y# h$ g( b # 一个目标变量由多个特征变量影响,当一个特征变量很大时,影响程度更大,所以我们进行标准化,消除这样的影响5 m: {+ n! n O9 \9 Y def stand(): 6 M% b% H, k; L3 H5 _3 [% Z """. d9 A' x l, j7 ]! W! n" [ 标准化缩放 * j6 ]3 x- j* f6 c$ C2 u( Y """: m: ?/ C5 ?5 m, b9 w+ }. d std = StandardScaler() : ^( B- h2 s8 n+ V! S: G6 y; K { o& T% i5 `% N pre_data = [[ 1000., -1., 3.],[ 2000., 4., 2.],[ 4000., 6., -1.]]+ Y9 \3 O2 K8 v5 s+ q& R! d ) ^; ~4 H( I c- J6 l data = std.fit_transform(pre_data)7 [5 `0 p5 u; F4 m print((1000-2000))+ z+ O8 R0 r% P8 F print(pre_data); v( B1 S j$ s- J2 |/ K print(data)# }" u' L8 B+ J8 Z1 Y2 l/ P . j9 A& E5 T3 E1 F4 b$ q; q* ` return None & N. \8 `0 T) _3 T+ N3 B% |- Q! p( q3 E B0 j( }% O* r% a$ S if __name__ == "__main__": 8 G3 ~6 S1 r$ k, U+ d# e1 G stand()5 o: J( l# z% Q1 A5 j9 ^# B! [7 ^, Z
8 i# p- m4 x+ Y; a5 n2 G9 z

下一期讲一讲特征工程

$ C, U7 h9 D7 j/ w4 i+ e

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

' f. t% d$ G5 Z8 ]# V+ r8 \
; r) l" n7 t5 B! a1 w# O, Z . \8 P2 n9 N }/ t" G + U6 Z$ H/ {/ N2 Z9 @: O% Y9 O k W8 p: C 3 R3 U4 k$ z$ Q5 Q' | D
回复

举报 使用道具

相关帖子

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