Skip to content

Commit

Permalink
add minimal libsvm lua modular
Browse files Browse the repository at this point in the history
  • Loading branch information
sploving committed Jul 22, 2011
1 parent e385d71 commit 49f6d5e
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 0 deletions.
@@ -0,0 +1,78 @@
require 'shogun'
require 'load'

function concatenate(...)
local result = ...
for _,t in ipairs{select(2, ...)} do
for row,rowdata in ipairs(t) do
for col,coldata in ipairs(rowdata) do
table.insert(result[row], coldata)
end
end
end
return result
end

function rand_matrix(rows, cols, dist)
local matrix = {}
for i = 1, rows do
matrix[i] = {}
for j = 1, cols do
matrix[i][j] = math.random() + dist
end
end
return matrix
end

function ones(num)
r={}
for i=1,num do
r[i]=1
end
return r
end


num=1000
dist=1
width=2.1
C=1

traindata_real=concatenate(rand_matrix(2,num, -dist),rand_matrix(2,num,dist))
testdata_real=concatenate(rand_matrix(2,num,-dist), rand_matrix(2,num, dist))

trainlab={}
for i = 1, num do
trainlab[i] = -1
trainlab[i + num] = 1
end

testlab={}
for i = 1, num do
testlab[i] = -1
testlab[i + num] = 1
end

feats_train=RealFeatures(traindata_real)
feats_test=RealFeatures(testdata_real)
kernel=GaussianKernel(feats_train, feats_train, width)

labels=Labels(trainlab)
svm=LibSVM(C, kernel, labels)
svm:train()

kernel:init(feats_train, feats_test)
out=svm:apply():get_labels()

err_num = 0
for i = 1, num do
if out[i] > 0 then
err_num = err_num+1
end
if out[i+num] < 0 then
err_num = err_num+1
end
end

testerr=err_num/(2*num)
print(testerr)
1 change: 1 addition & 0 deletions src/interfaces/lua_modular/shogun.lua
Expand Up @@ -152,3 +152,4 @@ WordFeatures = modshogun.WordFeatures
AvgDiagKernelNormalizer = modshogun.AvgDiagKernelNormalizer
StringUlongFeatures = modshogun.StringUlongFeatures
StringWordFeatures = modshogun.StringWordFeatures
LibSVM = modshogun.LibSVM

0 comments on commit 49f6d5e

Please sign in to comment.