我是新来这个所以任何帮助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)
我会提交此作为一个答案,因为它直接解决您的实际问题。
在一般的计算机编程术语,你已经得到了错误称为堆栈跟踪。有在堆栈跟踪Wikipedia page,但我会尽量在这里解释更简单的术语。
错误有一个标题为“回溯”,因为那是它在做什么 - 追溯错误。你可以在你的Python脚本,每行是某种API调用的看到,无论是loadtxt
或print
或fit
。如果当你的呼吁,loadtxt
发生了错误,回溯显示你什么地方出了错准确地说,loadtxt
调用中。该函数可以在API内调用等功能,因此你看到一个“跟踪”。当你写,你有很多的函数和类更复杂的Python代码,你可能最终看到的是建立与其他功能,全部由你书面电话功能。因此,
行号将带您到实际导致错误的代码点。通常情况下,你只需要在底部1个或2调用来解决一般问题。如果你写了自己的自定义API,那么整个跟踪可能会变得更加有用。然而,单独的文件名和行号是不够的,有效地调试任何程序。
ValueError
。这通常意味着您的变量的值不匹配的变量类型。然而,在异常类型的句子给你究竟是什么造成这种ValueError
更多细节。有关每个异常类型及其含义的更多详细信息,请阅读built-in exceptions的文档。此外,你可以了解更多有关如何从本教程here处理此类异常。
通过重复这些步骤,你将能够有效地调试自己的程序。请注意,调试,不仅从您的程序删除错误的方法。它是逐步执行代码,并确定哪些每一行正在做并将其与他们应该做什么的能力。这是所谓的计算机编程的基础。如果你这样做的权利,你可能仍然有问题要问,但你的问题将得到改善。也就是说,当堆栈溢出来的(注意,该网站的名称是由本身的堆栈跟踪的概念一出戏)。
编辑:在侑堆栈跟踪,你的错误是在这里:
文件 “C:/用户/ praym / OneDrive /学校/信息Structres / Assignment4.py” 18行,在selector.fit(X_train,y_train)。
看来,你的输入变量X_train和y_train的一个或两个是是由拟合函数可以接受的形状没有。
编辑:如果您加载的文件,你的方式,那么你就不能得到正确的X_train和y_train变量。你似乎有两种类型的数据,一个是步行和一个用于运行。他们都是数据。在步行数据的每个条目都应该有一个标签“行走”和运行数据的每个条目应该有标签“跑步”。
现在,这是数据挖掘的基础。你需要知道什么数据和标签表示。
有了90层的功能,你最有可能使用一个热编码器来获得,许多功能(虚拟变量)。装配到您的模型之前,请尝试:
y_train = np.argmax(y_train, axis=1)
这将允许你在一个热码传递到您的拟合函数。