SGDClassifier.partial_fit 返回的错误是“classes should include labels”

我尝试通过SGDClassifer.partial_fit来预测新添加数据的标签,如下所示:

from sklearn import neighbors, linear_modelimport numpy as npdef train_predict():    X = [[1, 1], [2, 2.5], [2, 6.8], [4, 7]]    y = [1, 2, 3, 4]    sgd_clf = linear_model.SGDClassifier(loss="log")    sgd_clf.fit(X, y)    X1 = [[6,9]]    y1=[5]    f1 = sgd_clf.partial_fit(X1,y1)    f1.predict([[6,9]])    return f1if __name__ == "__main__":    clf = train_predict()

使用fit方法完美地预测了标签。然而,使用partial fit进行预测时出现了错误,如下所示:

in compute_class_weight    raise ValueError("classes should include all valid labels that can be in y")

类似于Sklearn SGDC partial_fit ValueError: classes should include all valid labels that can be in y,我阅读了partial_fit的说明文档,http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.SGDClassifier.html#sklearn.linear_model.SGDClassifier.partial_fit

但我仍然无法弄清楚如何设置partial_fit的参数,以便能够预测动态添加的数据。

有什么参考资料或想法吗?


回答:

根本问题似乎是您输入到partial fit的数据不是原始数据(输入到.fit()的数据)的子集。

至少这是我对partial_fit()Xy文档的解释:

X : {array-like, sparse matrix}, shape (n_samples, n_features)

Subset of the training data

y : numpy array, shape (n_samples,)

Subset of the target values

当您使用X1y1时,错误变得明显,如果使用文档中建议的classes = np.unique(y1),会得到:

ValueError: `classes=array([5])` is not the same as on last call to    partial_fit, was: array([1, 2, 3, 4])

这表明partial_fitfit内部被使用。

以下示例可以工作:

X1 = X[2:3]y1 = y[2:3]classes = np.unique(y)f1 = sgd_clf.partial_fit(X1, y1, classes=classes)

因此,请确保X1y1包含在您的原始数据集中。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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