SKlearn SGD Partial Fit 错误:特征数 378 与之前的数据不匹配 4598
Posted
技术标签:
【中文标题】SKlearn SGD Partial Fit 错误:特征数 378 与之前的数据不匹配 4598【英文标题】:SKlearn SGD Partial Fit error: Number of features 378 does not match previous data 4598 【发布时间】:2017-10-17 10:09:27 【问题描述】:我有 pkl 我的分类器并在另一个笔记本中打开并尝试在分类器上执行 partial_fit 但收到错误 Number of features 378 does not match previous data 4598。
with open("models/count_vect_Item Group.pkl", 'r') as f:
global count_vect_item_group
count_vect_item_group = joblib.load(f)
with open("models/model_Item Group.pkl", 'r') as f:
global model_predicted_item_group
model_predicted_item_group = joblib.load(f)
count_matrix_X_train = count_vect_item_group.fit_transform(X_test)
X_train_tf_idf = tf_idf(count_matrix_X_train)
model_predicted_item_group.partial_fit(X_train_tf_idf, labels_test )
无法使用新数据集训练我的分类器。
【问题讨论】:
【参考方案1】:这个错误是因为在你腌制分类器之前,你用 4598 个特征(X 中的列数)训练它,现在只有 378 个。它应该与旧功能相同。
如何做到这一点,只需致电count_vect_item_group.transform()
。您现在再次调用 count_vect_item_group
上的 fit_transform(),然后它会忘记先前学习的数据,并拟合新数据,因此找到的特征数量比以前少。
将您的代码更改为:
count_matrix_X_train = count_vect_item_group.transform(X_test)
X_train_tf_idf = tf_idf(count_matrix_X_train)
model_predicted_item_group.partial_fit(X_train_tf_idf, labels_test)
【讨论】:
第二行的 tf_idf() 是什么? @wonhee 这是 OP 在他的代码中实现的方法。 count_vect_item_group 是他存储在文件中的分类器,所以 count_vect_item_group.transform() 将返回矩阵,而 tf_idf 假设在这里做什么?也许只是 count_matrix_X_train.toarray() 之类的? @wonheecount_matrix_X_train
顾名思义是一个计数矩阵。 tf_idf
(顾名思义)应该计算矩阵的 tf-idf 值(根据给定的计数)。您可以 ping OP 以获取更多信息。
好吧..所以原始帖子说他 pkl 他的分类器,但我认为它实际上是矢量化器?我认为 SGD 分类器根本没有 fit_transform() 或 transform() 之类的东西。以上是关于SKlearn SGD Partial Fit 错误:特征数 378 与之前的数据不匹配 4598的主要内容,如果未能解决你的问题,请参考以下文章
GridSearchCV/RandomizedSearchCV 与 sklearn 中的 partial_fit
sklearn SGDClassifier fit() 与 partial_fit()
sklearn partial_fit() 未将准确结果显示为 fit()
partial_fit Sklearn 的 MLPClassifier
SKLearn 的 Birch Clustering 中的 partial_fit() 到底是啥,它可以用于非常大的数据集吗?