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

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

[复制链接]
# `5 z _5 P3 l5 N4 z
6 @. i; N1 s* M

铁甲将军夜渡关

! S" d6 a6 c/ r3 K

朝臣带漏五更寒

/ H3 Q6 \1 G4 }. Z/ d; H/ g

山寺日高僧未起

' F: x2 ~0 @9 @5 g- X8 [2 U0 V

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

& r- ^) V, b9 o: I" E2 O

一周没有更新了【吃瓜】

$ X' i. t+ M/ ]) K" B

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

% l* `) O T0 M/ U. X% G

0 G3 L, V3 e, y

都忙

6 m1 b/ F+ N& Q" o

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

4 W1 f6 c# r: V1 t9 @+ p. d
( y8 r) ?7 R V/ u

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

( w5 d, C' Q, M, M. ]

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

% b3 |3 M& @0 ^# B: N. ]. W

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

, w$ l- |& ^5 q Z; n$ @# z' ?4 f

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

. _) n. m" Z9 z+ [0 F2 }! b8 [, z9 w

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

, K6 k( H8 v3 }0 t5 i) g

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

8 \! Q+ c S" u" [' h/ \

数据预处理(无量纲化

9 {8 c, ^3 u- r- k* y+ c

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

' i1 @, `& C2 N/ Y- a

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

3 g$ P6 S$ j2 n7 E& H# E8 W

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

$ \+ l& K1 B% m, _; a

这会放大温度的影响效果

i& p" c1 ?2 P

数据归一化

+ g7 p+ ]- s& r2 A4 |2 T

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

0 a; `0 F$ J7 o8 V

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

* |/ W3 H6 B: X* ~" K; x& |

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

8 \: F6 {$ ]5 j3 H
from sklearn.preprocessing import MinMaxScaler# `! K6 Z$ T# g* k- v 9 t; k4 U5 p; q- k8 `. e0 Y def mm(): ?$ ]7 u: \3 t7 X """ ; r( I4 W' q' g8 _/ J! @9 H 归一化处理. a/ w7 L% y/ L' j& a4 u """ 6 h# R- i% h, U4 K+ W+ X # 实例化MinMaxScaler函数,不填写feature_range参数默认为0,1! R* Q2 F$ C- d0 s3 n2 p( q( l$ J0 I mm = MinMaxScaler(feature_range=(2, 3)); t, a+ _+ W* @" v; m 6 A* O9 Q; H6 P0 m6 C data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])/ L. n9 m$ u( C8 W/ Y( M # h6 M+ X6 q' t/ m print(data)/ o7 {% p' i+ [9 o 0 B# w; r- \% U9 x/ _6 } return None : @( i6 M7 l8 t( f/ \" K- m1 I/ N* p( E if __name__ == "__main__": 3 o% I! z; k* k. ]$ t" h mm() 1 O) o# C$ v( k& C: M3 y1 [7 ?6 g$ j7 [2 `
; t- u1 e! v" [! K

数据标准化

9 j3 z1 e( L s3 J! L

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

$ p2 w% e, x) Z& ~- a. k3 ]6 o
from sklearn.preprocessing import StandardScaler / A2 \2 Z# Y' K/ |; A5 n # ~& | q% v5 Q# S' K: l( }) ~# [ # x = x-mean/γ mean:平均值 γ:标准差% R6 m& p* I) T, i4 O, k # 方差 = (x1-mean)²+(x2-mean)²+(xn-mean)² / n 标准差 = 方差开根号" ?: e1 j+ I4 c p5 p: q0 t' ~1 Q9 q # 优点,不易受异常数据印象( C# d/ \5 \& w p6 I; R `9 `" ?$ h7 [# ]1 }1 y # 一个目标变量由多个特征变量影响,当一个特征变量很大时,影响程度更大,所以我们进行标准化,消除这样的影响 5 G7 L& B0 S1 |' z9 i* X def stand():( P* P& d; V2 k2 r' |7 S """ ! q9 ~" v3 b l% A; l; v& [ 标准化缩放# E. i5 v. m' s5 C- B8 s: i0 l """ $ g# N* J# Z1 l/ a; s" Q std = StandardScaler() * e' X- \, m, q; M# d/ r& g! b- M/ K6 F! m pre_data = [[ 1000., -1., 3.],[ 2000., 4., 2.],[ 4000., 6., -1.]] + V" e: i1 X4 U9 \5 W- I 7 U+ M- i- D( L. G9 E& m$ `3 T) { data = std.fit_transform(pre_data) " s, B3 f) \: c0 b* l print((1000-2000)) " ^% ~ `) I2 x$ u print(pre_data)9 U( c `9 t- |2 u, O* s( D print(data)' b9 v* ^4 g! P& R2 z# W , w1 F( u4 Y. a3 s, [- I0 @ return None" P! c" y( Q% H% i" a 2 f) g1 a# u8 \" B if __name__ == "__main__": 1 X: P' g3 g, k stand() & m" n& x5 W4 c+ m; ~
( Y+ ~! u0 |: l7 L- w+ S4 D F! L

下一期讲一讲特征工程

8 V8 j0 N4 E5 t( Y2 C, t$ J& g9 K

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

2 B. b( g% Q0 T3 ]/ V
# c J: I: `8 B ; m8 `" B+ L$ F. w1 {- H 3 o( v! [. ]0 F5 t, n2 M% F, {" L- ? d& L U) U3 O. d, m/ l , l- c# O M) ]; t9 I9 a7 k" \# d
回复

举报 使用道具

相关帖子

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