python交叉验证cross_val_score报错: too many indices for array

交叉验证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查看数组的不同

  1. 若shape显示为(m,),表示该数组维数为1。
  2. 若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])				

两者之间的格式转换可以参考第二部分。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值