diff options
author | Andreas Maunz <andreas@maunz.de> | 2011-05-25 17:10:14 +0200 |
---|---|---|
committer | Andreas Maunz <andreas@maunz.de> | 2011-05-25 17:10:14 +0200 |
commit | 2b12d07bec101df8c10b7ab5aff1491b0997a6c7 (patch) | |
tree | a97cb652f44ebc32796bced3858987e158c16768 /lib | |
parent | ca6dd87b7c80611c4f4e4716f68fe6633ce1066b (diff) |
6th v
Diffstat (limited to 'lib')
-rw-r--r-- | lib/algorithm.rb | 17 | ||||
-rw-r--r-- | lib/model.rb | 4 |
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 |