6

मेरे पास 2 स्पष्ट चर, और आईडी चर और एक लक्षित चर (वर्गीकरण के लिए) के साथ एक पांडस डेटाफ्रेम है। मैं OneHotEncoder के साथ विशिष्ट मानों को परिवर्तित करने में कामयाब रहा। इसका परिणाम एक स्पैर मैट्रिक्स में होता है।sklearn में OneHotEncoder से आउटपुट का उपयोग कैसे करें?

ohe = OneHotEncoder() 
# First I remapped the string values in the categorical variables to integers as OneHotEncoder needs integers as input 
... remapping code ... 

ohe.fit(df[['col_a', 'col_b']]) 
ohe.transform(df[['col_a', 'col_b']]) 

लेकिन मैं कोई सुराग नहीं कैसे मैं एक DecisionTreeClassifier में यह विरल मैट्रिक्स का उपयोग कर सकते है? विशेष रूप से जब मैं बाद में अपने डेटाफ्रेम में कुछ अन्य गैर-वर्गीकृत चर जोड़ना चाहता हूं। धन्यवाद!

संपादित miraculixx की टिप्पणी करने के लिए जवाब में: मैं भी DataFrameMapper sklearn-पांडा में

mapper = DataFrameMapper([ 
    ('id_col', None), 
    ('target_col', None), 
    (['col_a'], OneHotEncoder()), 
    (['col_b'], OneHotEncoder()) 
]) 

t = mapper.fit_transform(df) 

की कोशिश की लेकिन तब मैं इस त्रुटि मिलती है:

TypeError: no supported conversion for types : (dtype('O'), dtype('int64'), dtype('float64'), dtype('float64')).

+0

[sklearn-pandas] (https://github.com/paulgb/sklearn-pandas) डेटाफ्रेम और स्केलर के साथ काम करते समय वास्तव में सहायक होता है। – miraculixx

उत्तर

9

मैं तुम्हें देखने के पहले से ही पांडों का उपयोग कर रहे हैं, तो अपने get_dummies फ़ंक्शन का उपयोग क्यों नहीं कर रहे हैं?

import pandas as pd 
df = pd.DataFrame([['rick','young'],['phil','old'],['john','teenager']],columns=['name','age-group']) 

परिणाम

name age-group 
0 rick  young 
1 phil  old 
2 john teenager 

अब आप get_dummies

pd.get_dummies(df) 

परिणाम

name_john name_phil name_rick age-group_old age-group_teenager \ 
0   0   0   1    0     0 
1   0   1   0    1     0 
2   1   0   0    0     1 

    age-group_young 
0    1 
1    0 
2    0 

साथ सांकेतिक शब्दों में बदलना और आप वास्तव में अपने Sklearn के DecisionTreeClassifier में नए पांडा DataFrame उपयोग कर सकते हैं। से इस उदाहरण को

+1

धन्यवाद Guiem Bosch, जो काम किया। हालांकि, मुझे केवल दो कॉलम पर get_dummies का उपयोग करने के लिए निर्दिष्ट करना था। अगर मैंने डेटाफ्रेम में आईडी वैरिएबल छोड़ा तो मुझे संदेश मिला कि मेरा कर्नेल मर गया। तो निम्न कोड काम किया: pd.get_dummies (डीएफ [['col_a', 'col_b']]) –

+0

इसके अतिरिक्त, स्ट्रिंग मानों को पूर्णांक में रीमेप करना जरूरी नहीं है। अन्य wize get_dummies कुछ भी प्रतीत नहीं होता है। –

संबंधित मुद्दे