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

[复制链接]
, b3 B, b# b/ _, M8 O$ |( U2 R
N0 \2 i" @# l$ g1 u W

铁甲将军夜渡关

( t: E; i0 M; i. E% z% W" x ~) d

朝臣带漏五更寒

$ _, y4 } j' v- _) M, ?0 D8 m

山寺日高僧未起

& O6 F0 e' ^" n( q0 T% v+ o( G

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

1 r4 Y+ w$ u, S P9 T

一周没有更新了【吃瓜】

6 P7 M( H% h6 d3 s- a o

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

! t5 P- E) |* f( B. t

& H6 @1 P( ?: L- i2 }, G! R6 g

都忙

. p& D. M, v8 s5 y' E2 j

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

0 E2 B8 y/ o' V4 ~; E! ?' @
8 y0 s& ?( C- l7 w5 ]+ |; K

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

6 m- T5 y5 t$ G3 x# l" d

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

- W4 W/ u; Z4 O3 c1 `) U' p+ W

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

2 e/ A7 P0 p% K0 o: C8 y

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

' X8 [3 _0 _. m9 ]6 i

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

" G0 r7 f. Y/ t5 m5 h

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

9 f( o: ]$ O8 e) W3 j; Y

数据预处理(无量纲化

/ C( I3 ]" k/ s

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

8 Y5 J% w- u& Y* O2 [

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

. h9 }7 z* I0 I( M. n/ g8 ?

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

9 p8 `/ v T6 C. S

这会放大温度的影响效果

+ e/ |- x- B0 ~# x: ^1 `

数据归一化

, @! j* C7 ?0 }3 w0 ^: Z3 v, K

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

. o3 a& n3 b4 }7 L% [

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

/ B( ?& v9 _/ H9 K, H& g

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

* A0 J3 v D Q. P ?" y+ D
from sklearn.preprocessing import MinMaxScaler) d# a& H/ T& @* }2 ` # G3 c" |6 N& @1 x- z def mm(): " y/ r! w* O6 w$ ^ """ 4 I; p: t: F/ N9 f 归一化处理 $ a& \ G" Q6 L( v9 u6 e """6 f: |- L7 q0 ^" U/ L1 Z% k( c$ p4 j # 实例化MinMaxScaler函数,不填写feature_range参数默认为0,18 _# A2 y$ r' h. `4 T) |7 |) D% e: Z3 [ mm = MinMaxScaler(feature_range=(2, 3))1 |3 N* n5 j$ h# v( L 6 f' ^, ~1 F% h9 U! [( w/ G data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])- o1 S2 K, p: j' p: w 3 U2 K( v5 Q: J% U$ \ print(data) " k$ i$ j+ Z) P) ~$ q; g. V$ x7 P, @( X$ }* V. z# E+ c2 I return None: y+ s; t1 L! E2 z, u : m; J) Z6 R1 X% ~7 e9 f if __name__ == "__main__": ) b4 `) B$ t3 }/ ]6 v3 b/ X# r" E mm()+ a# S8 \8 [; l3 B
; O' `$ e- h( v, l! C% H

数据标准化

( q3 v# T/ }' d8 ~. z

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

4 l/ \, |: n/ M7 P. z
from sklearn.preprocessing import StandardScaler & W$ ^" c+ J2 `- o& T# N8 t8 I4 j! T, n% @% p4 H! l: u% C # x = x-mean/γ mean:平均值 γ:标准差 + Y4 r1 {# [; n% f" ^ # 方差 = (x1-mean)²+(x2-mean)²+(xn-mean)² / n 标准差 = 方差开根号 1 t2 _; F$ S: D0 \. C # 优点,不易受异常数据印象 h+ Q1 O4 j: L2 z n: B Y ( J- }+ _" }1 v # 一个目标变量由多个特征变量影响,当一个特征变量很大时,影响程度更大,所以我们进行标准化,消除这样的影响. ?, r! @5 S; S5 {. h) W { def stand(): $ M; _8 m# v( h8 l """, r- _/ M4 g& Y 标准化缩放' o- c/ q/ X/ j! `( o) \3 F """0 n9 L! p d2 ^; { std = StandardScaler() 2 y6 {) \6 u: a$ x$ i: G% | 3 Q- y; d5 v! y: f( T; K- y! m, O pre_data = [[ 1000., -1., 3.],[ 2000., 4., 2.],[ 4000., 6., -1.]] ' M: P, Q4 H' g; _( w. ] k' o; I, ~; Z' Y8 z0 d* q1 h data = std.fit_transform(pre_data) . S. t9 g4 Q Z print((1000-2000)) ( ?" @% i V$ H1 G$ z print(pre_data)2 h" u3 K% V6 O! y+ a0 K print(data) 6 n& E0 l9 F0 o: p$ M 4 T7 ?8 i3 G* J9 }- z& J+ w return None * ?1 x6 m/ ?( ]# R, J+ ~, P 2 W0 X( }3 N; D/ P* | if __name__ == "__main__": # v) V$ N* h6 E2 M stand() $ N$ P4 a6 B. W4 k
! f; W% K+ `* X: G9 A

下一期讲一讲特征工程

) }6 [& @. d7 z" D+ }8 K

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

* f _$ \8 P( k- ?0 g7 h
7 y6 u6 h( ~ F2 e! W7 A6 P & P) T1 |0 R0 J) G. L. j" A) F, f) D8 Q$ g+ P ; I5 }& `4 E1 v4 K! W( v; [; D& O8 ^, h# E# I8 K

相关帖子

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