Sci-kit学习SGD分类器Partial_Fit错误

时间:2016-04-19 13:41:34

标签: python machine-learning scikit-learn svm

我正在使用scikit-learn和SGD分类器以小批量训练SVM。这是一个小代码片段:

for row in reader:
        if row[0] in model.docvecs:
            TRAINING_X.append(model.docvecs[row[0]])
            TRAINING_Y.append(row[2])
        if count % 10000 == 0:
            np_x = np.asarray(TRAINING_X)
            np_y = np.asarray(TRAINING_Y)
            clf.partial_fit(np_x,np_y, np.unique(np.asarray))
            TRAINING_X = []
            TRAINING_Y = []
        count += 1

我正在使用partial_fit函数读取每1000个数据点,并使用np.unique()根据文档(http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.SGDClassifier.html#sklearn.linear_model.SGDClassifier.partial_fit)生成类标签。

但是,当我运行它时,我收到以下错误:

raise ValueError("The number of class labels must be "
ValueError: The number of class labels must be greater than one.

我有点困惑。我是否错误地生成了类标签?

谢谢!

2 个答案:

答案 0 :(得分:0)

partial_fit的文档说Classes across all calls to partial_fit. Can be obtained by via np.unique(y_all), where y_all is the target vector of the entire dataset.

您似乎正在传递np.unique(np.asarray),这似乎不正确。

答案 1 :(得分:0)

由于程序抛出的错误,我认为目标变量中只有一个唯一的类。请使用np.unique(np_y)并获取要输入模型的唯一类的数量,并确保该数量不止一个。

此外,您对classes参数的值似乎不正确,应该是np.unique(np_y)而不是np.unique(np.asarray)

希望这会有所帮助!