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

[复制链接]
# h1 J/ F! u! F+ p
! T# a: |# s: O" H3 q( q* a

铁甲将军夜渡关

& S4 i2 g* A9 W4 t) p E3 A

朝臣带漏五更寒

: d: v) P U6 R; ?7 Z# ~

山寺日高僧未起

4 f9 I/ u# ~8 z% M& }$ L

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

5 }4 {. V/ `0 X0 e+ D" E; F

一周没有更新了【吃瓜】

0 p+ ^' T' r2 e; Q7 @$ C& C

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

- b5 i) f X6 p/ `# Z5 e* u% h

1 B+ X! }/ D+ u6 s

都忙

) i; e: J9 A' ?) {; i7 V+ ?8 G: w# m

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

w, K* @5 ?$ f4 f
( }$ Q! u2 J3 p3 Y8 x

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

7 b4 P) |; I+ C

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

! [( `5 f3 l$ s2 F Y& f- j. `

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

. [1 T4 \6 U) d% `2 Z! c8 n) S8 y

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

1 d1 P+ g( a9 ~) \# R

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

: u- [) Z5 U0 d u5 J2 T- F/ }

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

% }& K* x6 K5 {

数据预处理(无量纲化

' {9 G7 q$ M1 s* y% ^4 v( }7 F

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

" S/ ~" ?2 }& | ]& f' j" l3 z

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

* y$ Z; I. U i- p6 H4 v

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

7 h+ ^, C- Z2 B9 A0 e6 X

这会放大温度的影响效果

* y* Q. {$ M$ c) n

数据归一化

3 x' `/ l2 b! @- V' W7 U& u; m8 d' U

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

9 U7 b8 ~/ n) W

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

[1 K% Z0 Q; w0 d+ z& J9 ?) x

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

; D. {2 A. T8 j+ Z
from sklearn.preprocessing import MinMaxScaler . D9 k* v( R# m; n: K& ~* { p- S9 _1 X; m+ q# Y def mm(): * m7 J$ O) y3 g% n """; v) J+ m7 A2 M5 L1 B/ L! M 归一化处理 " p& Q4 C b9 ^; Q """7 E4 G; b1 [, i; Y# e # 实例化MinMaxScaler函数,不填写feature_range参数默认为0,1 # o, p, J( R; X mm = MinMaxScaler(feature_range=(2, 3)) 3 o3 P7 d7 ] w& |0 ?6 J* u" l. f* e8 a1 m data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])0 { q$ [- l/ k* S) J& l* N0 a. D6 a ; i2 s# ^8 W6 F9 ?6 S print(data) ) J: O- O1 R5 p% Z) Z ( o& Z$ A! ? ?! O4 a return None4 ]& Y8 Y; W( g. e. u9 i 6 C. |: Q9 V2 o# t1 S x if __name__ == "__main__": * o- m0 t! a! M4 V" a- ] mm() 9 i+ \/ Q0 r7 x
V4 F; }6 V8 S% O/ P

数据标准化

# H g; V) f7 V# n: Y8 f4 l

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

: X1 @, }/ m/ ?* N- B
from sklearn.preprocessing import StandardScaler( N5 L0 d3 Q3 f2 K) |8 u/ u2 W ; P. x& c3 c; F$ ^ # x = x-mean/γ mean:平均值 γ:标准差 ' G6 n5 y) z* p$ M # 方差 = (x1-mean)²+(x2-mean)²+(xn-mean)² / n 标准差 = 方差开根号 - i# L/ E: |! H: Y- ^8 I: f # 优点,不易受异常数据印象2 w3 h& r* v( P2 X' J, j 4 w+ p4 Z1 B3 \* W. |, }1 l # 一个目标变量由多个特征变量影响,当一个特征变量很大时,影响程度更大,所以我们进行标准化,消除这样的影响 ) G) X# R9 i8 A* K% Z& l4 A" N def stand(): A' h8 ]* D4 [2 }& ~ """ ( n. z) s2 ~& [8 @: t9 U n" C* V# g 标准化缩放0 f5 T _, V9 e9 v """ & ]: f" F( E4 ], M. [3 w std = StandardScaler() - M2 w; N! F- U % z3 \8 [9 \8 }7 g- E pre_data = [[ 1000., -1., 3.],[ 2000., 4., 2.],[ 4000., 6., -1.]] * b2 I. f! s: _, Y, q- D0 H" v5 f5 e- i& S7 _6 d' J8 u data = std.fit_transform(pre_data) 3 s/ \5 y( X0 ~( K: _ print((1000-2000)) 5 y& A5 j5 b" p' S5 j; g1 [, h print(pre_data)/ O/ F( B0 D5 ~ print(data)' R) b& J7 ?5 r2 Y5 X1 L 7 d! s. q1 ?' o& p* [0 c return None, @# @: ]( _- @$ q( C! g6 Q% ^1 L . i9 `6 G0 M/ g n5 T& k1 G if __name__ == "__main__": 0 Q" j+ R, Y8 v1 m stand() 9 B( H4 k5 _2 L, U
4 G4 {' k! S% ^

下一期讲一讲特征工程

- k0 N0 P! J; W/ b

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

3 L0 _1 H- w, j2 {1 O6 h+ @' c2 s/ z
# l% W9 R/ L: R7 `( [( W* ~; A/ h0 r' g; `4 k" A 0 J; D" J6 i' ]8 P1 w" Z8 K 7 H/ M" e6 `. o C/ i3 o3 _# e; J & ?/ N$ I9 E4 W0 ~- `( d2 j
回复

举报 使用道具

相关帖子

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