kfold 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Binary file
@@ -0,0 +1 @@
1
+ v0.1. Commands for K-fold splitting and folding
data/LICENSE ADDED
Binary file
@@ -0,0 +1,11 @@
1
+ CHANGELOG
2
+ LICENSE
3
+ Manifest
4
+ README
5
+ Rakefile
6
+ bin/kfold
7
+ lib/kfold.rb
8
+ lib/kfold/data_file.rb
9
+ spec/helper.rb
10
+ spec/kfold/data_file_spec.rb
11
+ spec/kfold/sample_data_file.conll
data/README ADDED
@@ -0,0 +1,3 @@
1
+ == kfold
2
+
3
+ You should document your project here.
@@ -0,0 +1,17 @@
1
+ # coding: UTF-8
2
+ require 'rubygems'
3
+ require 'rake'
4
+ require 'echoe'
5
+
6
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), 'lib'))
7
+ require 'kfold'
8
+
9
+ Echoe.new('kfold', Kfold::VERSION) do |p|
10
+ p.description = "Create k-fold splits from datafiles (useful for cross-validation in supervised machine learning)"
11
+ p.url = "http://github.com/crishoj/kfold"
12
+ p.author = "Christian Rishøj"
13
+ p.email = "christian@rishoj.net"
14
+ p.ignore_pattern = ["tmp/**/*", "script/*", "nbproject/**/*"]
15
+ p.runtime_dependencies = ["commander"]
16
+ p.development_dependencies = []
17
+ end
@@ -0,0 +1,111 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'commander/import'
5
+ require 'kfold'
6
+ require 'fileutils'
7
+
8
+ program :version, Kfold::VERSION
9
+ program :description, 'Do stuff'
10
+
11
+ def do_directory(dir, overwrite = false)
12
+ if File.exist? dir
13
+ if overwrite
14
+ say "Removing existing #{dir}"
15
+ FileUtils.rm_rf(dir)
16
+ else
17
+ abort "Failed: Directory #{dir} exists"
18
+ end
19
+ end
20
+ FileUtils.mkdir dir
21
+ end
22
+
23
+ command :split do |c|
24
+ c.syntax = 'kfold split -i INPUT [options]'
25
+ c.summary = 'Split a data file into K partitions'
26
+ c.description = 'Given the data file INPUT, the partitions are written to files named INPUT.parts/{01..K}'
27
+ c.example 'Split the file sample.txt into 4 parts', 'kfold split -k4 sample.txt'
28
+ c.example 'Split the double-newline-delimited file sample.conll into 10 parts', 'kfold split -d"\n\n" sample.conll'
29
+ c.option '-i', '--input FILE', String, 'Data file to split'
30
+ c.option '-k', '--parts N', Integer, 'The number of partitions desired'
31
+ c.option '-d', '--delimiter DELIM', String, 'String used to separate individual entries (newline per default)'
32
+ c.option '-g', '--granularity N', Integer, 'Ensure the number of entries in each partition is divisible by N (useful for block-structured data)'
33
+ c.option '-f', '--overwrite', 'Remove existing parts prior to executing'
34
+ c.option '--fold', 'Additionally, create K folds of K-1 parts in a another folder'
35
+ c.option '--parts-name STRING', String, 'Use the given name as suffix for the partitions folder created'
36
+ c.option '--folds-name STRING', String, 'Use the given name as suffix for the folds folder created'
37
+ c.action do |args, options|
38
+ options.default :parts => 10, :delimiter => "\n", :granularity => 1, :parts_name => 'parts'
39
+ abort "Failed: Please specify input file using -i INPUT" unless options.input
40
+ abort "Failed: Input file #{options.input} does not exist" unless File.exist? options.input
41
+ # Interpret newlines, linefeeds and tabs
42
+ options.delimiter.gsub!('\n', "\n")
43
+ options.delimiter.gsub!('\r', "\r")
44
+ options.delimiter.gsub!('\t', "\t")
45
+ parts_dir = "#{options.input}.#{options.parts_name}"
46
+ do_directory(parts_dir, options.overwrite)
47
+ df = Kfold::DataFile.new(options.input, options.delimiter, options.granularity)
48
+ say "Partitioning breakdown: #{df.breakdown options.parts}"
49
+ part, part_file, last_part_num = nil
50
+ part_names = []
51
+ part_entries = 0
52
+ df.each_entry_in_parts(options.parts) do |part_num, entry|
53
+ if part_num != last_part_num
54
+ if part
55
+ part.close
56
+ say "[part] Wrote #{part_entries} entries to #{part_file}"
57
+ end
58
+ part_name = part_num.to_s.rjust(options.parts.to_s.size, '0')
59
+ part_names << part_name
60
+ part_file = File.join(parts_dir, part_name)
61
+ part = File.open(part_file, 'w')
62
+ last_part_num = part_num
63
+ part_entries = 0
64
+ end
65
+ part << entry
66
+ part_entries += 1
67
+ end
68
+ say "[part] Wrote #{part_entries} entries to #{part_file}"
69
+ part.close
70
+ if options.fold
71
+ folds_dir = "#{options.input}.#{options.folds_name}"
72
+ do_directory(folds_dir, options.overwrite)
73
+ part_names.each do |fold_name|
74
+ fold_parts = part_names - [fold_name]
75
+ fold_file = File.join(folds_dir, fold_name)
76
+ File.open(fold_file, 'w') do |fold|
77
+ fold_parts.each do |part|
78
+ part_file = File.join(parts_dir, part)
79
+ fold << File.open(part_file).read
80
+ end
81
+ end
82
+ say "[fold] Wrote parts #{fold_parts * ' '} to #{fold_file}"
83
+ end
84
+ end
85
+ end
86
+ end
87
+
88
+ alias_command :fold, :split, '--fold'
89
+
90
+ #command :train do |c|
91
+ # c.syntax = 'kfold train [options]'
92
+ # c.summary = ''
93
+ # c.description = ''
94
+ # c.example 'description', 'command example'
95
+ # c.option '--some-switch', 'Some switch that does something'
96
+ # c.action do |args, options|
97
+ # # Do something or c.when_called Kfold::Commands::Train
98
+ # end
99
+ #end
100
+ #
101
+ #command :test do |c|
102
+ # c.syntax = 'kfold test [options]'
103
+ # c.summary = ''
104
+ # c.description = ''
105
+ # c.example 'description', 'command example'
106
+ # c.option '--some-switch', 'Some switch that does something'
107
+ # c.action do |args, options|
108
+ # # Do something or c.when_called Kfold::Commands::Test
109
+ # end
110
+ #end
111
+
@@ -0,0 +1,37 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{kfold}
5
+ s.version = "0.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Christian Rishøj"]
9
+ s.cert_chain = ["/Users/crjensen/Documents/Certificates/gem-public_cert.pem"]
10
+ s.date = %q{2010-12-30}
11
+ s.default_executable = %q{kfold}
12
+ s.description = %q{Create k-fold splits from datafiles (useful for cross-validation in supervised machine learning)}
13
+ s.email = %q{christian@rishoj.net}
14
+ s.executables = ["kfold"]
15
+ s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "bin/kfold", "lib/kfold.rb", "lib/kfold/data_file.rb"]
16
+ s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "bin/kfold", "lib/kfold.rb", "lib/kfold/data_file.rb", "spec/helper.rb", "spec/kfold/data_file_spec.rb", "spec/kfold/sample_data_file.conll", "kfold.gemspec"]
17
+ s.homepage = %q{http://github.com/crishoj/kfold}
18
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Kfold", "--main", "README"]
19
+ s.require_paths = ["lib"]
20
+ s.rubyforge_project = %q{kfold}
21
+ s.rubygems_version = %q{1.3.7}
22
+ s.signing_key = %q{/Users/crjensen/Documents/Certificates/gem-private_key.pem}
23
+ s.summary = %q{Create k-fold splits from datafiles (useful for cross-validation in supervised machine learning)}
24
+
25
+ if s.respond_to? :specification_version then
26
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
27
+ s.specification_version = 3
28
+
29
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
30
+ s.add_runtime_dependency(%q<commander>, [">= 0"])
31
+ else
32
+ s.add_dependency(%q<commander>, [">= 0"])
33
+ end
34
+ else
35
+ s.add_dependency(%q<commander>, [">= 0"])
36
+ end
37
+ end
@@ -0,0 +1,7 @@
1
+
2
+ require 'kfold/data_file'
3
+
4
+ module Kfold
5
+ VERSION = 0.1
6
+
7
+ end
@@ -0,0 +1,67 @@
1
+
2
+ module Kfold
3
+ class DataFile
4
+ attr_reader :filename, :delimiter, :granularity
5
+
6
+ def initialize(filename, delimiter = "\n", granularity = 1)
7
+ @filename, @delimiter, @granularity = filename, delimiter, granularity
8
+ end
9
+
10
+ def num_entries
11
+ @num_entres ||= count_entries
12
+ end
13
+
14
+ def num_blocks
15
+ @num_blocks ||= (self.num_entries.to_f/self.granularity.to_f).ceil
16
+ end
17
+
18
+ def breakdown(parts = 10)
19
+ blocks_per_part, rest = self.num_blocks.divmod(parts)
20
+ msg = "#{num_entries} entries into #{parts} parts, #{blocks_per_part} blocks of #{self.granularity} entries per part"
21
+ if rest > 0
22
+ msg += " (plus #{rest} extra blocks in last part)"
23
+ end
24
+ msg
25
+ end
26
+
27
+ def each_entry_in_parts(parts = 10)
28
+ blocks_per_part, rest = num_blocks.divmod(parts)
29
+ cur_part = 1
30
+ cur_block = 1
31
+ cur_entry = 0
32
+ block_entries = 0
33
+ part_entries = 0
34
+ File.foreach(self.filename, self.delimiter) do |entry|
35
+ cur_entry += 1
36
+ yield cur_part, entry
37
+ block_entries += 1
38
+ part_entries += 1
39
+ if block_entries == self.granularity
40
+ # End of this block
41
+ if cur_block == blocks_per_part and not cur_part == parts
42
+ # End of this part
43
+ cur_part += 1
44
+ cur_block = 1
45
+ else
46
+ cur_block += 1
47
+ end
48
+ block_entries = 0
49
+ end
50
+ end
51
+ end
52
+
53
+ protected
54
+
55
+ def count_entries
56
+ num_entries = 0
57
+ last_empty = false
58
+ File.foreach(self.filename, self.delimiter) do |entry|
59
+ last_empty = (entry == '')
60
+ num_entries += 1
61
+ end
62
+ num_entries -= 1 if last_empty
63
+ num_entries
64
+ end
65
+
66
+ end
67
+ end
@@ -0,0 +1,3 @@
1
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/..'
2
+
3
+ require 'spec'
@@ -0,0 +1,65 @@
1
+
2
+ require 'kfold/data_file'
3
+
4
+ describe Kfold::DataFile do
5
+ before(:each) do
6
+ @sample_file = File.join(File.dirname(__FILE__), 'sample_data_file.conll')
7
+ @df = Kfold::DataFile.new(@sample_file, "\n\n")
8
+ end
9
+
10
+ it "should contain 11 entries" do
11
+ @df.num_entries.should == 11
12
+ end
13
+
14
+ it "should yield consecutive part numbers" do
15
+ next_part_num = nil
16
+ @df.each_entry_in_parts(@df.num_entries) do |part_num, entry|
17
+ part_num.should == next_part_num unless next_part_num.nil?
18
+ next_part_num = part_num + 1
19
+ end
20
+ end
21
+
22
+ it "should yield all the entries in the file" do
23
+ yield_count = 0
24
+ part_count = 0
25
+ last_part_num = nil
26
+ @df.each_entry_in_parts(1) do |part_num, entry|
27
+ yield_count += 1
28
+ if (part_num != last_part_num)
29
+ part_count += 1
30
+ last_part_num = part_num
31
+ end
32
+ end
33
+ yield_count.should == @df.num_entries
34
+ part_count.should == 1
35
+ end
36
+
37
+ it "should yield one entry per part if so requested" do
38
+ yield_count = 0
39
+ part_count = 0
40
+ last_part_num = nil
41
+ @df.each_entry_in_parts(@df.num_entries) do |part_num, entry|
42
+ yield_count += 1
43
+ if (part_num != last_part_num)
44
+ part_count += 1
45
+ last_part_num = part_num
46
+ end
47
+ end
48
+ yield_count.should == @df.num_entries
49
+ part_count.should == @df.num_entries
50
+ end
51
+
52
+ it "should yield the number of parts requested" do
53
+ part_count = 0
54
+ last_part_num = nil
55
+ @df.each_entry_in_parts(3) do |part_num, entry|
56
+ if (part_num != last_part_num)
57
+ part_count += 1
58
+ last_part_num = part_num
59
+ end
60
+ end
61
+ part_count.should == 3
62
+ end
63
+
64
+ end
65
+
@@ -0,0 +1,108 @@
1
+ 1 tashiro _ NAME NAMEper _ 2 HD 2 HD
2
+ 2 yasuko _ NAME NAMEper _ 3 COMP 3 COMP
3
+ 3 desu _ PV PVfin u 0 ROOT 0 ROOT
4
+ 4 . _ . . _ 3 PUNCT 3 PUNCT
5
+
6
+ 1 hayakawa _ NAME NAMEper _ 2 HD 2 HD
7
+ 2 ryou _ NAME NAMEper _ 3 COMP 3 COMP
8
+ 3 desu _ PV PVfin u 0 ROOT 0 ROOT
9
+ 4 . _ . . _ 3 PUNCT 3 PUNCT
10
+
11
+ 1 hayakawa _ NAME NAMEper _ 2 COMP 2 COMP
12
+ 2 saN _ P PNsf _ 6 ADJ 6 ADJ
13
+ 3 ima _ N Ntmp _ 6 ADJ 6 ADJ
14
+ 4 chotto _ ADV ADV _ 6 ADJ 6 ADJ
15
+ 5 ojikaN _ N NN _ 6 SBJ 6 SBJ
16
+ 6 yoroshii _ ADJ ADJifin _ 7 COMP 7 COMP
17
+ 7 desu _ PV PVfin u 0 ROOT 0 ROOT
18
+ 8 ka _ PS PSE _ 7 MRK 7 MRK
19
+ 9 chotto _ ADV ADV _ 16 ADJ 16 ADJ
20
+ 10 doitsu _ NAME NAMEloc _ 11 COMP 11 COMP
21
+ 11 no _ P Pgen _ 12 ADJ 12 ADJ
22
+ 12 shucchou _ N VN _ 13 COMP 13 COMP
23
+ 13 no _ P Pgen _ 14 COMP 14 COMP
24
+ 14 koto _ N NF _ 15 COMP 15 COMP
25
+ 15 de _ P P _ 16 ADJ 16 ADJ
26
+ 16 gosoudaN _ N VN _ 17 COMP 17 COMP
27
+ 17 shitai _ VADJ VADJi _ 18 COMP 18 COMP
28
+ 18 no _ N NF _ 19 COMP 19 COMP
29
+ 19 desu _ PV PVfin u 20 COMP 20 COMP
30
+ 20 ga _ PS PSSb _ 0 ROOT 0 ROOT
31
+ 21 . _ . . _ 20 PUNCT 20 PUNCT
32
+
33
+ 1 hai _ ITJ ITJ _ 0 ROOT 0 ROOT
34
+ 2 . _ . . _ 1 PUNCT 1 PUNCT
35
+
36
+ 1 daijoubu _ ADJ ADJ_n _ 2 COMP 2 COMP
37
+ 2 desu _ PV PVfin u 3 COMP 3 COMP
38
+ 3 ga _ PS PSSb _ 0 ROOT 0 ROOT
39
+ 4 . _ . . _ 3 PUNCT 3 PUNCT
40
+
41
+ 1 de _ CNJ CNJ _ 21 ADJ 21 ADJ
42
+ 2 dekimashitara _ V Vcnd _ 9 ADJ 9 ADJ
43
+ 3 koNkai _ N Ntmp _ 4 COMP 4 COMP
44
+ 4 no _ P Pgen _ 5 ADJ 5 ADJ
45
+ 5 shucchou _ N VN _ 7 SBJ 7 SBJ
46
+ 6 juuichigatsu _ CD CDdate _ 7 COMP 7 COMP
47
+ 7 ni _ P P _ 8 COMP 8 COMP
48
+ 8 to _ P PQ _ 9 COMP 9 COMP
49
+ 9 omotte _ V Vte _ 10 COMP 10 COMP
50
+ 10 iru _ VAUX VAUXfin u 11 COMP 11 COMP
51
+ 11 no _ N NF _ 12 COMP 12 COMP
52
+ 12 desu _ PV PVfin u 13 COMP 13 COMP
53
+ 13 ga _ PS PSSb _ 21 ADJ 21 ADJ
54
+ 14 juuichigatsu _ CD CDdate _ 15 COMP 15 COMP
55
+ 15 desu _ PV PVfin u 16 COMP 16 COMP
56
+ 16 to _ PS PSSa _ 21 ADJ 21 ADJ
57
+ 17 goyotei _ N NN _ 18 COMP 18 COMP
58
+ 18 no _ P Pgen _ 19 COMP 19 COMP
59
+ 19 hou _ N NF _ 21 SBJ 21 SBJ
60
+ 20 ikaga _ ADV ADVwh _ 21 COMP 21 COMP
61
+ 21 deshou _ PV PVfin u 0 ROOT 0 ROOT
62
+ 22 ka _ PS PSE _ 21 MRK 21 MRK
63
+ 23 . _ . . _ 22 PUNCT 22 PUNCT
64
+
65
+ 1 juuichigatsu _ CD CDdate _ 2 COMP 2 COMP
66
+ 2 desu _ PV PVfin u 0 ROOT 0 ROOT
67
+ 3 ka _ PS PSE _ 2 MRK 2 MRK
68
+ 4 . _ . . _ 3 PUNCT 3 PUNCT
69
+
70
+ 1 juuichigatsu _ CD CDdate _ 7 ADJ 7 ADJ
71
+ 2 wa _ P Pfoc _ 1 MRK 1 MRK
72
+ 3 zeNhaN _ N Ntmp _ 7 ADJ 7 ADJ
73
+ 4 nara _ P Pfoc _ 3 MRK 3 MRK
74
+ 5 jikaN _ N NN _ 6 COMP 6 COMP
75
+ 6 ga _ P Pnom _ 7 SBJ 7 SBJ
76
+ 7 toreru _ V Vfin u 9 COMP 9 COMP
77
+ 8 ka _ PS PSE _ 7 MRK 7 MRK
78
+ 9 to _ P PQ _ 10 COMP 10 COMP
79
+ 10 omoimasu _ V Vfin u 11 COMP 11 COMP
80
+ 11 ga _ PS PSSb _ 0 ROOT 0 ROOT
81
+ 12 . _ . . _ 11 PUNCT 11 PUNCT
82
+
83
+ 1 tsuki _ N NN _ 2 COMP 2 COMP
84
+ 2 no _ P Pgen _ 3 ADJ 3 ADJ
85
+ 3 zeNhaN _ N Ntmp _ 5 ADJ 5 ADJ
86
+ 4 nara _ P Pfoc _ 3 MRK 3 MRK
87
+ 5 yoroshii _ ADJ ADJifin _ 6 COMP 6 COMP
88
+ 6 desu _ PV PVfin u 0 ROOT 0 ROOT
89
+ 7 ka _ PS PSE _ 6 MRK 6 MRK
90
+ 8 . _ . . _ 7 PUNCT 7 PUNCT
91
+
92
+ 1 hai _ ITJ ITJ _ 0 ROOT 0 ROOT
93
+ 2 . _ . . _ 1 PUNCT 1 PUNCT
94
+
95
+ 1 sou _ ADV ADVdem _ 2 COMP 2 COMP
96
+ 2 shimasu _ V Vfin u 3 COMP 3 COMP
97
+ 3 to _ PS PSSa _ 11 ADJ 11 ADJ
98
+ 4 kokonoka _ CD CDdate _ 5 COMP 5 COMP
99
+ 5 no _ P Pgen _ 7 ADJ 7 ADJ
100
+ 6 getsuyou _ NT NT _ 7 COMP 7 COMP
101
+ 7 hatsu _ N Nsf _ 11 SBJ 11 SBJ
102
+ 8 toka _ P Pcnj _ 7 MRK 7 MRK
103
+ 9 wa _ P Pfoc _ 7 MRK 7 MRK
104
+ 10 ikaga _ ADV ADVwh _ 11 COMP 11 COMP
105
+ 11 deshou _ PV PVfin u 0 ROOT 0 ROOT
106
+ 12 ka _ PS PSE _ 11 MRK 11 MRK
107
+ 13 . _ . . _ 12 PUNCT 12 PUNCT
108
+
metadata ADDED
@@ -0,0 +1,118 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kfold
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ version: "0.1"
9
+ platform: ruby
10
+ authors:
11
+ - "Christian Rish\xC3\xB8j"
12
+ autorequire:
13
+ bindir: bin
14
+ cert_chain:
15
+ - |
16
+ -----BEGIN CERTIFICATE-----
17
+ MIIDNjCCAh6gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMRIwEAYDVQQDDAljaHJp
18
+ c3RpYW4xFjAUBgoJkiaJk/IsZAEZFgZyaXNob2oxEzARBgoJkiaJk/IsZAEZFgNu
19
+ ZXQwHhcNMTAxMjMwMTAwMjUzWhcNMTExMjMwMTAwMjUzWjBBMRIwEAYDVQQDDAlj
20
+ aHJpc3RpYW4xFjAUBgoJkiaJk/IsZAEZFgZyaXNob2oxEzARBgoJkiaJk/IsZAEZ
21
+ FgNuZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCg2y4Tc0otb09T
22
+ /UucTm3DbQilOfQwN9QCzjjnPT6071YeyHsEmv4zokUCBSW5n+H/D0tSAQobT6D+
23
+ APet6eFLGRW0L9MGsi7do5w+GY4B2nr6CGaouJaoj7XvWKqgigZ6YwfI9RAdpVNT
24
+ UhF5VeUs9KZ8dMgc9YeezrB9yZMNHM9nDKDEH6bK53xH8OeUkaUBhASEYJ07zMj+
25
+ hioKQQB/BUCAxpc5ElE9dmdJuinHFqD7KmqU7KSp/0wHvvgT5sqzS32xzlovOSxK
26
+ GDHt9mtVmQiD3fBCfPJhysaRSUyaUA7jEFljgRTxuH1GWLyGE24/c6zVBknLPSC+
27
+ hFW0Ib3/AgMBAAGjOTA3MAkGA1UdEwQCMAAwHQYDVR0OBBYEFNtKnxiLUpy9a406
28
+ diOk3lm5ISTEMAsGA1UdDwQEAwIEsDANBgkqhkiG9w0BAQUFAAOCAQEAiMhO6NXU
29
+ f/uTInOl2fFxIQsakyCXoWE2u7U2NLLW5R5DCYFK/EH+OYsum1Khu+Jt/n5loV7e
30
+ B4QlCbwlhwztW7sWA/sQQoLQsroZi2kmYwnkYLeqRgUre3E+YpD3S9QAWIFYpkBZ
31
+ b9mIToqxb0m+WiLCysrg3sfDymrfuNDdtQcVPcJ5W2+Mj6LJJN65bAvqqExVpr63
32
+ qbn/bmiocEIbQUsPSVuw+FSIiR6be/Ty3QpWQgxXnbHsfHFWPpADuOwTYPLxWqBg
33
+ 4izI+lCFvIjAaa5WjKVW8PV3XIvgr4+/ESIzs1OOVW7ktQNwu7GXt/kR2KQH9FRC
34
+ VSyVlp5OZP6OoA==
35
+ -----END CERTIFICATE-----
36
+
37
+ date: 2010-12-30 00:00:00 +07:00
38
+ default_executable:
39
+ dependencies:
40
+ - !ruby/object:Gem::Dependency
41
+ name: commander
42
+ prerelease: false
43
+ requirement: &id001 !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ segments:
49
+ - 0
50
+ version: "0"
51
+ type: :runtime
52
+ version_requirements: *id001
53
+ description: Create k-fold splits from datafiles (useful for cross-validation in supervised machine learning)
54
+ email: christian@rishoj.net
55
+ executables:
56
+ - kfold
57
+ extensions: []
58
+
59
+ extra_rdoc_files:
60
+ - CHANGELOG
61
+ - LICENSE
62
+ - README
63
+ - bin/kfold
64
+ - lib/kfold.rb
65
+ - lib/kfold/data_file.rb
66
+ files:
67
+ - CHANGELOG
68
+ - LICENSE
69
+ - Manifest
70
+ - README
71
+ - Rakefile
72
+ - bin/kfold
73
+ - lib/kfold.rb
74
+ - lib/kfold/data_file.rb
75
+ - spec/helper.rb
76
+ - spec/kfold/data_file_spec.rb
77
+ - spec/kfold/sample_data_file.conll
78
+ - kfold.gemspec
79
+ has_rdoc: true
80
+ homepage: http://github.com/crishoj/kfold
81
+ licenses: []
82
+
83
+ post_install_message:
84
+ rdoc_options:
85
+ - --line-numbers
86
+ - --inline-source
87
+ - --title
88
+ - Kfold
89
+ - --main
90
+ - README
91
+ require_paths:
92
+ - lib
93
+ required_ruby_version: !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ segments:
99
+ - 0
100
+ version: "0"
101
+ required_rubygems_version: !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ segments:
107
+ - 1
108
+ - 2
109
+ version: "1.2"
110
+ requirements: []
111
+
112
+ rubyforge_project: kfold
113
+ rubygems_version: 1.3.7
114
+ signing_key:
115
+ specification_version: 3
116
+ summary: Create k-fold splits from datafiles (useful for cross-validation in supervised machine learning)
117
+ test_files: []
118
+
@@ -0,0 +1,2 @@
1
+ y���ڇ�1 �c���<�0�/Ź�)ZA�^�
2
+ �����ࠤ�d�Z�8WZ.~��u��-P}Z����""a��R(_��ڤC���T|�N�`�A�W~(��O� �䞾��q�x0��\.��πxM#�����n��f�j� �^E�����F��?���!�&� ]�-�,��B��7�(offb;���խaaP�U�'t��D|#�%�]������,��[ڈ.� /�j�#�v81�9��е+%Y�)�d9-/i