Я думаю , вы можете использовать scikit учиться на поезде данных, вот один горячий пример датчика в нем :
from sklearn.preprocessing import OneHotEncoder
>>> enc = OneHotEncoder()
>>> enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])
OneHotEncoder(categorical_features='all', dtype=<... 'numpy.float64'>,
handle_unknown='error', n_values='auto', sparse=True)
>>> enc.n_values_
array([2, 3, 4])
>>> enc.feature_indices_
array([0, 2, 5, 9])
>>> enc.transform([[0, 1, 1]]).toarray()
array([[ 1., 0., 0., 1., 0., 0., 1., 0., 0.]])
==== UPDATE ====
Я пишу один подробный пример о том, как использовать горячий кодер для строковых атрибутов, с DictVectorizer
import pandas as pd
from sklearn.feature_extraction import DictVectorizer as DV
d = [
{'country':'A', 'Gender':'M'},
{'country':'B', 'Gender':'F'},
{'country':'C', 'Gender':'F'}
]
df = pd.DataFrame(d)
print df
test_d = [
{'country':'A', 'Gender':'F'},
{'country':'B', 'Gender':'F'}
]
test_df = pd.DataFrame(test_d)
print test_df
train_x = df.T.to_dict().values()
vx = DV(sparse=False)
transform_x = vx.fit_transform(train_x)
print 'transform_train_df'
print transform_x
test_x = test_df.T.to_dict().values()
transform_test_x = vx.transform(test_x)
print 'transform_test_df'
print transform_test_x
выход:
Gender country
0 M A
1 F B
2 F C
Gender country
0 F A
1 F B
transform_train_df
[[ 0. 1. 1. 0. 0.]
[ 1. 0. 0. 1. 0.]
[ 1. 0. 0. 0. 1.]]
transform_test_df
[[ 1. 0. 1. 0. 0.]
[ 1. 0. 0. 1. 0.]]