ruby-band 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. data/.travis.yml +3 -0
  2. data/Gemfile +30 -0
  3. data/Gemfile.lock +119 -0
  4. data/Jarfile +9 -0
  5. data/Jarfile.lock +10 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +321 -0
  8. data/README.rdoc +70 -0
  9. data/Rakefile +66 -0
  10. data/VERSION +1 -0
  11. data/band_server/client.rb +35 -0
  12. data/band_server/client_alt.rb +35 -0
  13. data/band_server/first_dataset.csv +15 -0
  14. data/band_server/second_dataset.csv +15 -0
  15. data/band_server/simple_server.rb +90 -0
  16. data/band_server/third_dataset.csv +15 -0
  17. data/band_server/uploads/first_dataset.csv +15 -0
  18. data/band_server/uploads/second_dataset.csv +15 -0
  19. data/band_server/uploads/third_dataset.csv +15 -0
  20. data/bin/ruby-band +83 -0
  21. data/ext/mkrf_conf.rb +74 -0
  22. data/features/create_dataset.feature +12 -0
  23. data/features/step_definitions/create_dataset.rb +39 -0
  24. data/features/step_definitions/weka_classifiers.rb +43 -0
  25. data/features/step_definitions/weka_clustering.rb +34 -0
  26. data/features/step_definitions/weka_filters.rb +32 -0
  27. data/features/step_definitions/weka_parsers.rb +46 -0
  28. data/features/step_definitions/weka_pipeline.rb +41 -0
  29. data/features/support/env.rb +3 -0
  30. data/features/weka_classifiers.feature +16 -0
  31. data/features/weka_clustering.feature +15 -0
  32. data/features/weka_filters.feature +12 -0
  33. data/features/weka_parsers.feature +18 -0
  34. data/features/weka_pipeline.feature +14 -0
  35. data/lib/ruby-band.rb +12 -0
  36. data/lib/ruby-band/apache.rb +2 -0
  37. data/lib/ruby-band/apache/stat/correlation.rb +42 -0
  38. data/lib/ruby-band/apache/stat/inference.rb +151 -0
  39. data/lib/ruby-band/apache/stat/regression.rb +22 -0
  40. data/lib/ruby-band/core.rb +6 -0
  41. data/lib/ruby-band/core/parser/parser.rb +27 -0
  42. data/lib/ruby-band/core/type/apache_matrices.rb +35 -0
  43. data/lib/ruby-band/core/type/attribute.rb +53 -0
  44. data/lib/ruby-band/core/type/instance.rb +10 -0
  45. data/lib/ruby-band/core/type/instances.rb +361 -0
  46. data/lib/ruby-band/core/type/utils.rb +31 -0
  47. data/lib/ruby-band/weka.rb +14 -0
  48. data/lib/ruby-band/weka/attribute_selection/attribute_selection_utils.rb +20 -0
  49. data/lib/ruby-band/weka/attribute_selection/evaluators.rb +58 -0
  50. data/lib/ruby-band/weka/attribute_selection/search.rb +52 -0
  51. data/lib/ruby-band/weka/classifiers/bayes/bayes.rb +86 -0
  52. data/lib/ruby-band/weka/classifiers/bayes/bayes_utils.rb +82 -0
  53. data/lib/ruby-band/weka/classifiers/evaluation.rb +13 -0
  54. data/lib/ruby-band/weka/classifiers/functions/functions.rb +177 -0
  55. data/lib/ruby-band/weka/classifiers/functions/functions_utils.rb +78 -0
  56. data/lib/ruby-band/weka/classifiers/lazy/lazy.rb +86 -0
  57. data/lib/ruby-band/weka/classifiers/lazy/lazy_utils.rb +83 -0
  58. data/lib/ruby-band/weka/classifiers/mi/mi.rb +191 -0
  59. data/lib/ruby-band/weka/classifiers/mi/mi_utils.rb +80 -0
  60. data/lib/ruby-band/weka/classifiers/rules/rules.rb +190 -0
  61. data/lib/ruby-band/weka/classifiers/rules/rules_utils.rb +81 -0
  62. data/lib/ruby-band/weka/classifiers/trees/trees.rb +110 -0
  63. data/lib/ruby-band/weka/classifiers/trees/trees_utils.rb +85 -0
  64. data/lib/ruby-band/weka/clusterers/clusterers.rb +99 -0
  65. data/lib/ruby-band/weka/clusterers/clusterers_utils.rb +86 -0
  66. data/lib/ruby-band/weka/db/DatabaseUtils_mysql +280 -0
  67. data/lib/ruby-band/weka/db/DatabaseUtils_postgresql +594 -0
  68. data/lib/ruby-band/weka/db/db.rb +74 -0
  69. data/lib/ruby-band/weka/filters/supervised/attribute/attribute.rb +55 -0
  70. data/lib/ruby-band/weka/filters/supervised/instance/instance.rb +17 -0
  71. data/lib/ruby-band/weka/filters/supervised/supervised_utils.rb +38 -0
  72. data/lib/ruby-band/weka/filters/unsupervised/attribute/attribute.rb +90 -0
  73. data/lib/ruby-band/weka/filters/unsupervised/instance/instance.rb +48 -0
  74. data/lib/ruby-band/weka/filters/unsupervised/unsupervised_utils.rb +38 -0
  75. data/resources/ReutersGrain-test.arff +611 -0
  76. data/resources/ReutersGrain-train.arff +1561 -0
  77. data/resources/weather.csv +15 -0
  78. data/resources/weather.numeric.arff +23 -0
  79. data/ruby-band.gemspec +178 -0
  80. data/spec/ruby-band_spec.rb +7 -0
  81. data/spec/spec_helper.rb +12 -0
  82. data/test/helper.rb +18 -0
  83. data/test/test_apacheCorrelation.rb +22 -0
  84. data/test/test_apacheInference.rb +46 -0
  85. data/test/test_ruby-band.rb +9 -0
  86. metadata +426 -0
