ValueError:预期的 2D 数组

ValueError: Expected 2D array

提问人:Joo 提问时间:11/15/2023 更新时间:11/16/2023 访问量:61

问:

我尝试制作一个 SVC。

from sklearn.svm import SVC
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("iris.csv")

df.loc[df["species"]=="setosa", "species"] = 0
df.loc[df["species"]=="versicolor", "species"] = 1
df.loc[df["species"]=="virginica", "species"] = 2

x = df.drop("species", axis="columns")
y = df.species
list = [6, 3, 5, 2]

svc = SVC()
svc.fit(x, y)
predict = svc.predict(list)
predict

但它向我展示了这个 ValueError,因为我的列表没有正确的维度:

ValueError: Expected 2D array, got 1D array instead: array=[6. 3. 5. 2.]. Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

我尝试使用 values.reshape(-1, 1) 或仅使用 reshape(-1, 1),但它不起作用,因为它是一个列表。 在错误中写到错误在“预测”行中。请帮帮我:)

python 数组 pandas scikit-learn 重塑

评论

0赞 Suraj Shourie 11/15/2023
做一个最小的可重现示例,将 df 添加为df.head().to_dict()
0赞 Suraj Shourie 11/15/2023
您的预测变量应类似于训练。如果是这种情况,我认为您的解决方案就是使用 numpy reshapexx
0赞 Joo 11/16/2023
它不起作用:(
0赞 Suraj Shourie 11/16/2023
什么不起作用?你不能添加这个吗?df.head().to_dict()
0赞 Joo 11/16/2023
我做到了,但它给了我同样的错误。

答:

2赞 Suraj Shourie 11/16/2023 #1

如果不了解数据帧的结构,就很难确定,但您可能只需要使用 .请参阅下面的示例代码:np.reshape

也不要用作变量的名称,因为它会覆盖内置名称。list

import numpy as np

# your code here
# ....

x_test = [6, 3, 5, 2]
n = 1 # number of rows of test data

x_test = np.array(x_test).reshape(n,x.shape[1])
predict = svc.predict(x_test)

评论

0赞 Joo 11/17/2023
现在它说 FIT 函数有问题,带有以下 valueError:
0赞 Joo 11/17/2023
ValueError:未知标签类型:未知。也许您正在尝试拟合一个分类器,该分类器期望具有连续值的回归目标上的离散类。