如何将TF-IDF向量化器与自定义特征结合

我正在尝试构建一个模型,结合来自数据框的数值特征和文本特征。然而,我在成功地组合这些特征、使用这些特征进行训练,然后测试这些特征时遇到了很多麻烦。

目前,我正在尝试使用DataFrameMapper如下所示:

from sklearn.feature_extraction.text import TfidfTransformerfrom sklearn_pandas import DataFrameMappermapper = DataFrameMapper([     ('body', TfidfVectorizer()),     ('numeric_feature', None), ]) for train_index, test_index in kFold.split(DF['body']):    # 使用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]    # 向量化/转换文档    X_train = mapper.fit_transform(X_train)    X_test = mapper.fit_transform(X_test)    # 获取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 has 49974 features per sample; expecting 87786

有谁知道如何解决这个问题,或者知道更好的方法来结合/训练/测试数值和文本特征?我也希望尽可能保持特征为稀疏矩阵。


回答:

而不是:

X_train = mapper.fit_transform(X_train)X_test = mapper.fit_transform(X_test) 

尝试:

X_train = mapper.fit_transform(X_train)X_test = mapper.transform(X_test) # 将fit_transform改为transform

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注