提高ValueError异常(“坏输入形状{0}”格式(形状)。)ValueError异常:坏输入形状(10,90)

问题描述 投票:0回答:2

我是新来这个所以任何帮助appriciated,这个代码是我的教授给我,当我问一个例子,我所希望的一个工作模型...

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)))

回溯(最近通话最后一个):文件 “”,1号线,在文件 “C:\用户\ praym \ Anaconda3 \ LIB \站点包\ spyderlib \部件\ externalshell \ sitecustomize.py”,线路714,在运行文件的execfile (文件名,命名空间)文件 “C:\用户\ praym \ Anaconda3 \ LIB \站点包\ spyderlib \部件\ externalshell \ sitecustomize.py”,行89,在EXEC的execfile(编译(f.read(),文件名, 'EXEC'),命名空间)文件 “C:/用户/ praym / OneDrive /学校/信息Structres / Assignment4.py”,第18行,在selector.fit(X_train,y_train)文件“C:\用户\ praym \ Anaconda3 \ lib中\站点包\ sklearn \ feature_selection \ univariate_selection.py “线322,在配合X,Y = check_X_y(X,Y,[ 'CSR', 'CSC'])文件” C:\用户\ praym \ Anaconda3 \ lib中\站点包\ sklearn \ utils的\ validation.py “线515,在check_X_y Y = column_or_1d(Y,警告=真)文件” C:\用户\ praym \ Anaconda3 \ lib中\站点包\ sklearn \ utils的\ validation.py”,线路551,在column_or_1d提高ValueError异常( “坏输入形状{0}” 格式(形状)。)ValueError异常:坏输入形状(10,90)

python scikit-learn
2个回答
3
投票

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

在一般的计算机编程术语,你已经得到了错误称为堆栈跟踪。有在堆栈跟踪Wikipedia page,但我会尽量在这里解释更简单的术语。

错误有一个标题为“回溯”,因为那是它在做什么 - 追溯错误。你可以在你的Python脚本,每行是某种API调用的看到,无论是loadtxtprintfit。如果当你的呼吁,loadtxt发生了错误,回溯显示你什么地方出了错准确地说,loadtxt调用中。该函数可以在API内调用等功能,因此你看到一个“跟踪”。当你写,你有很多的函数和类更复杂的Python代码,你可能最终看到的是建立与其他功能,全部由你书面电话功能。因此,

  1. 请务必阅读回溯自下而上的(它告诉你在你输出了“最近通话最后”)。你需要用Python文件发生错误的名称相处的行号。

行号将带您到实际导致错误的代码点。通常情况下,你只需要在底部1个或2调用来解决一般问题。如果你写了自己的自定义API,那么整个跟踪可能会变得更加有用。然而,单独的文件名和行号是不够的,有效地调试任何程序。

  1. 接下来,您需要了解到底是什么错误。在你的情况,你看到一个ValueError。这通常意味着您的变量的值不匹配的变量类型。然而,在异常类型的句子给你究竟是什么造成这种ValueError更多细节。

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

  1. 通常情况下,知道最底层的呼叫的行数和异常的类型是足以让你明白你做错了什么。不过,如果你确信你在该行的变量的使用是正确的,那么你就必须深入钻研堆栈跟踪,并期望从底部的通话第二。对于你将再次看到一个文件名和行号。

通过重复这些步骤,你将能够有效地调试自己的程序。请注意,调试,不仅从您的程序删除错误的方法。它是逐步执行代码,并确定哪些每一行正在做并将其与他们应该做什么的能力。这是所谓的计算机编程的基础。如果你这样做的权利,你可能仍然有问题要问,但你的问题将得到改善。也就是说,当堆栈溢出来的(注意,该网站的名称是由本身的堆栈跟踪的概念一出戏)。


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

文件 “C:/用户/ praym / OneDrive /学校/信息Structres / Assignment4.py” 18行,在selector.fit(X_train,y_train)。

看来,你的输入变量X_train和y_train的一个或两个是是由拟合函数可以接受的形状没有。


编辑:如果您加载的文件,你的方式,那么你就不能得到正确的X_train和y_train变量。你似乎有两种类型的数据,一个是步行和一个用于运行。他们都是数据。在步行数据的每个条目都应该有一个标签“行走”和运行数据的每个条目应该有标签“跑步”。

现在,这是数据挖掘的基础。你需要知道什么数据和标签表示。


1
投票

有了90层的功能,你最有可能使用一个热编码器来获得,许多功能(虚拟变量)。装配到您的模型之前,请尝试:

y_train = np.argmax(y_train, axis=1)

这将允许你在一个热码传递到您的拟合函数。

© www.soinside.com 2019 - 2024. All rights reserved.