阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!!

文章目录

  • 阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!!
  • 1、问题描述:
  • 2、分析与解决办法:
  • 3、DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().

1、问题描述:

背景:机器学习时关于SVM的学习,之前线性回归、逻辑回归切分数据集时均是将X切分为(输入特征维数,样本数),例如(5,250)代表输入特征是5维,样本数是250个。那是因为之前手敲线性、逻辑回归时用到的数学公式要求维度是这样。但是如果直接使用sklearn库里的现成函数,需要的恰恰相反,即需要(样本数,输入特征维数)这样的格式作为参数的输入。否则报错。

函数:svm.SVC中的 fit() 函数

bug:

  • ValueError: y should be a 1d array, got an array of shape (1, 250) instead.
  • ValueError: Found input variables with inconsistent numbers of samples: [5, 250].
  • ValueError: X has 250 features, but SVC is expecting 5 features as input.
  • DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().

code:

# SVM训练与预测 1.0
res = svm.SVC(C=svm_C, kernel=svm_kernel)
res.fit(train_set_X, train_set_y)             #训练
train_predict_y = res.predict(train_set_X)    #训练集上的预测
test_predict_y = res.predict(test_set_X)      #测试集上的预测

2、分析与解决办法:

1、首先运行上方原代码,会报错:

ValueError: y should be a 1d array, got an array of shape (1, 250) instead。

查看变量列表如下图

可以看到train_set_y的shape是(1,250),而这里期望的shape是(250,)。

所以解决办法:

二维转一维即可,我习惯用reshape(-1),当然还有flatten()、ravel()、squeeze()函数都能实现。

# SVM训练与预测 2.0
res = svm.SVC(C=svm_C, kernel=svm_kernel)
res.fit(train_set_X, train_set_y.reshape(-1))             #训练   修正!!!
# res.fit(train_set_X, train_set_y.flatten())               #训练   修正!!!
# res.fit(train_set_X, train_set_y.ravel())                 #训练   修正!!!
# res.fit(train_set_X, np.squeeze(train_set_y))             #训练   修正!!!
train_predict_y = res.predict(train_set_X)    #训练集上的预测
test_predict_y = res.predict(test_set_X)      #测试集上的预测

2、但运行上述代码又报错:

ValueError: Found input variables with inconsistent numbers of samples: [5, 250]

意思是“样本数和输入变量不一致”。想不通,就去查看源码的说明,如下:

可以看到上图,当我们将train_set_y由 (1,250) 变为 (250,) 并将其作为y传入时,250会被视作样本个数,自己也确实是250个样本的标注,这一点符合。

但是请注意,这里train_set_X的shape是(5,250),按照上图注释的意思,5会被视作样本数,250被实作输入特征的维数,而后面train_set_y是被视作有250个样本,故自然报错不匹配。

所以解决办法:

1、使用.T属性,将train_set_X的shape由(5,250)转为(250,5);
2、既然train_set_X使用了.T属性,为了好看,train_set_y也先使用.T属性有(1,250)转为(250,1),再使用.reshape(-1)即可;

# SVM训练与预测 3.0
res = svm.SVC(C=svm_C, kernel=svm_kernel)
res.fit(train_set_X.T, train_set_y.T.reshape(-1))             #训练   修正!!!
# res.fit(train_set_X.T, train_set_y.T.flatten())               #训练   修正!!!
# res.fit(train_set_X.T, train_set_y.T.ravel())                 #训练   修正!!!
# res.fit(train_set_X.T, np.squeeze(train_set_y))             #训练   修正!!!
train_predict_y = res.predict(train_set_X)    #训练集上的预测
test_predict_y = res.predict(test_set_X)      #测试集上的预测

其实吧,不用这么麻烦,直接最初切分数据集时变成需要的不就行了?不然之后用一次还要.T转一次。

2、但运行上述代码还报错:

- - -> 67 train_predict_y = res.predict(train_set_X) #训练集上的预测
ValueError: X has 250 features, but SVC is expecting 5 features as input.

那这里的分析就不难了,再使用.T就行了。故修正code如下:

# SVM训练与预测
res = svm.SVC(C=svm_C, kernel=svm_kernel)
res.fit(train_set_X.T, train_set_y.T.reshape(-1))             #训练
# res.fit(train_set_X, train_set_y.flatten())               #训练
# res.fit(train_set_X, train_set_y.ravel())                 #训练
# res.fit(train_set_X, np.squeeze(train_set_y))             #训练
train_predict_y = res.predict(train_set_X.T)    #训练集上的预测
test_predict_y = res.predict(test_set_X.T)      #测试集上的预测

