gpt4 book ai didi

python-2.7 - 尽管有两个类别,二元分类 SVM 仍给出一个类别值错误

转载 作者:行者123 更新时间:2023-11-30 09:11:20 24 4
gpt4 key购买 nike

我在一些数据上使用 RBF SVM。我的 y 数据(类)如下:

print len(y),y

返回:

120 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1]

然而,当我运行此代码来绘制学习曲线时,我收到一个值错误,声称只有一个类更新:错误已有所改变,请检查注释:

from sklearn.learning_curve import learning_curve

CV = cross_validation.StratifiedKFold(y, n_folds=10, shuffle = True)


def plot_learning_curve(estimator, title, X, y, ylim=None, cv=CV,
n_jobs=1, train_sizes=np.linspace(.1, 1.0, 5)):

plt.figure()

train_sizes, train_scores, test_scores = learning_curve(
estimator, X, y, cv=cv, n_jobs=n_jobs, train_sizes=train_sizes)
plt.grid()


return plt






title = "Learning Curves (SVM, RBF kernel)"



plot_learning_curve(clf, title, val, y, cv=CV, n_jobs=1)

plt.show()

编辑:对代码进行一些更改后,经过一些评论,我更新了此处看到的代码

更新:现在这是错误的当前状态:

ValueError:类的数量必须大于 1;得到1

最佳答案

设法让它工作,不能说我知道错误的确切问题。但它似乎归结为 train_sizes,尽管使用 StratifiedKFold 我认为它仍然以仅包含 1 个类的测试集结束。解决这个问题的方法很简单,就是改变火车大小的值范围,直到错误不再出现!

我认为这取决于样本大小和折叠次数,因为即使您低于错误代码给出的范围(通过故意放入大于样本大小的训练大小),它仍然可以给出上面那个错误。我猜这与样本大小不能总是完美分割有关?

关于python-2.7 - 尽管有两个类别,二元分类 SVM 仍给出一个类别值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36309408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com