gpt4 book ai didi

python - 引发 ValueError ("bad input shape {0}".format(shape)) ValueError : bad input shape (10, 90)

转载 作者:太空宇宙 更新时间:2023-11-04 10:10:36 27 4
gpt4 key购买 nike

我是新手,所以需要任何帮助,当我要求一个例子时,我的教授给我了这段代码,我希望有一个工作模型......

from numpy import loadtxt
import numpy as np
from sklearn import svm
from sklearn.metrics import accuracy_score, f1_score
from sklearn.feature_selection import SelectPercentile, f_classif

读取数据

data = loadtxt('running.txt')
label = loadtxt('walking.txt')
X = data
y = label

定义行走状态为0,运行状态为1

print('Class labels:', np.unique(y))

随机抽取50%数据作为测试数据,其余作为训练数据

from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5)

使用sklearn选择50%的特征

selector = SelectPercentile(f_classif, 50)
selector.fit(X_train, y_train)
X_train_transformed = selector.transform(X_train)
X_test_transformed = selector.transform(X_test)

应用支持向量机算法

clf = svm.SVC(kernel="rbf", C=1)
clf.fit(X_train_transformed, y_train)

SVC(C=1, cache_size=200, class_weight=None, coef0=0.0, decision_function_shape=None, degree=3, gamma='auto', kernel='rbf',max_iter=-1,probability=False, random_state=None, shrinking=True,tol=0.001, verbose=False)

pred=clf.predict(X_test_transformed)
print("Accuracy is %.4f and the f1-score is %.4f " %
(accuracy_score(pred, y_test), f1_score(y_test, pred)))

Traceback (most recent call last): File "", line 1, in File "C:\Users\praym\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 714, in runfile execfile(filename, namespace) File "C:\Users\praym\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 89, in execfile exec(compile(f.read(), filename, 'exec'), namespace) File "C:/Users/praym/OneDrive/School/Information Structres/Assignment4.py", line 18, in selector.fit(X_train, y_train) File "C:\Users\praym\Anaconda3\lib\site-packages\sklearn\feature_selection\univariate_selection.py", line 322, in fit X, y = check_X_y(X, y, ['csr', 'csc']) File "C:\Users\praym\Anaconda3\lib\site-packages\sklearn\utils\validation.py", line 515, in check_X_y y = column_or_1d(y, warn=True) File "C:\Users\praym\Anaconda3\lib\site-packages\sklearn\utils\validation.py", line 551, in column_or_1d raise ValueError("bad input shape {0}".format(shape)) ValueError: bad input shape (10, 90)

最佳答案

我会将此作为答案提交,因为它直接解决了您的实际问题。

在一般的计算机编程术语中,您遇到的错误称为堆栈跟踪。有一个 Wikipedia page在堆栈跟踪上,但我会在这里尝试用更简单的术语来解释它。

该错误的标题为“Traceback”,因为这就是它所做的 - 追溯错误。您可以在 Python 脚本中看到每一行都是某种 API 调用,无论是 loadtxt 还是 printfit。如果在调用 loadtxt 时发生错误,Traceback 会在 loadtxt 调用中向您显示到底出了什么问题。该函数可能正在调用 API 中的其他函数,因此您会看到“踪迹”。当您编写包含许多函数和类的更复杂的 Python 代码时,您可能最终会看到调用其他函数的函数,这些函数都是您编写的。因此,

  1. 始终自下而上阅读 Traceback(它在输出中告诉您“最近的调用是最后一次调用”)。您需要获取行号以及发生错误的 python 文件的名称。

行号会将您带到代码中实际导致错误的位置。通常情况下,只需要调用最底层的 1 次或 2 次就可以解决一般问题。如果您编写自己的自定义 API,那么整个跟踪可能会变得更有用。但是,仅文件名和行号不足以有效地调试任何程序。

  1. 接下来您需要了解错误到底是什么。在您的情况下,您会看到一个 ValueError。这通常意味着您的变量值与变量类型不匹配。但是,异常类型后面的句子为您提供了有关导致此 ValueError 的确切原因的更多详细信息。

有关每种异常类型及其含义的更多详细信息,请阅读有关 built-in exceptions 的文档.此外,您可以从教程中了解更多有关如何处理此类异常的信息 here .

  1. 通常,知道最底层调用的行号和异常类型就足以让您了解自己做错了什么。但是,如果您确定在那一行中使用的变量是正确的,那么您必须更深入地研究堆栈跟踪,并查找倒数第二个调用。为此,您将再次看到文件名和行号。

通过重复这些步骤,您将能够有效地调试您自己的程序。请注意,调试不仅是一种从程序中删除错误的方法。它是单步执行您的代码并确定每一行在做什么并将其与它们应该做什么进行比较的能力。它是所谓的计算机编程的基础。如果你做得对,你可能还有问题要问,但你的问题会有所改善。这就是 Stack Overflow 出现的时候(请注意,该网站的名称本身就是对堆栈跟踪概念的一种演绎)。


编辑:在你的堆栈跟踪中,你的错误在这里:

文件“C:/Users/praym/OneDrive/School/Information Structres/Assignment4.py”,第 18 行,在 selector.fit(X_train, y_train) 中。

您的输入变量 X_train 和 y_train 中的一个或两个似乎不是该拟合函数可接受的形状。


编辑:如果您按照自己的方式加载文件,则无法获得正确的 X_train 和 y_train 变量。您似乎有两种类型的数据,一种用于步行,一种用于运行。它们都是数据。步行数据中的每个条目都应该有一个标签“步行”,而运行数据中的每个条目都应该有一个标签“运行”。

现在,这是数据挖掘的基础。您需要知道数据和标签的含义。

关于python - 引发 ValueError ("bad input shape {0}".format(shape)) ValueError : bad input shape (10, 90),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38642046/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com