我是新手,所以任何帮助都是适当的,当我问一个例子时,这个代码是由我的教授给我的,我曾希望有一个工作模型......
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:\ Users \ praym \ Anaconda3 \ lib \ site-packages \ spyderlib \ widgets \ externalshell \ sitecustomize.py”,第714行,在runfile execfile(filename,namespace)文件“C:\ Users \ praym \ Anaconda3 \ lib \ site-packages \ spyderlib \ widgets \ externalshell \ sitecustomize.py”,第89行,在execfile中 exec(compile(f.read(),filename,'exec'),namespace) 文件“C:/ Users / praym / OneDrive / School / Information Structres / Assignment4.py”,第18行,in selector.fit(X_train,y_train) 文件“C:\ Users \ praym \ Anaconda3 \ lib \ site-packages \ sklearn \ feature_selection \ univariate_selection.py”,第322行,适合 X,y = check_X_y(X,y,['csr','csc']) 在check_X_y中输入文件“C:\ Users \ praym \ Anaconda3 \ lib \ site-packages \ sklearn \ utils \ validation.py”,第515行 y = column_or_1d(y,warn = True) 在column_or_1d中输入文件“C:\ Users \ praym \ Anaconda3 \ lib \ site-packages \ sklearn \ utils \ validation.py”,第551行 提出ValueError(“输入形状错误{0}”。格式(形状)) ValueError:错误的输入形状(10,90)
答案 0 :(得分:3)
我会将此作为答案提交,因为它直接解决了您的实际问题。
在一般的计算机编程术语中,您所获得的错误称为堆栈跟踪。堆栈跟踪有一个Wikipedia page,但我会在这里用更简单的术语来解释它。
错误标题为“Traceback”,因为它正在做的事情 - 追溯错误。您可以在python脚本中看到每一行都是某种API调用,无论是loadtxt
还是print
还是fit
。如果您在调用loadtxt
时发生错误,则回溯会在loadtxt
调用中显示出错误的原因。该函数可能正在调用API中的其他函数,因此您会看到“跟踪”。当您编写更复杂的Python代码,其中有许多函数和类时,您最终可能会看到调用其他函数的函数,这些函数都由您编写。因此,
行号将带您到实际导致错误的代码中。通常,您只需要底部的1或2个调用来解决一般问题。如果您编写了自己的自定义API,那么整个跟踪可能会变得更有用。但是,单独的文件名和行号不足以有效地调试任何程序。
ValueError
。这通常意味着变量的值与变量类型不匹配。但是,异常类型后面的句子可以为您提供有关此ValueError
的确切原因的详细信息。 有关每种异常类型及其含义的更多详细信息,请阅读有关built-in exceptions的文档。此外,您可以从教程here中了解有关如何处理此类异常的更多信息。
通过重复这些步骤,您将能够有效地调试自己的程序。请注意,调试不仅是一种从程序中删除错误的方法。它能够逐步执行代码并确定每条线路正在做什么,并将其与它们应该做的事情进行比较。它是所谓的计算机编程的基础。如果你这样做,你可能仍有疑问,但你的问题会有所改善。那就是当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变量。您似乎有两种类型的数据,一种用于步行,另一种用于跑步。它们都是数据。行走数据中的每个条目都应具有“行走”标签,并且正在运行的数据中的每个条目都应具有“正在运行”标签。
现在,这是数据挖掘的基础。您需要知道数据和标签的含义。
答案 1 :(得分:1)
具有90个功能,您最有可能使用一个热编码器来获得那么多功能(虚拟变量)。在拟合模型之前,请尝试:
y_train = np.argmax(y_train, axis=1)
这将使您可以将一种热门编码传递给fit函数。