OneHotEncoder ที่มีค่าหมวดหมู่สตริง

ฉันมีเมทริกซ์จำนวนต่อไปนี้:

M = [
    ['a', 5, 0.2, ''],
    ['a', 2, 1.3, 'as'],
    ['b', 1, 2.3, 'as'],
]
M = np.array(M)

ฉันต้องการเข้ารหัสค่าหมวดหมู่ ('a', 'b', '', 'as') ฉันพยายามเข้ารหัสโดยใช้ OneHotEncoder ปัญหาคือว่าใช้ไม่ได้กับตัวแปรสตริงและสร้างข้อผิดพลาด

enc = preprocessing.OneHotEncoder()
enc.fit(M)
enc.transform(M).toarray()

ฉันรู้ว่าฉันต้องใช้ categorical_features เพื่อแสดงค่าที่ฉันจะเข้ารหัส และฉันคิดว่าการให้ dtype ฉันจะสามารถจัดการค่าสตริงได้ แต่ทำไม่ได้ มีวิธีเข้ารหัสค่าหมวดหมู่ในเมทริกซ์ของฉันหรือไม่?


person Salvador Dali    schedule 08.10.2015    source แหล่งที่มา


คำตอบ (1)


คุณสามารถใช้ DictVectorizer:

from sklearn.feature_extraction import DictVectorizer
import pandas as pd

dv = DictVectorizer(sparse=False) 
df = pd.DataFrame(M).convert_objects(convert_numeric=True)
dv.fit_transform(df.to_dict(orient='records'))

array([[ 5. ,  0.2,  1. ,  0. ,  1. ,  0. ],
       [ 2. ,  1.3,  1. ,  0. ,  0. ,  1. ],
       [ 1. ,  2.3,  0. ,  1. ,  0. ,  1. ]])

dv.feature_names_ มีการโต้ตอบกับคอลัมน์:

[1, 2, '0=a', '0=b', '3=', '3=as']

person hellpanderr    schedule 08.10.2015