在 Scikit-learn 中将训练标签拟合到 2D 列表中

Posted

技术标签:

【中文标题】在 Scikit-learn 中将训练标签拟合到 2D 列表中【英文标题】:Fitting Training Labels on a 2D List in Scikit-learn 【发布时间】:2020-03-16 13:57:18 【问题描述】:

我正在尝试使用 Scikit-learn 将 2d 中的行映射到标签列表中的元素。

例如:

from sklearn import tree
clf = DecisionTreeClassifier()

#2D list of training data:
training_data = [[1, 2, 3], [1, 2, 4, 5, 6], [5, 7], [1, 2, 3]]

#1D list of training labels:
training_labels = ['a', 'b', 'c', 'a']

clf = clf.fit(training_data, training_labels)

当我运行代码时,我得到“ValueError: setting an array element with a sequence。”

我想知道如何正确转换数据,以便我可以用训练标签拟合测试数据。

【问题讨论】:

a,b,c,a 是什么? testing_data 也应该具有相同的维度 您适合training_data,但您分享的代码并未显示training_data 是什么,以及@makis 所说的abc 是什么? a, b, c, a 仅代表我试图应用于二维列表中每一行的示例标签。例如,我想给 [1, 2, 3] 表示的数据一个标签 'a',给 [1, 2, 4, 5, 6] 中的数据一个标签 'b' 等等。 a, b, c, d 需要用双引号括起来.. 因为它们是标签 【参考方案1】:
testing_data = [[1, 2, 3], [1, 2, 4, 5, 6], [5, 7], [1, 2, 3]]

如果每个子列表都被视为一个样本,那么每个样本的维度不同。 在这种情况下,无法拟合模型。

你的意思也可能是:

 training_labels = ["a", "b", "c", "a"]

否则,a,b,c 应该定义变量

【讨论】:

以上是关于在 Scikit-learn 中将训练标签拟合到 2D 列表中的主要内容,如果未能解决你的问题,请参考以下文章

Scikit-Learn 逻辑回归严重过拟合数字分类训练数据

如何故意在 scikit-learn 中过度拟合决策树?

在 scikit-learn 中将分类器保存到磁盘

scikit-learn 拟合函数分类

在 scikit-learn 中拟合分类器之前进行特征缩放的必要性

在 scikit-learn 中将数据加载到 SVC 模型时尝试避免 .toarray()