scikit-learn:为何训练数据与目标数据需尺寸匹配?附KNN疑问
关于k近邻分类器训练时标签的两个问题
为什么标签长度不匹配会报错?
scikit-learn里的分类器要求每一条训练数据都得对应一个标签。你给出的training = [[1], [4], [3]]是3个独立的训练样本,所以标签列表labels的元素数量必须和样本数完全一致——也就是得有3个标签。
当你设labels = [[0], [1]]时,只有2个标签,少了对应第三个样本[3]的标签,模型根本不知道这个样本该归到哪一类,自然会抛出“目标值尺寸与输入不匹配”的错误。而labels = [[0], [1], [1]]或labels = [[0], [0], [1]]都有3个标签,每个样本都能对应到一个类别,所以能正常运行。
标签的排列顺序是否重要?
当然重要。标签列表的第n个元素,必须严格对应训练数据列表的第n个样本的类别。比如training里第一个样本是[1],labels第一个元素是0,就代表[1]属于类别0;如果你把标签顺序搞混了,模型就会把样本和错误的类别绑定,训练出来的模型完全不符合你的预期,根本没法用。
内容的提问来源于stack exchange,提问作者tonythestark
相关产品推荐
相关产品推荐

