summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndreas Maunz <andreas@maunz.de>2011-05-25 17:10:14 +0200
committerAndreas Maunz <andreas@maunz.de>2011-05-25 17:10:14 +0200
commit2b12d07bec101df8c10b7ab5aff1491b0997a6c7 (patch)
treea97cb652f44ebc32796bced3858987e158c16768 /lib
parentca6dd87b7c80611c4f4e4716f68fe6633ce1066b (diff)
6th v
Diffstat (limited to 'lib')
-rw-r--r--lib/algorithm.rb17
-rw-r--r--lib/model.rb4
2 files changed, 11 insertions, 10 deletions
diff --git a/lib/algorithm.rb b/lib/algorithm.rb
index 2f722c1..e089184 100644
--- a/lib/algorithm.rb
+++ b/lib/algorithm.rb
@@ -138,7 +138,7 @@ module OpenTox
# @param [Array] neighbors, each neighbor is a hash with keys `:similarity, :activity`
# @param [optional] params Ignored (only for compatibility with local_svm_regression)
# @return [Hash] Hash with keys `:prediction, :confidence`
- def self.weighted_majority_vote(neighbors,params={})
+ def self.weighted_majority_vote(neighbors,params={}, props=nil)
conf = 0.0
confidence = 0.0
neighbors.each do |neighbor|
@@ -178,7 +178,7 @@ module OpenTox
sims = neighbors.collect{ |n| Algorithm.gauss(n[:similarity]) } # similarity values btwn q and nbors
begin
- prediction = (props.nil? ? local_svm(neighbors, acts, sims, "nu-svr", params) : local_svm_prop(props, acts, sims, "nu-svr", params))
+ prediction = (props.nil? ? local_svm(neighbors, acts, sims, "nu-svr", params) : local_svm_prop(props, acts, "nu-svr", params))
prediction = (take_logs ? 10**(prediction.to_f) : prediction.to_f)
LOGGER.debug "Prediction is: '" + prediction.to_s + "'."
rescue Exception => e
@@ -203,7 +203,7 @@ module OpenTox
acts_f = acts.collect {|v| v == true ? 1.0 : 0.0}
sims = neighbors.collect{ |n| Algorithm.gauss(n[:similarity]) } # similarity values btwn q and nbors
begin
- prediction = (props.nil? ? local_svm(neighbors, acts_f, sims, "C-bsvc", params) : local_svm_prop(props, acts_f, sims, "C-bsvc", params))
+ prediction = (props.nil? ? local_svm(neighbors, acts_f, sims, "C-bsvc", params) : local_svm_prop(props, acts_f, "C-bsvc", params))
LOGGER.debug "Prediction is: '" + prediction.to_s + "'."
rescue Exception => e
LOGGER.debug "#{e.class}: #{e.message} #{e.backtrace}"
@@ -226,7 +226,7 @@ module OpenTox
# @param [Hash] params Keys `:similarity_algorithm,:p_values` are required
# @param [Array] props, propositionalization of neighbors and query structure e.g. [ Array_for_q, two-nested-Arrays_for_n ]
# @return [Numeric] A prediction value.
- def self.local_svm(neighbors, acts, sims, type, params, props=nil)
+ def self.local_svm(neighbors, acts, sims, type, params)
neighbor_matches = neighbors.collect{ |n| n[:features] } # URIs of matches
gram_matrix = [] # square matrix of similarities between neighbors; implements weighted tanimoto kernel
if neighbor_matches.size == 0
@@ -326,16 +326,17 @@ module OpenTox
LOGGER.debug "Setting R data ..."
# set data
@r.n_prop = n_prop.flatten
- @r.n = n_prop.size
+ @r.n_prop_x_size = n_prop.size
+ @r.n_prop_y_size = n_prop[0].size
@r.y = acts
@r.q_prop = q_prop
begin
LOGGER.debug "Preparing R data ..."
# prepare data
- @r.eval "y<-as.vector(y)"
- @r.eval "prop_matrix<-matrix(n_prop,n,n)"
- @r.eval "q_prop<-as.vector(q_prop)"
+ @r.eval "y<-matrix(y)"
+ @r.eval "prop_matrix<-matrix(n_prop, n_prop_x_size, n_prop_y_size, byrow=TRUE)"
+ @r.eval "q_prop<-matrix(q_prop, 1, n_prop_y_size, byrow=TRUE)"
# model + support vectors
LOGGER.debug "Creating SVM model ..."
diff --git a/lib/model.rb b/lib/model.rb
index 6a4602f..1a5aa37 100644
--- a/lib/model.rb
+++ b/lib/model.rb
@@ -215,7 +215,7 @@ module OpenTox
LOGGER.info "BLAZAR: Neighbors round #{i}: #{position} + #{lr_size}."
neighbors_balanced(s, l, position, lr_size) # get ratio fraction of larger part
props = get_props
- prediction = eval("#{@prediction_algorithm}(@neighbors,{:similarity_algorithm => @similarity_algorithm, :p_values => @p_values})")
+ prediction = eval("#{@prediction_algorithm}(@neighbors,{:similarity_algorithm => @similarity_algorithm, :p_values => @p_values}, props)")
if prediction_best.nil? || prediction[:confidence].abs > prediction_best[:confidence].abs
prediction_best=prediction
neighbors_best=@neighbors
@@ -233,7 +233,7 @@ module OpenTox
else # no balancing as before
neighbors
props = get_props
- prediction = eval("#{@prediction_algorithm}(@neighbors,{:similarity_algorithm => @similarity_algorithm, :p_values => @p_values})")
+ prediction = eval("#{@prediction_algorithm}(@neighbors,{:similarity_algorithm => @similarity_algorithm, :p_values => @p_values}, props)")
end
# TODO: reasonable feature name