format python value error_引发ValueError(“错误的输入形状{0}”。format(shape))ValueError:错误的输入形状(10,90)...

我对此并不陌生,因此可以寻求任何帮助,当我问一个例子时,我的教授给了我这段代码,我希望能有一个工作模型...

fromnumpyimportloadtxtimportnumpyasnpfromsklearnimportsvmfromsklearn.metricsimportaccuracy_score,f1_scorefromsklearn.feature_selectionimportSelectPercentile,f_classif

读取数据

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

y=label

将步行状态定义为0,将跑步状态定义为1

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

随机选择50%的数据作为测试数据,其余的作为训练数据

fromsklearn.cross_validationimporttrain_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)))

追溯(最近一次通话最近):文件“”,行1,在运行文件execfile中的行“ C:\ Users \ praym \ Anaconda3 \ lib \ site-packages \ spyderlib \ widgets \ externalshell \ sitecustomize.py”中,行714 (文件名,名称空间)文件“ C:\ Users \ praym \ Anaconda3 \ lib \ site-packages \ spyderlib \ widgets \ externalshell \ sitecustomize.py”,第89行,位于execfile exec(compile(f.read(),filename, 'exec'),命名空间)文件“ C:/ Users / praym / OneDrive / School / Information Structres / Assignment4.py”,选择器.fit(X_train,y_train)中的第18行,文件“ C:\ Users \ praym \ Anaconda3 \ lib \ site-packages \ sklearn \ feature_selection \ univariate_selection.py“,第322行,适合X,y = check_X_y(X,y,['csr','csc'])文件” C:\ Users \ praym \ Anaconda3 \ lib \ site-packages \ sklearn \ utils \ validation.py“,第515行,在check_X_y中y = column_or_1d(y,warn = True)文件“ C:\ Users \ praym \ Anaconda3 \ lib \ site-packages \ sklearn \ utils \ validation.py”,第551行,在column_or_1d中引发ValueError(“错误的输入形状{0}“。format(shape))ValueError:输入形状错误(10,90)

解决方案

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

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

该错误的标题为“ Traceback”,因为它正在执行此操作-追溯该错误。你可以在你的Python脚本看到,每一道线条都是某种类型的API调用,无论是loadtxt或print或fit。如果在调用时发生错误loadtxt,则Traceback会在loadtxt调用内部显示发生了什么错误。该函数可能正在API中调用其他函数,因此您会看到“跟踪”。当您编写具有许多函数和类的更复杂的Python代码时,最终可能会看到对其他函数进行了调用的函数,这些都是您自己编写的。因此,

始终从下至上阅读Traceback(它在输出中告诉您“最近的呼叫是最后一个”)。您需要获取行号以及发生错误的python文件的名称。

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

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

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

通常,了解最底层呼叫的行号和异常类型足以让您了解自己做错了什么。但是,如果确定该行中的变量使用正确,则必须更深入地研究堆栈跟踪,然后从底部开始查找调用。为此,您将再次看到文件名和行号。

通过重复这些步骤,您将能够有效地调试自己的程序。请注意,调试不仅是一种从程序中消除错误的方法。它是单步执行代码并确定每一行正在执行的操作并将其与他们应该执行的操作进行比较的能力。它是所谓的计算机编程的基础。如果您做对了,您可能仍然有疑问要问,但是您的问题会有所改善。那就是当Stack Overflow出现时(请注意,此网站的名称本身就是对stack trace概念的一种玩味)。

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

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

看来您输入变量X_train和y_train中的一个或两个都不具有该拟合函数可接受的形状。

编辑:如果您以自己的方式加载文件,那么您将无法获取正确的X_train和y_train变量。您似乎有两种类型的数据,一种用于步行,一种用于跑步。它们都是数据。步行数据中的每个条目都应带有标签“ walking”,而跑步数据中的每个条目都应带有标签“ running”。

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值