2016-11-13 3 views
0

Я пытаюсь подготовить данные для контролируемого обучения. У меня есть данные Tfidf, который был сгенерирован из колонки в моем dataframe под названием «слит»Комбинируйте Sklearn TFIDF с дополнительными данными

vect = TfidfVectorizer(stop_words='english', use_idf=True, min_df=50, ngram_range=(1,2)) 
X = vect.fit_transform(merged['kws_name_desc']) 
print X.shape 
print type(X) 

(57629, 11947) 
<class 'scipy.sparse.csr.csr_matrix'> 

Но мне также нужно добавить дополнительные столбцы этой матрицы. Для каждого документа в матрице TFIDF у меня есть список дополнительных числовых функций. Каждый список имеет длину 40 и состоит из поплавков.

Так что для уточнения, у меня есть 57 629 списков длины 40, которые я хотел бы добавить к моему TDIDF результату.

В настоящее время у меня это в DataFrame, например, данные: merged ["other_data"]. Ниже приведен пример строки из объединенного [ «other_data»]

0.4329597715,0.3637511039,0.4893141843,0.35840... 

Как я могу добавить в 57,629 ряды моей колонке dataframe с матрицей TF-IDF? Я честно не знаю с чего начать и буду признателен за любые указатели/руководство.

ответ

0

Я понял это:

Первая: итерация по моему колонку панд и создать список списков

for_np = [] 

for x in merged['other_data']: 
    row = x.split(",") 
    row2 = map(float, row) 
    for_np.append(row2) 

Затем создать массив нп:

n = np.array(for_np) 

Затем использовать SciPy. sparse.hstack на X (моя исходная матрица tfidf с разреженной матрицей и моя новая матрица. Я, вероятно, вернусь к весовой оценке этих 40-d векторов, если они не улучшат результаты классификации, но этот подход сработал!

import scipy.sparse 

X = scipy.sparse.hstack([X, n]) 
0

Это сделает работу.

`df1 = pd.DataFrame(X.toarray()) //Convert sparse matrix to array 
df2 = YOUR_DF of size 57k x 40 

newDf = pd.concat([df1, df2], axis = 1)`//newDf is the required dataframe 
0

Вы могли бы посмотреть на ответ на этот вопрос:

use Featureunion in scikit-learn to combine two pandas columns for tfidf

Очевидно, что anwers данные должны работать, но как только вы хотите, чтобы ваш классификатор делать прогнозы, вы определенно хотите работать с конвейерами и объединяться.

 Смежные вопросы

  • Нет связанных вопросов^_^