利用Python進行資料歸一化

2021-10-02 00:12:52 字數 3467 閱讀 5874

歸一化化定義

歸一化就是要把需要處理的資料經過處理後(通過某種演算法)限制在你需要的一定範圍內。

歸一化方法有兩種形式

一種是把數變為(0,1)之間的小數

一種是把有量綱表示式變為無量綱表示式

class sklearn.preprocessing.minmaxscaler(feature_range=(0, 1),

copy=true)

計算原理(參考sklearn官方文件):

x_std =

(x - x.

min(axis=0)

)/(x.max

(axis=0)

- x.

min(axis=0)

)x_scaled = x_std *

(max

-min)+

min

這裡 min, max = feature_range。也就是你要歸一化的範圍,預設是(0,1),即min=0,max=1;

這裡axis=0,表示minmaxscaler方法預設是對每一列做這樣的歸一化操作,這也比較符合實際應用。

示例**:

from sklearn import preprocessing

import numpy as np

x = np.array([[

3.,-

1.,2

.,613.],

[2.,

0.,0

.,232],[

0.,1

.,-1

.,113],[

1.,2

.,-3

.,489]])

min_max_scaler = preprocessing.minmaxscaler(

)x_minmax = min_max_scaler.fit_transform(x)

print

(x_minmax)

執行結果:[[

1.0.

1.1.

][0.66666667

0.33333333

0.60.238][

0.0.66666667

0.40.]

[0.333333331.

0.0.752

]]

背景:訓練好xgboost模型後,對測試集的label進行**,並將其歸一化到(0,1)範圍內,作為**的概率。遇到以下情況:

#predict test set

dataset3_preds[

'label'

]= model.predict(dataset3)

dataset3_preds.label = minmaxscaler(

).fit_transform(dataset3_preds.label.reshape(-1

,1))

執行結果:

attributeerror:

'series'

object has no attribute 'reshape'

試著去掉reshape執行:

#predict test set

dataset3_preds[

'label'

]= model.predict(dataset3)

dataset3_preds.label = minmaxscaler(

).fit_transform(dataset3_preds.label)

執行結果:

valueerror: expected 2d array, got 1d array instead:

array=[-

1.6797101

0.64954907

-2.3749304..

.-0.2589171

-0.5653752

-0.26819348].

reshape your data either using array.reshape(-1

,1)if your data has a single feature or array.reshape(1,

-1)if it contains a single sample.

結果也不行。

出錯的原因是series沒有reshape這個介面,而series有values這個介面,

解決的辦法是y呼叫values介面,然後呼叫values中的reshape方法。

如:

#predict test set

dataset3_preds[

'label'

]= model.predict(dataset3)

dataset3_preds.label = minmaxscaler(

).fit_transform(dataset3_preds.label.values.reshape(-1

,1))

就可以正常執行。

(更多請參考sklearn官方文件)

示例**:

from sklearn import preprocessing

import numpy as np

x = np.array([[

3.,-

1.,2

.,613.],

[2.,

0.,0

.,232],[

0.,1

.,-1

.,113],[

1.,2

.,-3

.,489]])

max_abs_scaler = preprocessing.maxabsscaler(

)x_train_maxsbs = max_abs_scaler.fit_transform(x)

x_train_maxsbs

執行結果:

array([[

1.,-

0.5,

0.66666667,1

.],[

0.66666667,0

.,0.

,0.37846656],

[0.,

0.5,

-0.33333333

,0.18433931],

[0.33333333,1

.,-1

.,0.79771615]]

)

參考部落格:

[1]:資料歸一化 - minmaxscaler()/maxabsscaler() - python**

[2]: attributeerror: 『series』 object has no attribute 『reshape』

資料進行歸一化原因

為什麼要進行歸一化處理,下面從尋找最優解這個角度給出自己的看法。例子假定為 房價的例子,自變數為面積,房間數兩個,因變數為房價。那麼可以得到的公式為 公式 其中 公式 代表房間數,公式 代表 公式 變數前面的係數。其中 公式 代表面積,公式 代表 公式 變數前面的係數。首先我們祭出兩張圖代表資料是否...

利用python進行資料分析

目錄 10 minutes to pandas 翻譯 pandas中loc iloc ix的區別 pandas dropna函式 pandas中dataframe的stack unstack 和pivot 方法的對比 pandas中關於set index和reset index的用法 python匿...

利用python進行資料分析

利用python進行資料分析,需要了解一些基本的方法,比如掌握回歸分析的方法,通過線性回歸和邏輯回歸,其實你就可以對大多數的資料進行回歸分析,並得出相對精確地結論。這部分需要掌握的知識點如下 回歸分析 線性回歸 邏輯回歸 基本的分類演算法 決策樹 隨機森林 樸素貝葉斯 基本的聚類演算法 k mean...