Class: FSelector::ChiSquaredTest

Inherits:
BaseDiscrete show all
Defined in:
lib/fselector/algo_discrete/ChiSquaredTest.rb

Overview

Chi-Squared test (CHI)

             N * ( P(f,c) * P(f',c') - P(f,c') * P(f',c) )^2
 CHI(f,c) = -------------------------------------------------
                      P(f) * P(f') * P(c) * P(c')

                   N * (A*D - B*C)^2
          = -------------------------------
             (A+B) * (C+D) * (A+C) * (B+D)

suitable for large samples and none of the values of (A, B, C, D) < 5

ref: Wikipedia and A Comparative Study on Feature Selection Methods for Drug Discovery

Instance Method Summary collapse

Methods included from Discretizer

#discretize_by_Chi2!, #discretize_by_ChiMerge!, #discretize_by_MID!, #discretize_by_TID!, #discretize_by_equal_frequency!, #discretize_by_equal_width!

Methods included from Entropy

#get_conditional_entropy, #get_information_gain, #get_joint_entropy, #get_marginal_entropy, #get_symmetrical_uncertainty

Methods included from Consistency

#get_IR, #get_IR_by_count, #get_IR_by_feature, #get_instance_count

Methods inherited from Base

#algo_type, #each_class, #each_feature, #each_sample, #get_class_labels, #get_classes, #get_data, #get_data_copy, #get_feature_ranks, #get_feature_scores, #get_feature_type, #get_feature_values, #get_features, #get_opt, #get_sample_size, #select_feature!, #select_feature_by_rank!, #select_feature_by_score!, #set_classes, #set_data, #set_feature_type, #set_features, #set_opt

Methods included from ReplaceMissingValues

#replace_by_fixed_value!, #replace_by_knn_value!, #replace_by_mean_value!, #replace_by_median_value!, #replace_by_most_seen_value!

Methods included from FileIO

#data_from_csv, #data_from_libsvm, #data_from_random, #data_from_url, #data_from_weka, #data_to_csv, #data_to_libsvm, #data_to_weka

Constructor Details

#initialize(correction = :yates, data = nil) ⇒ ChiSquaredTest

initialize from an existing data structure

Parameters:

  • correction (Boolean) (defaults to: :yates)

    use Yates's continuity correction if :yates, no correction otherwise


31
32
33
34
35
# File 'lib/fselector/algo_discrete/ChiSquaredTest.rb', line 31

def initialize(correction=:yates, data=nil)
  super(data)
  
  @correction = (correction==:yates) ? true : false
end