Во-первых, я не понимаю, где в вашем массиве выборки есть функции и где наблюдения.
Во-вторых, DictVectorizer
не содержит данных и предназначен только для утилиты преобразования и хранения метаданных. После преобразования он сохраняет имена функций и сопоставление. Он возвращает массив numpy, используемый для дальнейших вычислений. Размер массива матрицы (характер матрицы) равен features count
x number of observations
со значениями, равными значению функции для наблюдения. Поэтому, если вы знаете свои наблюдения и функции, вы можете создать этот массив любым другим способом.
В случае, если вы ожидаете sklearn сделать это для вас, вы не должны реконструировать Dict вручную, так как это может быть сделано с to_dict
применительно к транспонированной dataframe:
>>> df
col1 col2
0 A foo
1 B bar
2 C foo
3 A bar
4 A foo
5 B bar
>>> df.T.to_dict().values()
[{'col2': 'foo', 'col1': 'A'}, {'col2': 'bar', 'col1': 'B'}, {'col2': 'foo', 'col1': 'C'}, {'col2': 'bar', 'col1': 'A'}, {'col2': 'foo', 'col1': 'A'}, {'col2': 'bar', 'col1': 'B'}]
С scikit учиться 0.13.0 (3 января 2014) есть новый параметр 'records'
для метода to_dict()
доступен, так что теперь вы можете просто использовать этот метод без дополнительных манипуляций:
>>> df = pandas.DataFrame({'col1': ['A', 'B', 'C', 'A', 'A', 'B'], 'col2': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar']})
>>> df
col1 col2
0 A foo
1 B bar
2 C foo
3 A bar
4 A foo
5 B bar
>>> df.to_dict('records')
[{'col2': 'foo', 'col1': 'A'}, {'col2': 'bar', 'col1': 'B'}, {'col2': 'foo', 'col1': 'C'}, {'col2': 'bar', 'col1': 'A'}, {'col2': 'foo', 'col1': 'A'}, {'col2': 'bar', 'col1': 'B'}]
Благодаря @alko я просто обновил OP –
Каждая строка является экземпляром ** **, то есть образец или наблюдение, и каждый column - это тип функции. В приведенном выше примере у меня есть 6 выборок, и каждый образец является двумерным, т. Е. Моя характеристическая матрица ** X ** будет (6,2) по размеру. Задача состоит в том, чтобы ** векторизовать ** каждый столбец в ** X **, поскольку они содержат текстовые записи и не могут быть поданы непосредственно в классификатор или регрессор. –
@ пользователь815423426 окончательно понял. вы можете захотеть следовать Мэтту или использовать 'to_dict', чтобы получить необходимый dict (см. обновление). – alko