当前位置: 首页 > 面试题库 >

Python脚本中的错误“预期的2D数组,而是获取了1D数组:”?

苏鸿卓
2023-03-14
问题内容

我正在按照本教程进行ML预测:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style

style.use("ggplot")
from sklearn import svm

x = [1, 5, 1.5, 8, 1, 9]
y = [2, 8, 1.8, 8, 0.6, 11]

plt.scatter(x,y)
plt.show()

X = np.array([[1,2],
             [5,8],
             [1.5,1.8],
             [8,8],
             [1,0.6],
             [9,11]])

y = [0,1,0,1,0,1]
X.reshape(1, -1)

clf = svm.SVC(kernel='linear', C = 1.0)
clf.fit(X,y)

print(clf.predict([0.58,0.76]))

我正在使用Python 3.6,但出现错误“预期的2D数组,而是获取1D数组:”我认为该脚本适用于旧版本,但是我不知道如何将其转换为3.6版本。

已经尝试使用:

X.reshape(1, -1)

问题答案:

您只需要为该predict方法提供相同的2D数组,但要提供一个(或多个)要处理的值。简而言之,您可以替换

[0.58,0.76]

[[0.58,0.76]]

它应该工作。

编辑:这个答案变得很流行,所以我想我将添加有关ML的更多解释。简短的版本:我们只能predict在与训练数据X)具有相同维数的数据上使用。

在所讨论的示例中,我们给计算机添加了一堆行X(每个行有2个值),并在中显示了正确的响应y。当我们想predict使用新值时,我们的程序期望的是相同的-
一堆 行。即使我们只想对一行(具有两个值)进行处理,该行也必须是另一数组的一部分。



 类似资料:
  • 本文向大家介绍在Python中将2d numpy数组展平为1d数组,包括了在Python中将2d numpy数组展平为1d数组的使用技巧和注意事项,需要的朋友参考一下 2d numpy数组是数组的数组。在本文中,我们将看到如何展平它以使元素成为一维数组。 与扁平化 numpy中的flatten函数是将2d数组转换为1D数组的直接方法。 示例 输出结果 运行上面的代码给我们以下结果- 带旅行 还有一

  • 问题内容: 对于数组中也是数组中的每个元素,我想将值设置为0,这将创建数组 我知道有一种使用和将其作为1D数组进行广播的方法,但是我不知道该如何进行。 任何帮助将不胜感激。 问题答案: 如果将切片的2D数组馈入到其中,它将把它展平为1D数组并与之进行比较,从而创建一个1D蒙版,可以对其进行整形并用于对该切片数组进行布尔索引以将元素设置为。单线实施看起来像这样- 样品运行- 为了简化操作,您可以创建

  • 问题内容: 我尝试运行如下代码: 我认为的形状应为(1,3)而不是(3,)。 矩阵返回的结果应为: 数组([[23],[53],[83]]) 不 数组([23,53,83]) 为什么会发生结果? 问题答案: 顾名思义,该函数的主要目的是通过在两个形状相同的数组上执行 传统的线性代数点积 来提供标量结果。 鉴于这一主要目的,在文档中也对这种情况下的第一(第一子弹下方点)谈到: 您的案件已在他的评论的

  • 问题内容: 我正在尝试连接4个数组,一个1D形状的数组(78427,)和3个2D形状的数组(78427,375/81/103)。基本上,这是4个数组,具有78427个图像的特征,其中1D数组每个图像仅具有1个值。 我尝试串联数组,如下所示: 这将导致以下错误: 追溯(最近一次调用):文件“”,第1行,在ValueError中:所有输入数组的维数必须相同 问题似乎是一维数组,但是我真的看不出来为什么

  • 我正在处理C#并发队列和多线程在套接字编程TCP/IP 首先,我已经完成了套接字编程本身。这意味着,我已经完成了关于客户机、服务器和通信本身的编码 到目前为止,我已经实现了putting_data到queue1(Thread1)和全部出列(Thread2),其速度大约是700Mbps 我使用两个concurrent_queue的原因是,我希望通信和类型转换工作在后台处理,而不考虑有关控制的主要过程

  • 我今天才开始使用翻新图书馆。我在获取一些json数据时遇到问题。 我试图获取的JSON数据如下所示: 求求你,救命!