負數如何歸一化處理 資料處理時乙個非常重要的驗證

2021-10-11 23:17:33 字數 1482 閱讀 8859

當你拿到乙個資料集的時候,以及當你處理完資料時,你要把資料餵入模型中去,這時候可能會出現各種各樣的問題,其中最常遇到的就是資料無法處理,即資料型別不匹配問題,例如,你要求某一特徵的最大值,結果該特徵的特徵值是str型別的。這時候,我們就需要對資料集的書友型別有乙個整體的把握。

函式可以幫助我們檢視資料集中各個特徵的特徵值型別,幫助我們避開坑,順利送入模型中。

當我們想要轉換某一列的型別時,使用如下命令:

df.列名稱 = df.列名稱.astype(想要轉換的型別)

如此即得到了我們需要的資料型別。

還有乙個非常需要注意的地方就是檢測特徵裡面是否有nan,以及如何處理他,一般如果資料量小,我們可以將其刪除,如果資料量大,我們可以將其作為乙個特徵處理。

如何檢測資料集中是否含有nan?

# 檢視每一列是否有nan: df.isnull().any(axis=0) # 檢視每一行是否有nan: df.isnull().any(axis=1) # 檢視所有資料中是否有nan最快的: df.isnull().values.any()

如何刪除呢?

如圖,我們先獲取每一行是否含有nan的乙個陣列,陣列有true和false組成,true是含有nan,然後我們將其放入到df中,抽取df中mm等於false即沒有nan的項,之後我們再一次檢測,發現已經沒有nan了。

當然也有更簡單的df.dropna()直接刪掉帶nan的行。

我們也可以將nan項填零處理,

在array陣列裡面如何尋找是否包含nan呢?

x = np.array([[2,3,nan],

[3,nan,1]])

print (np.argwhere(np.isnan(x)))

df = pd.dataframe()

print(df)

df.fillna(0, inplace = true)

!!!注意

在做資料處理的時候一定要及時的剔除異常資料,否則會出現很大的問題,例如年齡出現負數等與事實嚴重不符的情況,之前遇到乙個問題,就是車齡出現負數,這時候因為要做歸一化,我就使用log做了縮減,眾所周知,log的引數是無法取負值的,所以會出現nan這種情況,於是我做了dropna操作,但是在訓練模型的時候依然出現了valueerror: input contains nan, infinity or a value too large for dtype('float32'64)

這個報錯提示,提示說,輸入資料報含了nan或inf(無窮值)或數值超過了float能表示的範圍,一開始會錯了意,以為nan已經去除了為什麼還說有nan呢?原來我的數值裡面含有0,而log(0)是乙個負無窮的數,這與錯誤提示裡面的infinity相符合了。所以,我們一定要將資料處理好,否則乙個小問題可能就會耽誤很長的時間。

歸一化處理資料 python

源自 machine learning in action 1.原因 例如在用 knn 演算法處理資料時,比如有兩個特徵,乙個特徵的取值範圍為0 1,另乙個取值範圍為1w 以上,那麼用歐式距離計算的話第乙個特徵的影響幾乎就會微不足道,為了解決這個問題,在處理資料的時候對資料進行歸一化處理。2.def...

Sklearn 資料歸一化處理

中心化的本質是讓所有記錄減去乙個固定值,即讓資料樣本資料平移到 某個位置。縮放的本質是通過除以乙個固定值,將資料固定在某個範圍之中,取對數也算是一種縮放處理。minmaxscaler有乙個重要引數,feature range,控制我們希望把資料壓縮到的範圍,預設是 0,1 pd.dataframe ...

資料的歸一化處理

資料的標準化 資料的標準化 normalization 是將資料按比例縮放,使之落入乙個小的特定區間。在某些比較和評價的指標處理中經常會用到,去除資料的單位限制,將其轉化為無量綱的純數值,便於不同單位或量級的指標能夠進行比較和加權。目前資料標準化方法 直線型方法 如極值法 標準差法 折線型方法 如三...