scale和StandardScaler可以用于回归模型中的目标值处理。 - Z3 r& n5 s: E
from sklearn.preprocessing import StandardScaler 4 W5 g* ~' t: e& W' y, J# q% sx=[[10001,2],[16020,4],[12008,6],[13131,8]] 3 y+ i/ \6 R8 cX_scaler = StandardScaler() * Z1 k' x6 e( u$ n. K8 oX_train = X_scaler.fit_transform(x)+ w) c, V/ f9 ^5 @1 M7 Z: b
X_train 2 v0 C, j8 q+ S& t0 ~#结果如下! s. }( p/ C* P
array([[-1.2817325 , -1.34164079], ( ]: @0 `0 u7 |3 H# B4 [ [ 1.48440157, -0.4472136 ], - S. t9 I) ]' X- r2 P [-0.35938143, 0.4472136 ], * X, u- `; o3 W: h [ 0.15671236, 1.34164079]]) - s. E3 L2 n, P2 p; z! \ 8 ^& t* Q4 j% g r% d& {. J& fscaler = preprocessing.StandardScaler().fit(X) #out: StandardScaler(copy=True, with_mean=True, with_std=True)% J' y& `7 _& d5 I- @1 M
scaler.mean_ #out: array([ 1., 0. , 0.33333333]) , f$ h6 k& p( L; E
scaler.std_ #out: array([ 0.81649658, 0.81649658, 1.24721913]) ' ]" a' S& B8 ~; J) H! K
#测试将该scaler用于输入数据,变换之后得到的结果同上 ) e: C$ G# a; v5 |: ascaler.transform(X) ; F3 }, z N0 J' ~. Q
#out: % K0 |% {0 M) i
array([[ 0., -1.22474487, 1.33630621], {- E( y9 o% f8 p5 h' f
[ 1.22474487, 0. , -0.26726124], 9 s% l6 o2 \: u
[-1.22474487,1.22474487, -1.06904497]]) 7 f4 b9 C L' y3 ?
scaler.transform([[-1., 1., 0.]]) #scale the new data& p: `) O" |, S7 V
# out: array([[-2.44948974, 1.22474487, -0.26726124]])2 C: c5 c, h% w; P* `- I. W7 |8 ~5 p
s, L0 J( |) K# {2 将数据特征缩放至某一范围(scalingfeatures to a range) $ F: k! v2 d, o+ G7 d* B( e 1 i) n I1 k$ v7 g8 h* J- |! Y/ v* { 5 q/ V1 H4 J& f4 o3 @ I
2.1 MinMaxScaler (最小最大值标准化) , z9 x; N, a4 R- L6 d7 _ 它默认将每种特征的值都归一化到[0,1]之间,归一化后的数值大小范围是可调的(根据MinMaxScaler的参数feature_range调整)。 + }! z1 p* D& M' B
, J' b$ H2 s2 p7 n2 x/ X$ f
from sklearn.preprocessing import MinMaxScaler# B, K* f4 _7 | c
x=[[10001,2],[16020,4],[12008,6],[13131,8]]& k6 r5 t9 t) K' b! X! |
min_max_scaler = MinMaxScaler() 2 _3 i7 u5 F/ x9 ?X_train_minmax = min_max_scaler.fit_transform(x) #归一化后的结果,+ P5 }! b. k, @5 k, ]& z8 P/ s: }
) c6 V7 l; u, g% e+ Omin_max_scaler = MinMaxScaler(feature_range=(-1,1)): O3 z5 U* s1 r( {- E# h4 Y
X_train_minmax = min_max_scaler.fit_transform(x) #归一化到(-1,1)上的结果 6 }1 }* r. L' Y$ c5 N6 Q8 {6 C# z" d+ m. Q MinMaxScaler的实现& ^- P* H* b* u! {: G: ?& T3 n9 K
X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))% j; s' g! i0 Y+ S
X_scaled = X_std / (max - min) + min ! j6 O' @5 c# n! h! q+ f0 x$ J1 E/ |1 Y' x
这是 向量化的表达方式,说明X是矩阵,其中! F, c3 P4 H3 v) m) P
9 g$ ?, e2 K* }. e% a, u
X_std:将X归一化到[0,1]之间 g) r9 A8 H) a* \X.min(axis=0)表示列最小值. z/ m& R0 ?, ? s1 w6 O' S* | ^
max,min表示MinMaxScaler的参数feature_range参数。即最终结果的大小范围 9 ^" q6 O0 ]4 w9 S6 w2 P, f2 o- e0 ~: `
' S$ e0 y6 D x
2.2 MaxAbsScaler(绝对值最大标准化) - @) k6 S0 E! H# H* z; N 与上述标准化方法相似,但是它通过除以最大值将训练集缩放至[-1,1]。这意味着数据已经以0为中心或者是含有非常非常多0的稀疏数据。 0 A7 K$ j. P: R/ k2 b( o" i `* R7 M
X_train = np.array([[ 1., -1., 2.],, c* r/ Z: `+ G, @& \
[ 2., 0., 0.], 5 G& s. X/ ]* m8 x5 r/ H1 [ [ 0., 1., -1.]])9 W7 c+ N8 k6 `+ C
max_abs_scaler = preprocessing.MaxAbsScaler()' N( `9 {" B9 K3 ?, v7 r
X_train_maxabs = max_abs_scaler.fit_transform(X_train) 4 ~; z- K$ q& {* Q: T# doctest +NORMALIZE_WHITESPACE^, out: array([[ 0.5, -1., 1. ], [ 1. , 0. , 0. ], [ 0. , 1. , -0.5]])2 J n8 w$ M5 _# a) S. Q2 P m
X_test = np.array([[ -3., -1., 4.]]) - a; u, a8 ^) I: J( h* W1 ^% M$ B) ~X_test_maxabs = max_abs_scaler.transform(X_test) #out: array([[-1.5, -1. , 2. ]]): k. h$ ?: `+ y* Z" m' B4 [$ _
max_abs_scaler.scale_ #out: array([ 2., 1., 2.]) & d' d$ x9 J8 r3 O* _: h# E " `& ?* E; A# @! f3 x; T9 ]4 W; \5 @1 z# p1 i
% a! w+ H3 Z; z; `4 {! W8 \. i9 ]+ w & r9 Z3 y9 n& B' R! ~2 X. h" R' W* Q* [* o7 r
; c! C4 M' N H' p' D ; O8 m5 s* t1 I! z" d& o1 c) m + X: t2 E/ R" C- J9 D0 M 0 E4 T) J2 K e0 U; }3 u) G/ p( I. I
———————————————— : s0 Y) G1 X! k( ] o Y版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。6 y, G" C* r Z5 \; x# D
原文链接:https://blog.csdn.net/qq_29831163/article/details/89420223 ) {" y Z9 R4 t" g1 m : O: v( g3 a' ?; D) N1 M : r4 A- T- N% d8 h" Y