老师您好,看一下这是哪里出问题了?

来源:4-2 scikit-learn中的机器学习算法封装

一步一步进阶

2018-10-18

图片描述

写回答

1回答

liuyubobobo

2018-10-18

需要传入一个二维数组,你传的是一维数组:)


------


这个课程在讲解的时候,我给predict传的是x。如果看这个课程的官方github,你就会看到如下的提示:

//img.mukewang.com/szimg/5bc845ad0001209d09290160.jpg

传送门:https://github.com/liuyubobobo/Play-with-Machine-Learning-Algorithms/blob/master/04-kNN/02-kNN-in-scikit-learn/02-kNN-in-scikit-learn.ipynb


红色文字说的就是,在scikit-learn 0.19以后,predict不能再传1d的数组,只能传2d的数组。我相信你现在使用的scikit-learn的版本,是0.19以上的:)


之所以做出这个改动,是因为,对于1d数组,可能产生歧义。一个有n个元素的数组,到底表示有n个样本,每个样本只有一个特征?还是表示有一个样本,这个样本有n个特征?


这段提示也告诉了大家解决方案:


如果你的1d数组表示n个样本,每个样本有一个特征,传入:

x.reshape(-1,1)


如果你的1d数组表示1个样本,这个样本有n个特征,传入:

x.reshape(1,-1)


加油!:)

0
2
liuyubobobo
回复
一步一步进阶
我在原答案上进行了补充:)
2018-10-18
共2条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程