【发布时间】:2019-07-11 11:18:05
【问题描述】:
我正在尝试构建一个模型,该模型结合了来自数据框的数字特征和来自数据框的文本特征。但是,我在成功组合这些功能、使用这些功能进行训练、然后测试这些功能时遇到了很多麻烦。
现在我正在尝试像这样使用 DataFrameMapper:
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn_pandas import DataFrameMapper
mapper = DataFrameMapper([
('body', TfidfVectorizer()),
('numeric_feature', None),
])
for train_index, test_index in kFold.split(DF['body']):
# Split the dataset by Kfold
X_train = even_rand[['body','numeric_feature']].iloc[train_index]
y_train = even_rand['sub_class'].iloc[train_index]
X_test = even_rand[['body','numeric_feature']].iloc[test_index]
y_test = even_rand['sub_class'].iloc[test_index]
# Vectorize/transform docs
X_train = mapper.fit_transform(X_train)
X_test = mapper.fit_transform(X_test)
# Get SVM
svm = SGDClassifier(loss='hinge', penalty='l2',
alpha=1e-3, n_iter=5, random_state=10)
svm.fit(X_train, y_train)
svm_score = svm.score(X_test, y_test)
这成功地结合了数据并训练了数据,但是当我尝试测试数据时,特征似乎没有正确匹配,并且出现错误
ValueError: X 每个样本有 49974 个特征;期待 87786
有人知道如何解决这个问题或知道将数字和文本特征结合/训练/测试的更好方法吗?如果可能的话,我还想将这些特征保持为稀疏矩阵。
【问题讨论】:
标签: pandas machine-learning scikit-learn nlp data-science