交叉验证cross_val_score报错: too many indices for array
一、问题
使用python建立机器学习模型,在使用交叉验证函数cross_val_score(model,X_train,y_train))时报错,too many indices for array
二、 原因
主要是数组维数的影响:即y_train的格式有问题。
输入np.shape查看数组的不同
- 若shape显示为(m,),表示该数组维数为1。
- 若shape显示为(m,1),表示该数组维数为2。
我们查看出错地方 y_train.shape,发现它显示为(m,1)这样的形式,需要修改为(m,)一维这样的形式。
三、解决方法
修改数据格式
方法一
y_train.ravel( ) #修改为(m,)这样的格式
方法二
m,n= y_train.shape #查看维数
y_train = y_train.reshape(c, )
修改完格式再运行就没有问题了。
附:shape中(m,)和(m,1)的区别
对于shape中(m,)和(m,1)的区别可以参考下面例子来理解。
#data1
data1=np.array([1,2,3])
print(data1) #[1 2 3] 一维的形式
data1.shape() #(3,)
sum(data1) #6
#data2
data2=data1.reshape(-1,1)
print(data2) #[[1]
[2]
[3]] 二维的形式
data2.shape() #(3,1)
sum(data2) #array([6])
两者之间的格式转换可以参考第二部分。