我试图执行在https://stackoverflow.com/a/4215056给出的libsvm示例,但得到了标题中提到的error TypeError。
from svm import *
prob = svm_problem([1,-1],[[1,0,1],[-1,0,-1]])
param = svm_parameter(kernel_type = LINEAR, C = 1)
## training the model
m = svm_model(prob, param)
#testing the model
m.predict([1, 1, 1])
Error:
param = svm_parameter(kernel_type = LINEAR, C = 1)
TypeError: __init__() got an unexpected keyword argument 'kernel_type'
我对libsvm-3.12有这个问题(我假设你的问题是由类似的事情引起的)。查看libsvm-3.12/python文件夹中svm.py模块中的“svm_parameter”方法,该方法希望参数作为选项字符串传递,例如“-t 2-v 5-c 1”。
我发现做得更好:
一个小小的解释:svm_predict(y,x,m)除了模型m之外,还获取一个“正确标签”的列表y和一个输入数据的列表x。predicted_labels将是x中给出的每个输入的预测类的列表。这允许用户在一行中请求多个预测。
用户提供正确的标签以返回准确信息。如果用户不知道正确的标签,那么只需在那里放置一个任意的标签,忽略精度值。请查看libsvm-3.12/python/svmutil.py中的源代码,以获取有关svm预测在其他“位置”返回的内容的更多信息。
特别是,从“svmutil.py”中提取的svm U列的选项有:
以上代码不适用于libsvm版本3.16(最新版本)。请改为使用以下代码。但是,在开始之前,请确保项目工作文件夹中有这些文件-“libsvm.dll”、“svm.py”&;svmutil.py”。例如:c:\我的项目\ python_libsvm_练习。
请务必阅读“自述”文件。它有很多关于如何使用每一个函数的例子。你可以在这里下载libsvm的最新版本http://goo.gl/YtCU
相关问题 更多 >
编程相关推荐