如何用数组训练分类器?

Posted

技术标签:

【中文标题】如何用数组训练分类器?【英文标题】:How to train a classifier with an array of arrays? 【发布时间】:2016-08-07 15:05:51 【问题描述】:

我想使用decision tree classifier 来预测某事。

如您所见:

from sklearn import tree

sample1 = [120,1]
sample2 = [123,3]
features = [sample1,sample2]

labels = [0,1] 

clf = tree.DecisionTreeClassifier()
clf = clf.fit(features, labels)

我有两个样本:

示例一[120,1],我将其标记为0

示例二[123,3],我将其标记为1

到目前为止一切顺利。

但是现在,我想使用数组来训练,而不是这个样本,比如:

features = [[120,120.2][1, 1.2]]

此示例的相应标签是:

label = [1]

所以我的代码应该是:

from sklearn import tree

features = [[120,120.2][1, 1.2]]

labels = [1] 

clf = tree.DecisionTreeClassifier()
clf = clf.fit(features, labels)

我收到以下error

TypeError:列表索引必须是整数,而不是元组

我知道分类器需要一个整数列表,而不是元组。 一个解决方案可能是:

features = [[120, 120.2, 1, 1.2]]

labels = [1] 

但我不想混淆数据,因为我将它单独放入数组中。

有什么方法可以用数据数组训练我的分类器?

谢谢

【问题讨论】:

我个人会选择features = [[120, 120.2, 1, 1.2]]。以前从未将元组视为一项功能,我认为您提出的解决方案没有任何问题。 【参考方案1】:

不,您不能对数据使用这种格式,您需要将它们聚合到一个数组中。

expected shape 是 (n_samples, n_features)

这更合乎逻辑,因为一个例子是由一些特征描述的,并且通过使用预期的格式,它可以更好地描述你的数据。

【讨论】:

以上是关于如何用数组训练分类器?的主要内容,如果未能解决你的问题,请参考以下文章

如何用OpenCV训练自己的分类器

如何用OpenCV自带的adaboost程序训练并检测目标

如何用OpenCV自带的adaboost程序训练并检测目标

如何用单词解释 doc2vec 分类器?

如何为训练观察实现具有自定义权重的 KNN 分类器

opencv训练分类器样本处理