我正在使用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.
我有点困惑。我是否错误地生成了类标签?
谢谢!
答案 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)
希望这会有所帮助!