Добавление столбцов pandas в разреженную матрицу
У меня есть дополнительные производные значения для переменных X, которые я хочу использовать в своей модели.
XAll = pd_data[['title','wordcount','sumscores','length']]
y = pd_data['sentiment']
X_train, X_test, y_train, y_test = train_test_split(XAll, y, random_state=1)
Поскольку я работаю с текстовыми данными в заголовке, я сначала преобразую их в dtm отдельно:
vect = CountVectorizer(max_df=0.5)
vect.fit(X_train['title'])
X_train_dtm = vect.transform(X_train['title'])
column_index = X_train_dtm.indices
print(type(X_train_dtm)) # This is <class 'scipy.sparse.csr.csr_matrix'>
print("X_train_dtm shape",X_train_dtm.get_shape()) # This is (856, 2016)
print("column index:",column_index) # This is column index: [ 533 754 859 ..., 633 950 1339]
Теперь, когда у меня есть текст в виде матрицы терминов документа, я хотел бы добавить другие функции, такие как "wordcount", "sumscores", "length" в X_train_dtm, которые являются числовыми. Это я создам модель с использованием нового dtm и таким образом будет более точным, как я бы вставил additinal особенности.
Как добавить дополнительные числовые столбцы фрейма данных pandas в разреженную матрицу csr?
1 ответ:
Нашел решение. Мы можем сделать это с помощью sparse.hstack:
from scipy.sparse import hstack X_train_dtm = hstack((X_train_dtm,np.array(X_train['wordcount'])[:,None]))
Comments