2015-03-25 20 views
0

學習建模之前居中和縮放至單位方差我怎樣才能變換給定的數據爲平均值爲中心,並調整爲使用大熊貓或numpy的或任何合適的python模塊單位方差設定數據還包含一些缺失的值,因爲在建模任務請求幫助之前也應該刪除「Nan」。我怎樣才能變換的描述符的意思機使用Python和大熊貓

謝謝

Ex。數據集。

GA_ID PN_ID PC_ID MBP_ID GR_ID AP_ID class 
0.033 6.652 6.681 0.194 0.874 3.177  0 
0.034 9.039 6.224 0.194 1.137 Nan  0 
0.035 10.936 10.304 1.015 0.911 4.9  1 
0.022 10.11 9.603 1.374 0.848 4.566  1 
0.035 2.963 17.156 0.599 0.823 9.406  1 
0.033 10.872 10.244 1.015 0.574 4.871  1 
0.035 21.694 22.389 1.015 0.859 9.259  1 
0.035 10.936 10.304 1.015 0.911 Nan  1 
0.035 10.936 10.304 1.015 0.911 4.9  1 
0.035 10.936 10.304 1.015 0.911 4.9  0 
0.036 1.373 12.034 0.35 0.259 5.723  0 
0.033 9.831 9.338 0.35 0.919 4.44  0 

我用:

from sklearn import preprocessing 
import numpy as np 
raw_data = open("/home/zebrafish/Desktop/scklearn/data.csv") 
dataset = np.loadtxt(raw_data, delimiter=",") 
X = dataset[:,0:5] 
y = dataset[:,6] 
X_pro = preprocessing.scale(X) 

,但我不知道枯萎這種方法目前還是一下子就忽略了「南」,否則將自動採取「南」適當的步驟,因爲在原始數據沒有「南」價值,但要了解解決方案是否發生我已經在兩個位置手動合併了「南」。

感謝


    Question Update 

隨着一些谷歌上搜索和周圍的數據可能打我發現這種方法可以歸行的基礎上的數據,我想與正常化列的基礎數據。

那麼什麼是列基正規化的適當方法。

感謝

+2

你可以發佈最終的df值應該是什麼,並給出你正在嘗試應用的計算的例子,謝謝 – EdChum 2015-03-25 09:14:01

+0

我已經使用更新的方法 – jax 2015-03-25 09:53:12

+0

你可以刪除'NaN'值並比較輸出no? – EdChum 2015-03-25 09:54:02

回答

1

正如你已經開始了,一個簡單的方法來做到這一點是通過sklearn的預處理庫

您可以通過刪除NaN值開始:

from sklearn.preprocessing import Imputer 
imp = Imputer(missing_values='Nan', strategy='mean', axis=1) 
cleaned_X = imp.fit_transform(X) 

在這種情況下,那麼您的'南'值將被該列中其餘部分的平均值(AP_ID)替代,而不是完全刪除行(並丟失數據)。

其次,爲了規範列的基礎上你的數據,你的方法實際上是正確的:

scaled_X = preprocessing.scale(cleaned_X) 

默認情況下,sklearn將功能(欄)歸您變量;通過樣本(行)規範化,您可以將'axis = 1'添加到比例函數的參數中。但是,懷疑你會想要這樣做。

參考: http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.scale.html

值得注意的一點是,如果你的統計分析以後(比如線性迴歸或者你有什麼)需要跨功能沒有顯著相關性的假設,你發現有很多跨功能的相關性 - 單獨縮放每列不夠(預處理.scale會自動執行)。

如果確實是這樣,我建議用「美白=真正的」第一次使用sklearn的PCA分解。這將有效地將數據縮放到單位方差和零均值,同時消除特徵間的線性相關(通過投影到解釋大部分數據可變性的正交方向)。

參考:http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html#sklearn.decomposition.PCA

希望這有助於!

+0

2感謝您的回覆, – jax 2015-04-03 06:27:36

+0

我對標準化有一點疑問,比如我有一個類變量「活動」,它有兩個值「活動」和「非活動」什麼是標準化的最佳方法1)我應該正常化「活動」和「不活躍」的數據,然後結合兩者進行機器學習或2)我可以對組合數據進行標準化。謝謝 – jax 2015-04-03 06:36:56

+0

@jax,不幸的是,我認爲沒有一般的答案,我知道選擇哪個選項。這實際上取決於您的數據以及您想要應用的特定機器學習/統計算法。然而;我通常會建議選擇1)作爲基本情況,除非您特別關注您的功能與您的ML算法如何處理該功能之間的相關性。 在你的例子中,我會想到「活動」和「非活動」數據(希望)不會顯着相關,所以我只是用sklearn的比例函數 – 2015-04-03 20:02:25

相關問題