我应该如何使用julia训练SVM?

本尼·链

是否有人有在Julia(1.4.1)中训练支持向量机(SVM)的经验?

我尝试了LIBSVM接口,但是gituhub页面上的示例给出了一个错误:

# Load Fisher's classic iris data
iris = dataset("datasets", "iris")
# LIBSVM handles multi-class data automatically using a one-against-one strategy
labels = convert(Vector, iris[:Species])
# First dimension of input data is features; second is instances
instances = convert(Array, iris[:, 1:4])'
# Train SVM on half of the data using default parameters. See documentation
# of svmtrain for options
model = svmtrain(instances[:, 1:2:end], labels[1:2:end]);```

ERROR: MethodError: no method matching LIBSVM.SupportVectors(::Int32, ::Array{Int32,1}, ::CategoricalArray{String,1,UInt8,String,CategoricalValue{String,UInt8},Union{}}, ::Array{Float64,2}, ::Array{Int32,1}, ::Array{LIBSVM.SVMNode,1})
Closest candidates are:
LIBSVM.SupportVectors(::Int32, ::Array{Int32,1}, ::Array{T,1}, ::AbstractArray{U,2}, ::Array{Int32,1}, ::Array{LIBSVM.SVMNode,1}) where {T, U} at /home/benny/.julia/packages/LIBSVM/5Z99T/src/LIBSVM.jl:18
LIBSVM.SupportVectors(::LIBSVM.SVMModel, ::Any, ::Any) at /home/benny/.julia/packages/LIBSVM/5Z99T/src/LIBSVM.jl:27 
安德烈·奥斯金(Andrey Oskin)

看来LIBSVM.jl文档已经过时了,并且软件包没有得到适当的更新,因此值得一个问题(或者至少是请求更新自述文件的请求)。

您看到的错误与程序包本身无关,而是在当前版本的DataFrames.jlandRDatasets.jl labels列中不再存在Vector(与LIBSVM.jl开发之时一样),而是在CategoricalArray中。您可以通过将CategoricalArray转换为normal来避免此问题Vector{String}完整的示例如下所示

using RDatasets, LIBSVM
using StatsBase, Printf # `mean` and `printf` are no longer in Base, and should be used explicitly

# Load Fisher's classic iris data
iris = dataset("datasets", "iris")

# LIBSVM handles multi-class data automatically using a one-against-one strategy
labels = string.(convert(Vector, iris[:Species]))

# First dimension of input data is features; second is instances
instances = convert(Array, iris[:, 1:4])'

# Train SVM on half of the data using default parameters. See documentation
# of svmtrain for options
model = svmtrain(instances[:, 1:2:end], labels[1:2:end]);

# Test model on the other half of the data.
(predicted_labels, decision_values) = svmpredict(model, instances[:, 2:2:end]);

# Compute accuracy
@printf "Accuracy: %.2f%%\n" mean((predicted_labels .== labels[2:2:end]))*100

或者,您可以使用MLJ.jlScikitLearn.jl,它们应该正确地自动包装LIBSVM.jl。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用SVM训练我的数据集

来自分类Dev

如何正确使用BoW训练OpenCV SVM

来自分类Dev

如何在python中使用scikit训练SVM?

来自分类Dev

如何使用python多次训练SVM分类器?

来自分类Dev

我应该如何使用noConflict()?

来自分类Dev

我应该如何使用 Intent?

来自分类Dev

我应该如何使用redis?

来自分类Dev

如何继续基于先前模型训练SVM

来自分类Dev

如何继续基于先前的模型训练SVM

来自分类Dev

训练svm模型时如何调整参数

来自分类Dev

在OpenCV上使用SVM训练图像

来自分类Dev

OpenCV使用图片示例训练SVM错误

来自分类Dev

使用图像训练 SVM 并进行预测

来自分类Dev

我应该如何在布朗语料库上训练gensim

来自分类Dev

准备我的数据以在SVM libsvm Matlab中进行训练

来自分类Dev

我应该如何正确使用setAttribute()方法?

来自分类Dev

我应该如何使用nvidia-prime?

来自分类Dev

我应该如何使用kubernetes管理部署

来自分类Dev

我应该如何使用index.html?

来自分类Dev

我应该如何使用Flux.publish()?

来自分类Dev

我应该如何使用Azure Blob容器?

来自分类Dev

我应该如何使用nvidia-prime?

来自分类Dev

我应该如何使用git的..语法?

来自分类Dev

我应该如何使用VirtualScreenLeft和VirtualScreenTop

来自分类Dev

我应该如何使用`docker rm -v`?

来自分类Dev

tensorflow tf.contrib.learn.SVM 如何重新加载训练好的模型并使用预测对新数据进行分类

来自分类Dev

如何在python中从sklearn训练多次SVM分类器?

来自分类Dev

如何在Matlab中训练超过2个班级的SVM

来自分类Dev

SVM机器学习-如何在训练集中定义目标?