3、DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().

自己后来看老师标准代码时,老师传入的X是(250,5),y是(250,1)。自己产生了疑惑,定义里不是说了y应该为(250,)。于是自己尝试按照老师的运行了下,发现给了个警告。所以虽然不用管也能运行,但还是按照规范吧。

解决方法:

见之前写的文章《DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the》


码字不易,谢谢点赞!!!
码字不易,谢谢点赞!!!
码字不易,谢谢点赞!!!

SVM ValueError: y should be a 1d array, got an array of shape (1, 250) instead. Found input variable相关推荐

  1. rasa_nlu_chi 测试不成功 “error“: “y should be a 1d array, got an array of shape (1, 5) instead.

    rasa_nlu_chi原始git链接: https://github.com/crownpku/rasa_nlu_chi rasa_nlu_chi实现博客链接: 实现过程中有问题解决方法的博客: h ...

  2. Matlab中解决出现的错误使用 svmtrain (line 234) Y must be a vector or a character array.问题

    Matlab中解决出现的错误使用 svmtrain (line 234) Y must be a vector or a character array.问题 目录 解决问题 解决思路 解决方法 解决 ...

  3. ValueError: Masked arrays must be 1-D

    ValueError: Masked arrays must be 1-D 使用numpy画散点图出现以上问题.(<机器学习-算法原理与编程实践>第7页) 原代码如下:

  4. 吴恩达深度学习作业L1W2:ValueError: cannot reshape array of size 12288 into shape (50,1)

    照着代码敲下来,测试部分的代码都没问题,到了最后整合的实战代码就突然报错ValueError: cannot reshape array of size 12288 into shape (50,1) ...

  5. ValueError: At least one stride in the given numpy array is negative解决方案

    ValueError: At least one stride in the given numpy array is negative, and tensors with negative stri ...

  6. ValueError: At least one stride in the given numpy array is negative

    问题: ValueError: At least one stride in the given numpy array is negative, and tensors with negative ...

  7. Densefuse: 成功解决ValueError: cannot reshape array of size xxx into shape (xxx,xxx,xxx)

    最近在复现图像融合Densefuse时,出现报错: ValueError: cannot reshape array of size 97200 into shape (256,256,1) 在网上查 ...

  8. 错误使用 svmtrain svmtrain has been removed. Use fitcsvm instead.Y must be a vector or a character array

    错误1 Error using svmtrain (line 230) svmtrain has been removed. Use fitcsvm instead. 错误2 Error using ...

  9. cannot reshape array of size 5011 into shape (2)

    cannot reshape array of size 5011 into shape (2) import numpy as npinds=[] inds.append(1) inds.appen ...

最新文章

  1. mysql 查看表结构,字段的基本信息(简单明了)。
  2. (C#)AJAX post方式传值
  3. git/ TortoiseGit如何使用证书登录
  4. java lock condition_Java 通过 Lock 和 竞争条件 Condition 实现生产者消费者模式
  5. Ceph 时钟偏移故障处理
  6. [Unity] AnimationEvent 的 receiver 需要继承 Mono
  7. C#结构体和字节数组的转换
  8. vue 头部组件监控页面来源
  9. 聚焦行业新风口 白鹭科技云游戏战略发布会成功举办
  10. 酱油瓶上有两个字很重要,一直都被忽略了,以后看准再买!
  11. 记录一次es head测试使用说明
  12. 知了课堂Day3——微信小程序基础03——组件的一些笔记
  13. 探讨破解3G今日困局之策
  14. python 典型相关分析_CCA典型关联分析原理与Python案例
  15. vue3 通过naive-ui 使用xicons
  16. texstudio语法检查
  17. 背单词App开发日记1
  18. Excel的文件打开特别慢,xls文件特别大解决一例
  19. 18W快充4000毫安电量 魅族魅蓝Note5续航实测
  20. mc9s08dz60添加BootLoader实现CANboot下载更新功能

热门文章

  1. MFC软件获取USB设备的制造商、产品、序列号
  2. RabbitmqCluster 磁盘不可用,disk space告警
  3. 《The one!》团队作业五:团队项目需求改进与系统设计
  4. 智能手机是如何迭代的?消除鱼龙混杂珠虐待
  5. 数据结构— —单链表
  6. Windows Store协议(ms-windows-store)解析和使用
  7. 政务数据分级安全保护要求(明细)
  8. 国内开源软件镜像地址
  9. Android FileProvider配置和当引用包内已经含有FileProvider的多节点解决办法
  10. AMBA-ATB spec