Skip to content
This repository has been archived by the owner. It is now read-only.
Branch: master
Go to file
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

SVM.jl

THIS PACKAGE IS UNMAINTAINED AND WILL BE REMOVED FROM METADATA

Project Status: Unsupported - The project has reached a stable, usable state but the author(s) have ceased all work on it. A new maintainer may be desired. Build Status Coverage Status SVM

SVMs in Julia

Native Julia implementations of standard SVM algorithms. Currently, there are textbook style implementations of two popular linear SVM algorithms:

  • Pegasos (Shalev-Schwartz et al., 2007)
  • Dual Coordinate Descent (Hsieh et al., 2008)

The svm function is a wrapper for pegasos, but it is possible to call cddual explicitly. See the source code for the hyperparameters of the cddual function.

Usage

The demo below shows how SVMs work:

# To show how SVMs work, we'll use Fisher's iris data set
using SVM
using RDatasets

# We'll learn to separate setosa from other species
iris = dataset("datasets", "iris")

# SVM format expects observations in columns and features in rows
X = array(iris[:, 1:4])'
p, n = size(X)

# SVM format expects positive and negative examples to +1/-1
Y = [species == "setosa" ? 1.0 : -1.0 for species in iris[:Species]]

# Select a subset of the data for training, test on the rest.
train = randbool(n)

# We'll fit a model with all of the default parameters
model = svm(X[:,train], Y[train])

# And now evaluate that model on the testset
accuracy = countnz(predict(model, X[:,~train]) .== Y[~train])/countnz(~train)

You may specify non-default values for the various parameters:

# The algorithm processes minibatches of data of size k
model = svm(X, Y, k = 150)

# Weight regularization is controlled by lambda
model = svm(X, Y, lambda = 0.1)

# The algorithm performs T iterations
model = svm(X, Y, T = 1000)

About

SVM's for Julia

Resources

License

Releases

No releases published

Languages

You can’t perform that action at this time.