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

[复制链接]
9 g9 g$ e/ T/ \ @* ^) Z
4 R3 B9 N) E/ m! _# u) L

铁甲将军夜渡关

# }+ I* p( J) w1 ], l; B- v- b

朝臣带漏五更寒

7 @3 R( n$ u4 L) O9 E0 Q T

山寺日高僧未起

8 c4 Z( d J8 C6 N) m7 r

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

; i2 I+ ~8 W& W( @& @* w

一周没有更新了【吃瓜】

" Q6 F2 x' x- u

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

2 P9 L6 J" E( X4 x+ b4 z

$ i& g7 G' m/ S, E" P

都忙

6 C7 S1 o) R% @ F) {# e1 x( _

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

3 t! _( z3 w8 P* T
+ N5 @, z. ~: o& e4 y. M

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

! E" ?/ W1 W) w' X4 c7 \

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

9 D# @; I! H4 j& V& ` O

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

# J) v. R7 \* ~2 m" B" Z

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

( z5 l# A% p) s, S( a" E- m1 K1 b

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

/ d! p: n0 r$ x9 }" @9 u! n

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

2 o8 M9 o, z U) I4 s' r- w

数据预处理(无量纲化

9 @9 e& a" u% d6 C; Q( k$ ?- W

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

8 f$ y, T- L8 {( P

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

/ g( U" \/ `: I1 _

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

/ v2 a1 m! |& }' E- p/ V3 `( m6 J! K

这会放大温度的影响效果

' @& V4 j5 h. E" ?, s: g: m8 ?

数据归一化

! x6 D1 K W; `) R/ n

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

* K1 Z- [( q; _- Z. S

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

2 t6 Z$ e2 i) @( L0 T8 S

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

# l+ z* ?$ S" w% O6 N+ |. _3 j
from sklearn.preprocessing import MinMaxScaler4 S6 i$ y( c: @" ]6 V* [5 ` ( G6 r i* D* U6 k( K4 l def mm():- Q- ~. G3 K( G0 [8 r """ 4 _9 U- y; W- _9 {8 u& H) | 归一化处理 9 H5 v# f$ d% v/ w" b, [* C* q """ " s/ i! P' q0 H `4 [ # 实例化MinMaxScaler函数,不填写feature_range参数默认为0,19 b' V$ a/ i" D% a" y; A0 J D* Y mm = MinMaxScaler(feature_range=(2, 3)) " R5 r6 y3 E7 o! h7 h ; T2 b9 l8 \% l; D: t6 Y data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]]) # ` [4 a. W: B; b ! ^& f& w# ^9 }8 q print(data)7 j; M' ~' U1 \6 w/ z; ~5 f! P 9 r. [! u7 v; h, @8 F1 s return None + k' d. g" U G* W# y/ W0 O5 U) |, c, w if __name__ == "__main__":1 B- ^" ~: D6 K( L, n: d% r' z" v mm() * B0 l1 ^- w4 ^, e; _+ X4 `1 e
+ v% Z4 e0 F5 d) e

数据标准化

6 U- o! I' ^; @2 s

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

- w+ {1 U/ q) `* o+ F7 k* h
from sklearn.preprocessing import StandardScaler : Y0 a' o k- E" \7 h: h! j$ \! u' z* U8 G . K8 `) q, X0 V3 E$ K) J # x = x-mean/γ mean:平均值 γ:标准差 0 e# {8 F& f* I5 T. Y! L7 n # 方差 = (x1-mean)²+(x2-mean)²+(xn-mean)² / n 标准差 = 方差开根号 9 b; p9 J/ R9 B/ K, _& J' { # 优点,不易受异常数据印象 9 Y+ E( U y6 ~; a2 b0 H" U5 N& M0 y# F! _ # 一个目标变量由多个特征变量影响,当一个特征变量很大时,影响程度更大,所以我们进行标准化,消除这样的影响/ G7 a# J3 X4 h, t def stand():/ S8 f, @1 S' P$ `5 k3 T$ ~, J """( f$ ^& o7 o4 E+ a( m1 L 标准化缩放2 s) L% }, v4 F0 M8 D& J) p """ - i' n8 Y! a$ X/ m$ `( R& q! H7 N+ a std = StandardScaler() J1 q; ^; Z: d3 ~) T, l2 {$ V pre_data = [[ 1000., -1., 3.],[ 2000., 4., 2.],[ 4000., 6., -1.]]! _8 K. A2 \" _5 U+ ?( y m% { : s* e8 j& T ? data = std.fit_transform(pre_data) . ]( Q ?. R, H& L H print((1000-2000))* n7 J5 x( ?& h! H8 O: g print(pre_data) G& E0 G+ x8 i2 {! C% B print(data)/ R# R2 [1 r+ Z$ o- \ " y8 C% `2 L" O/ p, h return None 4 \9 {# M# l: A% d% W 2 @7 U% c7 @0 ` if __name__ == "__main__": / P6 i. F, R( {6 s, j! N r m1 e stand(); U, o+ u! V2 V! w. L- D; U+ J
- X$ e, X7 d* s: c1 K7 D2 G

下一期讲一讲特征工程

I4 C. B) w" U

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

2 \( @( Z( _! y; U, W3 a
9 W4 o; L' Y" ] `( x3 @) O; c; O/ T 7 w) s: C5 Y4 s* ^3 N & m1 J( w- D% p2 G8 b # P6 s3 \$ ]) Z
回复

举报 使用道具

相关帖子

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