2015-04-01 48 views
0

我想使用RandomizedLogisticRegression來選擇我的數據集的變量。但問題是,我的數據集中的一項功能是Gender。所以它的值是'F'或'M'而不是數值。因此,我得到了以下錯誤:sklearn.linear_model.RandomizedLogisticRegression:句柄分類值

Traceback (most recent call last): 
    File "main.py", line 84, in Customer_Acquisition_Binary_Logistics 
    self.randomized_Logistic_regression() 
    File "main.py", line 92, in randomized_Logistic_regression randomized_logistic.fit(X,y) 
    File "C:\Python27\lib\site-packages\sklearn\linear_model\randomized_l1.py", line 91, in fit 
    X = as_float_array(X, copy=False) 
    File "C:\Python27\lib\site-packages\sklearn\utils\validation.py", line 112, in as_float_array 
    return X.astype(np.float32 if X.dtype == np.int32 else np.float64) ValueError: could not convert string to float: F 

如何處理不是數字的分類值?謝謝。

+0

您必須將它們編碼爲一個數值,sklearn瞭解到數值,而不是STR值 – EdChum 2015-05-19 08:37:10

回答

0

你必須編碼STR值轉換成數值,爲此,你可以使用LabelEncoder

In [33]: 

from sklearn import preprocessing 
le = preprocessing.LabelEncoder() 
print(le.fit(["paris", "paris", "tokyo", "amsterdam"])) 
​ 
print(list(le.classes_)) 
​ 
print(le.transform(["tokyo", "tokyo", "paris"])) 
​ 
print(list(le.inverse_transform([2, 2, 1]))) 
​ 
LabelEncoder() 
['amsterdam', 'paris', 'tokyo'] 
[2 2 1] 
['tokyo', 'tokyo', 'paris']