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, 0.2, 1.0, 0.0, 1.0, 0.0], [2.0, 1.3, 1.0, 0.0, 0.0, 1.0], [1.0,
    2.3, 0.0, 1.0, 0.0, 1.0]])
OneHotEncoder со строковыми категориальными значениями