无论是在scikit-learn中使用列表还是numpy数组,结果都会有所不同



我有一个数据集data和一个标记数组target,我用它在scikit中构建,使用k近邻算法学习监督模型。

neigh = KNeighborsClassifier()
neigh.fit(data, target)

我现在能够使用这个模型对我的学习集进行分类。获取分类分数:

neigh.score(data, target)


现在我的问题是这个分数取决于target对象的类型

  • 如果是python列表,即使用list()创建并使用target.append()填充,则score方法返回0.68
  • 如果它是一个numpy数组,使用target = np.empty(shape=(length,1), dtype="S36")创建(仅包含36个字符串),并使用target[k] = value填充,则score方法返回0.008

为了确定结果是否真的不同,我创建了列出结果的文本文件

for k in data:
    neigh.predict(k)

在每种情况下。结果是一样的

什么可以解释分数差异

@Harel发现了问题,以下是解释:

np.empty(shape=(length, 1), dtype="S36")

创建了一个形状错误的数组。scikit学习估计器几乎总是想要一维数组,即shape=length。事实上,这并没有引起一个例外是一个疏忽。

相关内容

  • 没有找到相关文章

最新更新