@@ -0,0 +1,74 @@
1
+ path = File.expand_path(File.dirname(__FILE__))
2
+
3
+ def command?(name)
4
+ `which #{name}`
5
+ $?.success?
6
+ end
7
+
8
+ module OS
9
+ def OS.windows?
10
+ (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RbConfig::CONFIG['host_os']) != nil
11
+ end
12
+
13
+ def OS.mac?
14
+ (/darwin/ =~ RbConfig::CONFIG['host_os']) != nil
15
+ end
16
+
17
+ def OS.unix?
18
+ !OS.windows?
19
+ end
20
+
21
+ def OS.linux?
22
+ OS.unix? and not OS.mac?
23
+ end
24
+ end
25
+
26
+ File.open(File.join(path,"Rakefile"),"w") do |rakefile|
27
+
28
+ if OS.windows? == true
29
+ puts "Sorry, still no support is provided for your OS!"
30
+
31
+ elsif OS.mac? == true
32
+ if command?("mvn")==false && command?("brew")==true
33
+ rakefile.write <<-RAKE
34
+ task :brew_install do
35
+ sh "brew install maven"
36
+ end
37
+ task :default => [:brew_install]
38
+ RAKE
39
+ elsif command?("brew")==false
40
+ rakefile.write <<-RAKE
41
+ task :ok_inst do
42
+ puts "Sorry, Maven could not be installed. Try installing 'brew' first"
43
+ end
44
+ task :default => [:ok_inst]
45
+ RAKE
46
+ else
47
+ rakefile.write <<-RAKE
48
+ task :ok_inst do
49
+ puts "Maven has been detected on your system"
50
+ end
51
+ task :default => [:ok_inst]
52
+ RAKE
53
+ end
54
+ elsif OS.linux? == true
55
+ if command?("mvn")==false
56
+ rakefile.write <<-RAKE
57
+ task :apt_install do
58
+ sh "sudo apt-get install maven2"
59
+ end
60
+ task :default => [:apt_install]
61
+ RAKE
62
+ else
63
+ rakefile.write <<-RAKE
64
+ task :ok_inst do
65
+ puts "Maven has been detected on your system"
66
+ end
67
+ task :default => [:ok_inst]
68
+ RAKE
69
+ end
70
+ end
71
+ end
72
+
73
+
74
+
@@ -0,0 +1,12 @@
1
+ Feature: Creation of an in-memory dataset
2
+ In order to perform calculations on a dataset
3
+ I want to easily build it and store it in memory
4
+
5
+ Scenario: creation of a dataset
6
+ Given a nominal attribute, named "assertion", with values "yes,no"
7
+ Given one numeric attribute, named "temperature"
8
+ Given another numeric attribute, names "days"
9
+ Given two data rows: "yes,100,30","no,100,0"
10
+ Then I want to build en empty dataset for my use
11
+ And I want to populate the dataset by row
12
+ And I want to print my dataset as a bidimensional Ruby Array
@@ -0,0 +1,39 @@
1
+ Given(/^a nominal attribute, named "(.*?)", with values "(.*?)"$/) do |arg1, arg2|
2
+ $first_att = arg1.to_sym
3
+ $values = arg2.split(',')
4
+ end
5
+
6
+ Given(/^one numeric attribute, named "(.*?)"$/) do |arg1|
7
+ $second_att = arg1.to_sym
8
+ end
9
+
10
+ Given(/^another numeric attribute, names "(.*?)"$/) do |arg1|
11
+ $third_att = arg1.to_sym
12
+ end
13
+
14
+ Given(/^two data rows: "(.*?)","(.*?)"$/) do |arg1, arg2|
15
+ $first_row = arg1.split(',')
16
+ $second_row = arg2.split(',')
17
+ $first_row[1] = $first_row[1].to_f
18
+ $first_row[2] = $first_row[2].to_f
19
+ $second_row[1] = $second_row[1].to_f
20
+ $second_row[2] = $second_row[2].to_f
21
+ end
22
+
23
+ Then(/^I want to build en empty dataset for my use$/) do
24
+ $my_instance = Core::Type::Instances::Base.new do
25
+ nominal $first_att, $values
26
+ numeric $second_att
27
+ string $third_att
28
+ end
29
+ $my_instance.summary
30
+ end
31
+
32
+ Then(/^I want to populate the dataset by row$/) do
33
+ $my_instance.populate_by_row([$first_row,$second_row])
34
+ $my_instance.summary
35
+ end
36
+
37
+ Then(/^I want to print my dataset as a bidimensional Ruby Array$/) do
38
+ puts $my_instance.to_a2d.inspect
39
+ end
@@ -0,0 +1,43 @@
1
+ Given(/^the Weka "(.*?)" classifier$/) do |arg1|
2
+ @classifier = Weka::Classifier::Bayes::NaiveBayes.new
3
+ end
4
+
5
+ Then(/^I want to print a "(.*?)"$/) do |arg1|
6
+ @classifier.send arg1.to_sym
7
+ end
8
+
9
+ Then(/^I want to print an options list$/) do
10
+ @classifier.list_options
11
+ end
12
+
13
+ Given(/^the unsupervised Weka classifier "(.*?)"$/) do |arg1|
14
+ class My_classifier < Weka::Classifier::Bayes::NaiveBayes::Base
15
+ end
16
+ end
17
+
18
+ Then(/^I want to set option "(.*?)" for it$/) do |arg1|
19
+ My_classifier.set_options(arg1)
20
+ end
21
+
22
+ Then(/^I want to set the dataset parsed from "(.*?)"$/) do |arg1|
23
+ @arff = File.join('resources',arg1)
24
+ @dataset_ARFF = Core::Parser::parse_ARFF(@arff)
25
+ My_classifier.set_data(@dataset_ARFF)
26
+ end
27
+
28
+ Then(/^I want to print a summary for the dataset$/) do
29
+ @dataset_ARFF.summary
30
+ end
31
+
32
+ Then(/^I want to set the class index for attribute with index "(.*?)"$/) do |arg1|
33
+ My_classifier.set_class_index(arg1.to_i)
34
+ end
35
+
36
+ Then(/^I want to instantiate the classifier for my use$/) do
37
+ classifier = My_classifier.new
38
+ classifier.cross_validate(2)
39
+ end
40
+
41
+
42
+
43
+
@@ -0,0 +1,34 @@
1
+ Given(/^the ARFF dataset stored in the file "(.*?)"$/) do |arg1|
2
+ @arff = File.join('resources',arg1)
3
+ end
4
+
5
+ Given(/^the SimpleKMeans algorithm implementation from Weka$/) do
6
+ @clusterer = Weka::Clusterer::SimpleKMeans.new
7
+ end
8
+
9
+ Then(/^I want to parse the data from the file$/) do
10
+ @dataset_ARFF = Core::Parser::parse_ARFF(@arff)
11
+ end
12
+
13
+ Then(/^I want to list the options available for SimpleKMeans$/) do
14
+ puts @clusterer.list_options
15
+ end
16
+
17
+ Then(/^I want to set K = "(.*?)" as K\-means option$/) do |arg1|
18
+ class Clustering < Weka::Clusterer::SimpleKMeans::Base
19
+ end
20
+ Clustering.set_options "-N #{arg1}"
21
+ end
22
+
23
+ Then(/^I want to perform clustering on the parsed dataset$/) do
24
+ Clustering.set_data(@dataset_ARFF)
25
+ @clustered = Clustering.new
26
+ end
27
+
28
+ Then(/^I want to report result statistics$/) do
29
+ puts @clustered
30
+ end
31
+
32
+ Then(/^I want to use Weka clustering cross\-validation$/) do
33
+ puts @clustered.evaluate
34
+ end
@@ -0,0 +1,32 @@
1
+ Given(/^the example ARFF file "(.*?)"$/) do |arff_file|
2
+ @arff = File.join('resources',arff_file)
3
+ end
4
+
5
+ Given(/^the Weka Attribute Add filter$/) do
6
+ @filter = Weka::Filter::Unsupervised::Attribute::Add.new
7
+ end
8
+
9
+ Then(/^I want to parse the file in order to create an Instances class object$/) do
10
+ $dataset_ARFF = Core::Parser::parse_ARFF(@arff)
11
+ puts $dataset_ARFF.summary
12
+ end
13
+
14
+ Then(/^I want to print the available filter options and usage$/) do
15
+ @filter.options_list
16
+ end
17
+
18
+ Then(/^I want to set the option String "(.*?)"$/) do |arg1|
19
+ $arg1 = arg1
20
+ @filter.set do
21
+ filter_options $arg1
22
+ data $dataset_ARFF
23
+ end
24
+ end
25
+
26
+ Then(/^I want to add an attribute \(a column\) to the dataset using the Weka filter Add$/) do
27
+ @new_inst = @filter.use
28
+ end
29
+
30
+ Then(/^I want to print a "(.*?)" for the modified dataset$/) do |arg1|
31
+ @new_inst.send arg1.to_sym
32
+ end
@@ -0,0 +1,46 @@
1
+ Given /^the CSV file "(.*?)"$/ do |csv_file|
2
+ @csv = File.join('resources',csv_file)
3
+ @dataset_CSV = Core::Parser::parse_CSV(@csv)
4
+ end
5
+
6
+ Then /^I want to print to stdout the summary for the CSV parsed Instances object$/ do
7
+ @dataset_CSV.summary
8
+ end
9
+
10
+ Given /^the ARFF file "(.*?)"$/ do |arff_file|
11
+ @arff = File.join('resources',arff_file)
12
+ puts @arff
13
+ @dataset_ARFF = Core::Parser::parse_ARFF(@arff)
14
+ end
15
+
16
+ Then /^I want to print to stdout the summary for the ARFF parsed Instances object$/ do
17
+ @dataset_ARFF.summary
18
+ end
19
+
20
+ Given(/^the database "(.*?)"$/) do |arg1|
21
+ @db_connection = arg1
22
+ end
23
+
24
+ Given(/^a table named "(.*?)"$/) do |arg1|
25
+ @target_table = arg1
26
+ end
27
+
28
+ Then(/^I want to extract data from that table$/) do
29
+ # INSERT HERE MySQL DB CREDENTIALS in order to test this parsing functionality
30
+ # @dataset = Weka::Db.query_mysql(@db_connection,'root','',"select * from #{@target_table}")
31
+ end
32
+
33
+ Then(/^I want to print to stdout the summary for the parsed Instances object$/) do
34
+ # @dataset.summary
35
+ end
36
+
37
+ Then(/^I want to convert the data into a bidimensional Ruby Array$/) do
38
+ # @dataset.to_a2d.should == [["sunny", 85.0, 85.0, "FALSE", "no"], ["sunny", 80.0, 90.0, "TRUE", "no"], ["overcast", 83.0, 86.0, "FALSE", "yes"],
39
+ # ["rainy", 70.0, 96.0, "FALSE", "yes"], ["rainy", 68.0, 80.0, "FALSE", "yes"], ["rainy", 65.0, 70.0, "TRUE", "no"],
40
+ # ["overcast", 64.0, 65.0, "TRUE", "yes"], ["sunny", 72.0, 95.0, "FALSE", "no"], ["sunny", 69.0, 70.0, "FALSE", "yes"],
41
+ # ["rainy", 75.0, 80.0, "FALSE", "yes"], ["sunny", 75.0, 70.0, "TRUE", "yes"], ["overcast", 72.0, 90.0, "TRUE", "yes"],
42
+ # ["overcast", 81.0, 75.0, "FALSE", "yes"], ["rainy", 71.0, 91.0, "TRUE", "no"]]
43
+ end
44
+
45
+
46
+
@@ -0,0 +1,41 @@
1
+ Given(/^a file containing the training set data "(.*?)"$/) do |arg1|
2
+ @training_file = File.join('resources',arg1)
3
+ end
4
+
5
+ Given(/^a file containing the test set data "(.*?)"$/) do |arg1|
6
+ @test_file = File.join('resources',arg1)
7
+ end
8
+
9
+ Then(/^I want to parse them$/) do
10
+ $training_set = Core::Parser::parse_ARFF(@training_file)
11
+ $test_set = Core::Parser::parse_ARFF(@test_file)
12
+ end
13
+
14
+ Then(/^I want to filter them using the unsupervised filter "(.*?)"$/) do |arg1|
15
+ filter = Weka::Filter::Unsupervised::Attribute::StringToWordVector.new
16
+ filter.set do
17
+ data $training_set
18
+ end
19
+ $filtered_training_set = filter.use
20
+
21
+ $filtered_test_set = filter.use $test_set
22
+ $filtered_test_set.set_class_index 0
23
+ end
24
+
25
+ Then(/^I want to build a "(.*?)" classifier using training set data$/) do |arg1|
26
+ $bayes = Weka::Classifier::Bayes::ComplementNaiveBayes::Base.new do
27
+ set_data $filtered_training_set
28
+ set_class_index 0
29
+ end
30
+
31
+ end
32
+
33
+ Then(/^I want to evaluate the performance of the classifier on the test set$/) do
34
+ @evaluator = Weka::Classifier::Evaluation.new $filtered_training_set
35
+ @evaluator.evaluate_model($bayes,$filtered_test_set)
36
+ end
37
+
38
+ Then(/^I want want to print to stdout a summary of the evaluation$/) do
39
+ puts @evaluator.summary
40
+ end
41
+
@@ -0,0 +1,3 @@
1
+ $LOAD_PATH << File.expand_path('../../../lib', __FILE__)
2
+ $LOAD_PATH << File.expand_path('../../../resources/', __FILE__)
3
+ require 'ruby-band'
@@ -0,0 +1,16 @@
1
+ Feature: Using a Weka classifier
2
+ In order to classify an instance data
3
+ I want to use a Weka classifier
4
+
5
+ Scenario: Understand options and usage
6
+ Given the Weka "NaiveBayes" classifier
7
+ Then I want to print a "description"
8
+ And I want to print an options list
9
+
10
+ Scenario: Use a classifier on a data instance
11
+ Given the unsupervised Weka classifier "NaiveBayes"
12
+ Then I want to set option "-K" for it
13
+ And I want to set the dataset parsed from "weather.numeric.arff"
14
+ And I want to print a summary for the dataset
15
+ And I want to set the class index for attribute with index "0"
16
+ And I want to instantiate the classifier for my use
@@ -0,0 +1,15 @@
1
+ Feature: Weka dataset clustering
2
+ In order to group similar data vectors in my dataset
3
+ I want to use Weka clustering algorithms
4
+
5
+ Scenario: use of Kmeans algorithm
6
+ Given the ARFF dataset stored in the file "weather.numeric.arff"
7
+ Given the SimpleKMeans algorithm implementation from Weka
8
+ Then I want to parse the data from the file
9
+ And I want to list the options available for SimpleKMeans
10
+ And I want to set K = "4" as K-means option
11
+ And I want to perform clustering on the parsed dataset
12
+ And I want to report result statistics
13
+ And I want to use Weka clustering cross-validation
14
+
15
+
@@ -0,0 +1,12 @@
1
+ Feature: Filter a dataset (Weka Instances class)
2
+ In order to manipulate a dataset
3
+ I want to use the Weka Filter class on it
4
+
5
+ Scenario: Use of the Unsupervised Attribute filter 'Add'
6
+ Given the example ARFF file "weather.numeric.arff"
7
+ Given the Weka Attribute Add filter
8
+ Then I want to parse the file in order to create an Instances class object
9
+ And I want to print the available filter options and usage
10
+ And I want to set the option String "-T NUM -N dummy"
11
+ And I want to add an attribute (a column) to the dataset using the Weka filter Add
12
+ And I want to print a "summary" for the modified dataset
@@ -0,0 +1,18 @@
1
+ Feature: Weka basic parsing capabilities
2
+ In order to perform calculations on a dataset
3
+ I want to import data from .ARFF, .CSV files, and external databases
4
+
5
+ Scenario: parsing a CSV file
6
+ Given the CSV file "weather.csv"
7
+ Then I want to print to stdout the summary for the CSV parsed Instances object
8
+
9
+ Scenario: parsing an ARFF file
10
+ Given the ARFF file "weather.numeric.arff"
11
+ Then I want to print to stdout the summary for the ARFF parsed Instances object
12
+
13
+ Scenario: parsing data from a mySQL table
14
+ Given the database "jdbc:mysql://localhost:3306/Gene_classes"
15
+ And a table named "test_weka"
16
+ Then I want to extract data from that table
17
+ And I want to print to stdout the summary for the parsed Instances object
18
+ And I want to convert the data into a bidimensional Ruby Array
@@ -0,0 +1,14 @@
1
+ Feature: Classification pipeline
2
+ In order to perform text-mining on a dataset
3
+ I want to parse the data, filter it and then classify it using a Bayesian classifier
4
+
5
+ Scenario: Use of Naive Bayes on a filtered data set
6
+ Given a file containing the training set data "ReutersGrain-train.arff"
7
+ Given a file containing the test set data "ReutersGrain-test.arff"
8
+ Then I want to parse them
9
+ And I want to filter them using the unsupervised filter "StringToWordVector"
10
+ And I want to build a "NaiveBayes" classifier using training set data
11
+ And I want to evaluate the performance of the classifier on the test set
12
+ And I want want to print to stdout a summary of the evaluation
13
+
14
+
@@ -0,0 +1,12 @@
1
+ start = File.absolute_path '.'
2
+ Dir.chdir(File.join(File.dirname(__FILE__),".."))
3
+ require 'jbundler'
4
+ Dir.chdir start
5
+ require File.join(File.dirname(__FILE__),'..','.jbundler','classpath.rb')
6
+ require "java"
7
+ require "ruby-band/core"
8
+ require "ruby-band/weka"
9
+ require "ruby-band/apache"
10
+ Random.ancestors[1].instance_eval {remove_const :Random} if defined?(Random)
11
+ java_import 'java.util.Random'
12
+
@@ -0,0 +1,2 @@
1
+ require 'ruby-band/apache/stat/inference.rb'
2
+ require 'ruby-band/apache/stat/correlation.rb'
@@ -0,0 +1,42 @@
1
+ require 'java'
2
+
3
+ module Apache
4
+ module Stat
5
+ module Correlation
6
+
7
+ java_import "org.apache.commons.math3.stat.correlation.Covariance"
8
+ java_import "org.apache.commons.math3.stat.correlation.PearsonsCorrelation"
9
+ java_import "org.apache.commons.math3.stat.correlation.SpearmansCorrelation"
10
+
11
+ # Calculate covariance between two Numeric arrays
12
+ # * *Args* :
13
+ # - +Array1+ -> must be a RubyArray.
14
+ # - +Array2+ -> must be a RubyArray.
15
+ def self.covariance(array_1,array_2)
16
+ obj = Covariance.new
17
+ result = obj.covariance(array_1.to_java(:double),array_2.to_java(:double))
18
+ result
19
+ end
20
+
21
+ # Calculate Pearson correlation between two Numeric arrays
22
+ # * *Args* :
23
+ # - +Array1+ -> must be a RubyArray.
24
+ # - +Array2+ -> must be a RubyArray.
25
+ def self.pearson_correlation(array_1,array_2)
26
+ obj = PearsonsCorrelation.new
27
+ result = obj.correlation(array_1.to_java(:double),array_2.to_java(:double))
28
+ result
29
+ end
30
+
31
+ # Calculate Spearman correlation between two Numeric arrays
32
+ # * *Args* :
33
+ # - +Array1+ -> must be a RubyArray.
34
+ # - +Array2+ -> must be a RubyArray.
35
+ def self.spearman_correlation(array_1,array_2)
36
+ obj = SpearmansCorrelation.new
37
+ result = obj.correlation(array_1.to_java(:double),array_2.to_java(:double))
38
+ result
39
+ end
40
+ end
41
+ end
42
+ end