2013-07-09 54 views
0

這就是我所做的。我認爲一個熱門編碼器正在發生一些事情。一個熱門編碼器混淆

from sklearn.datasets import make_classification 
from sklearn.feature_selection import RFE 


X, y = make_classification(n_samples=50, n_features=10, random_state=10) 
encoder = preprocessing.LabelEncoder() 
encoder.fit(X) 
X = encoder.transform(X) 
print X 
print X.shape 

encoder = preprocessing.OneHotEncoder() 
encoder.fit(X) 
X = encoder.transform(X) 


print encoder.feature_indices_ 

estimator = SVR(kernel="linear") 
selector = RFE(estimator, 100, step=1) 
selector = selector.fit(X, y) 

在X上使​​用標籤編碼器後,我得到了一個形狀數組(50,10)(這是顯而易見的)。但是在做一次熱編碼之後,我得到的特徵索引如下。

[ 0 499 987 1487 1968 2459 2957 3401 3886 4379 4868] 

就我所知,2個指標之間的最大範圍應該小於或等於行數,不是嗎?這是50.但在這裏,我得到了500而不是50.我有一個熱門編碼錯誤或有一個熱門編碼功能有任何其他問題?

(這個例子是採取僅用於說明我的問題)

回答

1

的行數沒有關係,而是值的跨行任何給定列(即特徵)在範圍內。當您打印X時,您會看到任何給定列中的值可以跨越1:500的整個範圍。