ai4r 1.2 → 1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (139) hide show
  1. data/README.rdoc +12 -25
  2. data/examples/decision_trees/id3_example.rb +6 -9
  3. data/examples/decision_trees/results.txt +2 -0
  4. data/examples/genetic_algorithm/genetic_algorithm_example.rb +11 -13
  5. data/examples/neural_network/xor_example.rb +25 -0
  6. data/lib/ai4r.rb +10 -0
  7. data/lib/ai4r/classifiers/classifier.rb +46 -0
  8. data/lib/ai4r/classifiers/id3.rb +27 -58
  9. data/lib/ai4r/classifiers/one_r.rb +19 -58
  10. data/lib/ai4r/classifiers/prism.rb +21 -57
  11. data/lib/ai4r/classifiers/zero_r.rb +16 -48
  12. data/lib/ai4r/clusterers/bisecting_k_means.rb +115 -0
  13. data/lib/ai4r/clusterers/clusterer.rb +55 -0
  14. data/lib/ai4r/clusterers/k_means.rb +164 -0
  15. data/lib/ai4r/data/data_set.rb +250 -0
  16. data/lib/ai4r/genetic_algorithm/genetic_algorithm.rb +19 -19
  17. data/lib/ai4r/neural_network/backpropagation.rb +23 -24
  18. data/site/build/site/en/broken-links.xml +2 -0
  19. data/site/build/site/en/downloads.html +200 -0
  20. data/site/build/site/en/downloads.pdf +151 -0
  21. data/site/build/site/en/forum.html +197 -0
  22. data/site/build/site/en/forum.pdf +151 -0
  23. data/site/build/site/en/geneticAlgorithms.html +591 -0
  24. data/site/build/site/en/geneticAlgorithms.pdf +934 -0
  25. data/site/build/site/en/images/ai4r-logo.png +0 -0
  26. data/site/build/site/en/images/built-with-forrest-button.png +0 -0
  27. data/site/build/site/en/images/c.png +0 -0
  28. data/site/build/site/en/images/c_wbn.png +0 -0
  29. data/site/build/site/en/images/c_wn.png +0 -0
  30. data/site/build/site/en/images/ero.gif +0 -0
  31. data/site/build/site/en/images/europe2.png +0 -0
  32. data/site/build/site/en/images/europe3.png +0 -0
  33. data/site/build/site/en/images/fitness.png +0 -0
  34. data/site/build/site/en/images/genetic_algorithms_example.png +0 -0
  35. data/site/build/site/en/images/instruction_arrow.png +0 -0
  36. data/site/build/site/en/images/jadeferret.png +0 -0
  37. data/site/build/site/en/images/my_email.png +0 -0
  38. data/site/build/site/en/images/neural_network_example.png +0 -0
  39. data/site/build/site/en/images/rubyforge.png +0 -0
  40. data/site/build/site/en/images/s.png +0 -0
  41. data/site/build/site/en/images/s_wbn.png +0 -0
  42. data/site/build/site/en/images/s_wn.png +0 -0
  43. data/site/build/site/en/images/sigmoid.png +0 -0
  44. data/site/build/site/en/images/t.png +0 -0
  45. data/site/build/site/en/images/t_wbn.png +0 -0
  46. data/site/build/site/en/images/t_wn.png +0 -0
  47. data/site/build/site/en/index.html +336 -0
  48. data/site/build/site/en/index.pdf +508 -0
  49. data/site/build/site/en/linkmap.html +263 -0
  50. data/site/build/site/en/linkmap.pdf +94 -0
  51. data/site/build/site/en/locationmap.xml +72 -0
  52. data/site/build/site/en/machineLearning.html +339 -0
  53. data/site/build/site/en/machineLearning.pdf +337 -0
  54. data/site/build/site/en/neuralNetworks.html +484 -0
  55. data/site/build/site/en/neuralNetworks.pdf +604 -0
  56. data/site/build/site/en/skin/CommonMessages_de.xml +23 -0
  57. data/site/build/site/en/skin/CommonMessages_en_US.xml +23 -0
  58. data/site/build/site/en/skin/CommonMessages_es.xml +23 -0
  59. data/site/build/site/en/skin/CommonMessages_fr.xml +23 -0
  60. data/site/build/site/en/skin/basic.css +166 -0
  61. data/site/build/site/en/skin/breadcrumbs-optimized.js +90 -0
  62. data/site/build/site/en/skin/breadcrumbs.js +237 -0
  63. data/site/build/site/en/skin/fontsize.js +166 -0
  64. data/site/build/site/en/skin/getBlank.js +40 -0
  65. data/site/build/site/en/skin/getMenu.js +45 -0
  66. data/site/build/site/en/skin/images/README.txt +1 -0
  67. data/site/build/site/en/skin/images/add.jpg +0 -0
  68. data/site/build/site/en/skin/images/built-with-forrest-button.png +0 -0
  69. data/site/build/site/en/skin/images/chapter.gif +0 -0
  70. data/site/build/site/en/skin/images/chapter_open.gif +0 -0
  71. data/site/build/site/en/skin/images/current.gif +0 -0
  72. data/site/build/site/en/skin/images/error.png +0 -0
  73. data/site/build/site/en/skin/images/external-link.gif +0 -0
  74. data/site/build/site/en/skin/images/fix.jpg +0 -0
  75. data/site/build/site/en/skin/images/forrest-credit-logo.png +0 -0
  76. data/site/build/site/en/skin/images/hack.jpg +0 -0
  77. data/site/build/site/en/skin/images/header_white_line.gif +0 -0
  78. data/site/build/site/en/skin/images/info.png +0 -0
  79. data/site/build/site/en/skin/images/instruction_arrow.png +0 -0
  80. data/site/build/site/en/skin/images/label.gif +0 -0
  81. data/site/build/site/en/skin/images/page.gif +0 -0
  82. data/site/build/site/en/skin/images/pdfdoc.gif +0 -0
  83. data/site/build/site/en/skin/images/poddoc.png +0 -0
  84. data/site/build/site/en/skin/images/printer.gif +0 -0
  85. data/site/build/site/en/skin/images/rc-b-l-15-1body-2menu-3menu.png +0 -0
  86. data/site/build/site/en/skin/images/rc-b-r-15-1body-2menu-3menu.png +0 -0
  87. data/site/build/site/en/skin/images/rc-b-r-5-1header-2tab-selected-3tab-selected.png +0 -0
  88. data/site/build/site/en/skin/images/rc-t-l-5-1header-2searchbox-3searchbox.png +0 -0
  89. data/site/build/site/en/skin/images/rc-t-l-5-1header-2tab-selected-3tab-selected.png +0 -0
  90. data/site/build/site/en/skin/images/rc-t-l-5-1header-2tab-unselected-3tab-unselected.png +0 -0
  91. data/site/build/site/en/skin/images/rc-t-r-15-1body-2menu-3menu.png +0 -0
  92. data/site/build/site/en/skin/images/rc-t-r-5-1header-2searchbox-3searchbox.png +0 -0
  93. data/site/build/site/en/skin/images/rc-t-r-5-1header-2tab-selected-3tab-selected.png +0 -0
  94. data/site/build/site/en/skin/images/rc-t-r-5-1header-2tab-unselected-3tab-unselected.png +0 -0
  95. data/site/build/site/en/skin/images/remove.jpg +0 -0
  96. data/site/build/site/en/skin/images/rss.png +0 -0
  97. data/site/build/site/en/skin/images/spacer.gif +0 -0
  98. data/site/build/site/en/skin/images/success.png +0 -0
  99. data/site/build/site/en/skin/images/txtdoc.png +0 -0
  100. data/site/build/site/en/skin/images/update.jpg +0 -0
  101. data/site/build/site/en/skin/images/valid-html401.png +0 -0
  102. data/site/build/site/en/skin/images/vcss.png +0 -0
  103. data/site/build/site/en/skin/images/warning.png +0 -0
  104. data/site/build/site/en/skin/images/xmldoc.gif +0 -0
  105. data/site/build/site/en/skin/menu.js +48 -0
  106. data/site/build/site/en/skin/note.txt +50 -0
  107. data/site/build/site/en/skin/print.css +54 -0
  108. data/site/build/site/en/skin/profile.css +163 -0
  109. data/site/build/site/en/skin/prototype.js +1257 -0
  110. data/site/build/site/en/skin/screen.css +587 -0
  111. data/site/build/site/en/svn.html +252 -0
  112. data/site/build/site/en/svn.pdf +306 -0
  113. data/site/build/site/en/wholesite.pdf +1915 -0
  114. data/site/build/tmp/brokenlinks.xml +2 -0
  115. data/site/build/tmp/cocoon-work/cache-dir/cocoon-ehcache-1.data +0 -0
  116. data/site/build/tmp/cocoon-work/cache-dir/cocoon-ehcache-1.index +0 -0
  117. data/site/build/tmp/locationmap.xml +14 -14
  118. data/site/build/tmp/output.xmap +23 -23
  119. data/site/build/tmp/pluginlist2fetchbuild.xml +144 -144
  120. data/site/build/tmp/projfilters.properties +41 -41
  121. data/site/build/webapp/WEB-INF/logs/core.log +593 -679
  122. data/site/build/webapp/WEB-INF/logs/error.log +362 -279
  123. data/site/build/webapp/WEB-INF/logs/sitemap.log +368 -1015
  124. data/site/src/documentation/content/xdocs/index.xml +18 -10
  125. data/site/src/documentation/content/xdocs/machineLearning.xml +4 -3
  126. data/site/src/documentation/content/xdocs/site.xml +2 -1
  127. data/site/src/documentation/resources/images/sigmoid.png +0 -0
  128. data/test/classifiers/id3_test.rb +45 -44
  129. data/test/classifiers/one_r_test.rb +19 -17
  130. data/test/classifiers/prism_test.rb +22 -20
  131. data/test/classifiers/zero_r_test.rb +15 -12
  132. data/test/clusterers/bisecting_k_means_test.rb +59 -0
  133. data/test/clusterers/k_means_test.rb +93 -0
  134. data/test/data/data_set_test.rb +92 -0
  135. metadata +252 -128
  136. data/lib/ai4r/classifiers/classifier_helper.rb +0 -54
  137. data/site/src/documentation/content/xdocs/forum.html +0 -9
  138. data/site/src/documentation/resources/images/Thumbs.db +0 -0
  139. data/site/src/documentation/resources/images/sub-dir/Thumbs.db +0 -0
@@ -0,0 +1,263 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2
+ <html>
3
+ <head>
4
+ <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
5
+ <meta content="Apache Forrest" name="Generator">
6
+ <meta name="Forrest-version" content="0.8">
7
+ <meta name="Forrest-skin-name" content="pelt">
8
+ <title>Site Linkmap Table of Contents</title>
9
+ <link type="text/css" href="skin/basic.css" rel="stylesheet">
10
+ <link media="screen" type="text/css" href="skin/screen.css" rel="stylesheet">
11
+ <link media="print" type="text/css" href="skin/print.css" rel="stylesheet">
12
+ <link type="text/css" href="skin/profile.css" rel="stylesheet">
13
+ <script src="skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="skin/fontsize.js" language="javascript" type="text/javascript"></script>
14
+ <link rel="shortcut icon" href="">
15
+ </head>
16
+ <body onload="init()">
17
+ <script type="text/javascript">ndeSetTextSize();</script>
18
+ <div id="top">
19
+ <!--+
20
+ |header
21
+ +-->
22
+ <div class="header">
23
+ <!--+
24
+ |start group logo
25
+ +-->
26
+ <div class="grouplogo">
27
+ <a href="http://www.jadeferret.com"><img class="logoImage" alt="Jade Ferret" src="images/jadeferret.png" title="Jade Ferret"></a>
28
+ </div>
29
+ <!--+
30
+ |end group logo
31
+ +-->
32
+ <!--+
33
+ |start Project Logo
34
+ +-->
35
+ <div class="projectlogo">
36
+ <a href="http://ai4r.rubyforge.org/"><img class="logoImage" alt="ai4r" src="images/ai4r-logo.png" title="AI4R - Artificial Intelligence for Ruby"></a>
37
+ </div>
38
+ <!--+
39
+ |end Project Logo
40
+ +-->
41
+ <!--+
42
+ |start Search
43
+ +-->
44
+ <div class="searchbox">
45
+ <div class="roundtopsmall">
46
+ <form target="_top" action="http://www.google.com/custom" method="get">
47
+ <input value="ai4r.rubyforge.org;raa.ruby-lang.org;rubyforge.org" name="domains" type="hidden"><label style="display: none" for="sbi">Enter your search terms</label><input id="sbi" value="" maxlength="255" size="31" name="q" type="text"><label style="display: none" for="sbb">Submit search form</label><input id="sbb" value="Search" name="sa" type="submit"><span style="display:none"><input id="ss0" value="" name="sitesearch" style="display=none" type="radio"><input id="ss1" checked value="ai4r.rubyforge.org" name="sitesearch" style="display=none" type="radio"><input id="ss2" value="raa.ruby-lang.org" name="sitesearch" style="display=none" type="radio"><input id="ss3" value="rubyforge.org" name="sitesearch" style="display=none" type="radio"></span><input value="pub-2578934938711895" name="client" type="hidden"><input value="1" name="forid" type="hidden"><input value="ISO-8859-1" name="ie" type="hidden"><input value="ISO-8859-1" name="oe" type="hidden"><input value="active" name="safe" type="hidden"><input value="0000" name="flav" type="hidden"><input value="XEZZoGuMPMQqvUG_" name="sig" type="hidden"><input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;LH:50;LW:78;L:http://ai4r.rubyforge.org/images/ai4r-logo.png;S:http://ai4r.rubyforge.org/;FORID:1" name="cof" type="hidden"><input value="en" name="hl" type="hidden">
48
+ </form>
49
+ </div>
50
+ </div>
51
+ <!--+
52
+ |end search
53
+ +-->
54
+ <!--+
55
+ |start Tabs
56
+ +-->
57
+ <ul id="tabs">
58
+ <li class="current">
59
+ <a class="selected" href="index.html">Home</a>
60
+ </li>
61
+ </ul>
62
+ <!--+
63
+ |end Tabs
64
+ +-->
65
+ </div>
66
+ </div>
67
+ <div id="main">
68
+ <div id="publishedStrip">
69
+ <!--+
70
+ |start Subtabs
71
+ +-->
72
+ <div id="level2tabs"></div>
73
+ <!--+
74
+ |end Endtabs
75
+ +-->
76
+ <script type="text/javascript"><!--
77
+ document.write("Last Published: " + document.lastModified);
78
+ // --></script>
79
+ </div>
80
+ <!--+
81
+ |breadtrail
82
+ +-->
83
+ <div class="breadtrail">
84
+
85
+ &nbsp;
86
+ </div>
87
+ <!--+
88
+ |start Menu, mainarea
89
+ +-->
90
+ <!--+
91
+ |start Menu
92
+ +-->
93
+ <div id="menu">
94
+ <div onclick="SwitchMenu('menu_1.1', 'skin/')" id="menu_1.1Title" class="menutitle">Home</div>
95
+ <div id="menu_1.1" class="menuitemgroup">
96
+ <div class="menuitem">
97
+ <a href="index.html" title="ai4r - Artificial Intelligence for Ruby">Index</a>
98
+ </div>
99
+ <div onclick="SwitchMenu('menu_1.1.2', 'skin/')" id="menu_1.1.2Title" class="menutitle">Practical Examples</div>
100
+ <div id="menu_1.1.2" class="menuitemgroup">
101
+ <div class="menuitem">
102
+ <a href="geneticAlgorithms.html" title="Genetic Algorithms in ruby">Genetic Algorithms</a>
103
+ </div>
104
+ <div class="menuitem">
105
+ <a href="machineLearning.html" title="ID3 Decision Trees in ruby">Machine Learning</a>
106
+ </div>
107
+ <div class="menuitem">
108
+ <a href="neuralNetworks.html" title="Backpropagation Neural Network in ruby">Neural Networks</a>
109
+ </div>
110
+ </div>
111
+ <div class="menuitem">
112
+ <a href="downloads.html" title="ai4r - Download Files">Downloads</a>
113
+ </div>
114
+ <div class="menuitem">
115
+ <a href="http://forum.jadeferret.com/viewforum.php?f=3" title="Ai4r Forum">Forum</a>
116
+ </div>
117
+ <div class="menuitem">
118
+ <a href="http://ai4r.rubyforge.org/rdoc/index.html" title="Ai4 RDoc docs">API doc (Rdoc)</a>
119
+ </div>
120
+ <div class="menuitem">
121
+ <a href="svn.html" title="ai4r Subversion repository">Source Code repository</a>
122
+ </div>
123
+ <div class="menuitem">
124
+ <a href="wholesite.pdf">ai4r project PDF</a>
125
+ </div>
126
+ </div>
127
+ <div id="credit">
128
+ <script type="text/javascript">
129
+ google_ad_client = "pub-2578934938711895";
130
+ google_ad_slot = "6111091580";
131
+ google_ad_width = 125;
132
+ google_ad_height = 125;
133
+ </script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
134
+ <hr>
135
+ </div>
136
+ <div id="roundbottom">
137
+ <img style="display: none" class="corner" height="15" width="15" alt="" src="skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
138
+ <!--+
139
+ |alternative credits
140
+ +-->
141
+ <div id="credit2"></div>
142
+ </div>
143
+ <!--+
144
+ |end Menu
145
+ +-->
146
+ <!--+
147
+ |start content
148
+ +-->
149
+ <div id="content">
150
+ <div title="Portable Document Format" class="pdflink">
151
+ <a class="dida" href="linkmap.pdf"><img alt="PDF -icon" src="skin/images/pdfdoc.gif" class="skin"><br>
152
+ PDF</a>
153
+ </div>
154
+ <h1>Site Linkmap Table of Contents</h1>
155
+ <p>
156
+ This is a map of the complete site and its structure.
157
+ </p>
158
+ <ul>
159
+ <li>
160
+ <a>ai4r</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>site</em>
161
+ </li>
162
+ <ul>
163
+
164
+ <ul>
165
+ <li>
166
+ <a>Home</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>about</em>
167
+ </li>
168
+ <ul>
169
+
170
+ <ul>
171
+ <li>
172
+ <a href="index.html">Index</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>index</em>&nbsp;: ai4r - Artificial Intelligence for Ruby</li>
173
+ </ul>
174
+
175
+ <ul>
176
+ <li>
177
+ <a>Practical Examples</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>practicalExamples</em>
178
+ </li>
179
+ <ul>
180
+
181
+ <ul>
182
+ <li>
183
+ <a href="geneticAlgorithms.html">Genetic Algorithms</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>geneticAlgorithms</em>&nbsp;: Genetic Algorithms in ruby</li>
184
+ </ul>
185
+
186
+ <ul>
187
+ <li>
188
+ <a href="machineLearning.html">Machine Learning</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>machineLearning</em>&nbsp;: ID3 Decision Trees in ruby</li>
189
+ </ul>
190
+
191
+ <ul>
192
+ <li>
193
+ <a href="neuralNetworks.html">Neural Networks</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>neuralNetworks</em>&nbsp;: Backpropagation Neural Network in ruby</li>
194
+ </ul>
195
+
196
+ </ul>
197
+ </ul>
198
+
199
+ <ul>
200
+ <li>
201
+ <a href="downloads.html">Downloads</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>download</em>&nbsp;: ai4r - Download Files</li>
202
+ </ul>
203
+
204
+ <ul>
205
+ <li>
206
+ <a class="external" href="http://forum.jadeferret.com/viewforum.php?f=3">Forum</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>forum</em>&nbsp;: Ai4r Forum</li>
207
+ </ul>
208
+
209
+ <ul>
210
+ <li>
211
+ <a href="http://ai4r.rubyforge.org/rdoc/index.html">API doc (Rdoc)</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>rdoc</em>&nbsp;: Ai4 RDoc docs</li>
212
+ </ul>
213
+
214
+ <ul>
215
+ <li>
216
+ <a href="svn.html">Source Code repository</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>svn</em>&nbsp;: ai4r Subversion repository</li>
217
+ </ul>
218
+
219
+ <ul>
220
+ <li>
221
+ <a href="wholesite.pdf">ai4r project PDF</a>&nbsp;&nbsp;___________________&nbsp;&nbsp;<em>ai4r_site_pdf</em>
222
+ </li>
223
+ </ul>
224
+
225
+ </ul>
226
+ </ul>
227
+
228
+
229
+ </ul>
230
+ </ul>
231
+ </div>
232
+ <!--+
233
+ |end content
234
+ +-->
235
+ <div class="clearboth">&nbsp;</div>
236
+ </div>
237
+ <div id="footer">
238
+ <!--+
239
+ |start bottomstrip
240
+ +-->
241
+ <div class="lastmodified">
242
+ <script type="text/javascript"><!--
243
+ document.write("Last Published: " + document.lastModified);
244
+ // --></script>
245
+ </div>
246
+ <div class="copyright">
247
+ Copyright &copy;
248
+ 2007-2009 <a href="http://www.jadeferret.com/">Sergio Fierens, Jade Ferret</a>
249
+ </div>
250
+ <div class="host">
251
+ <a href="http://rubyforge.org/projects/ai4r/"><img class="logoImage" alt="" src="images/rubyforge.png"></a>
252
+ </div>
253
+ <!--+
254
+ |end bottomstrip
255
+ +-->
256
+ </div>
257
+ <script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script><script type="text/javascript">
258
+ var pageTracker = _gat._getTracker("UA-3234625-1");
259
+ pageTracker._initData();
260
+ pageTracker._trackPageview();
261
+ </script>
262
+ </body>
263
+ </html>
@@ -0,0 +1,94 @@
1
+ %PDF-1.3
2
+ %����
3
+ 4 0 obj
4
+ << /Type /Info
5
+ /Producer (FOP 0.20.5) >>
6
+ endobj
7
+ 5 0 obj
8
+ << /Length 1145 /Filter [ /ASCII85Decode /FlateDecode ]
9
+ >>
10
+ stream
11
+ Gat=+fi$QY'Re;/p^q+qX2XYH>9K^N6Q&MeeoVbL<ZDjp8nEe>mjm-a,ag&J9kUE-N:&_#kUuSZD")S+*TXcHR4SZ:r\#,h-Q>;UaFDQnl94#,0(qYF[W[+j9j'p2SI6-bo#]Q*/"YA_7W$B/7BSf:9=;Lr77E-74El69ZWi8[*/Id/"-*M8lN=>ES#odq]--d11OU:Ejc2WB[#j[d>#AiVI(dX9V<sL@\)JU^O=C^>XMd#r[Xu'qma/hA6uE_,\Bba2-\@&FQA,+Lp%HeQbS(VTJ-P`3j3PQ4s1o^"aRsu1?Q5Z/!V1"1*cquJ3+"r'7fJs^Bl?=8jC/glro41><i7AAo`d_Q[tW8+8Ej>c:)IK_aYNs"ld<i]926?#k+PF"ES=XO=Vkg5'GXiXKZ1LUS&cepF-b2td;j0I`K%`"Lp4uKR3UZ3no;9dn,?<3QPW,k@QJNmLcDA9U/SRIMsEt`H]&_pN?/;jAri_"gFkRe1Z&SI9^T(`7LL]ZBi=(2(T^fBHaEFMmm[mE@C$_>pMOP::`sO81`]hE/d0#%Uc]9gPWp23^>BW>/WSV-Wu)>KAaq!?<ijYGlAilY?q&XR0A6"aBS*Bk']n)P(6iS0S`:Knj8_4dq.,.Y$mV4FP&X3cR@s2eAHTkS*qsb,o\-gQeLMH^rNf2;d\s$Q((H(?D&3Xh2[Xs(oPr8tKN&^n`Q@^@n4fFlPp)J?][$u<oG8KTl\$,Ff-9Btg:s,uJL0KFJW]AjSrh*IYflAh/U;I-]\aS_eZ:f?'@0j"@kP4Ur_obt#m4SgH9<p9A@E#0Gt8<gBS8M!]QKsc>.&LI)EpiZMj/!?COYt*mJ2%rO@.[5(`DP3JZrK9O<$D>O-fquj)Lm$Q$t;d$LOs'b-s^0ak&Z*/3u4"^.r\<hRbY\W#;'/L[q9$V#[YG/M`AhdsS`4]MR#Lb9QHg(hapW&*JaD.(!'g#qF]T+.?/Dj'ae4T-U3Md0=n+pJeoK5&Ja0mdSJ;n@/3gBjS@o#i'sOTj&JO7Doef=UoljY3PHp,bOP?DaG._7/OWJEg0';E?ab4TS:#?Rs2]S<M_lak(l96+TMRT9rZ2N=8&"Y6&Y;lg:<2Am=T(GKqOn'@@f!E_(@O6Q;kNDe5]rW"+`m"o)~>
12
+ endstream
13
+ endobj
14
+ 6 0 obj
15
+ << /Type /Page
16
+ /Parent 1 0 R
17
+ /MediaBox [ 0 0 612 792 ]
18
+ /Resources 3 0 R
19
+ /Contents 5 0 R
20
+ >>
21
+ endobj
22
+ 7 0 obj
23
+ << /Type /Font
24
+ /Subtype /Type1
25
+ /Name /F3
26
+ /BaseFont /Helvetica-Bold
27
+ /Encoding /WinAnsiEncoding >>
28
+ endobj
29
+ 8 0 obj
30
+ << /Type /Font
31
+ /Subtype /Type1
32
+ /Name /F5
33
+ /BaseFont /Times-Roman
34
+ /Encoding /WinAnsiEncoding >>
35
+ endobj
36
+ 9 0 obj
37
+ << /Type /Font
38
+ /Subtype /Type1
39
+ /Name /F6
40
+ /BaseFont /Times-Italic
41
+ /Encoding /WinAnsiEncoding >>
42
+ endobj
43
+ 10 0 obj
44
+ << /Type /Font
45
+ /Subtype /Type1
46
+ /Name /F1
47
+ /BaseFont /Helvetica
48
+ /Encoding /WinAnsiEncoding >>
49
+ endobj
50
+ 11 0 obj
51
+ << /Type /Font
52
+ /Subtype /Type1
53
+ /Name /F2
54
+ /BaseFont /Helvetica-Oblique
55
+ /Encoding /WinAnsiEncoding >>
56
+ endobj
57
+ 1 0 obj
58
+ << /Type /Pages
59
+ /Count 1
60
+ /Kids [6 0 R ] >>
61
+ endobj
62
+ 2 0 obj
63
+ << /Type /Catalog
64
+ /Pages 1 0 R
65
+ >>
66
+ endobj
67
+ 3 0 obj
68
+ <<
69
+ /Font << /F3 7 0 R /F5 8 0 R /F1 10 0 R /F6 9 0 R /F2 11 0 R >>
70
+ /ProcSet [ /PDF /ImageC /Text ] >>
71
+ endobj
72
+ xref
73
+ 0 12
74
+ 0000000000 65535 f
75
+ 0000001969 00000 n
76
+ 0000002027 00000 n
77
+ 0000002077 00000 n
78
+ 0000000015 00000 n
79
+ 0000000071 00000 n
80
+ 0000001308 00000 n
81
+ 0000001414 00000 n
82
+ 0000001526 00000 n
83
+ 0000001635 00000 n
84
+ 0000001745 00000 n
85
+ 0000001853 00000 n
86
+ trailer
87
+ <<
88
+ /Size 12
89
+ /Root 2 0 R
90
+ /Info 4 0 R
91
+ >>
92
+ startxref
93
+ 2197
94
+ %%EOF
@@ -0,0 +1,72 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ Licensed to the Apache Software Foundation (ASF) under one or more
4
+ contributor license agreements. See the NOTICE file distributed with
5
+ this work for additional information regarding copyright ownership.
6
+ The ASF licenses this file to You under the Apache License, Version 2.0
7
+ (the "License"); you may not use this file except in compliance with
8
+ the License. You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ -->
18
+ <locationmap xmlns="http://apache.org/forrest/locationmap/1.0">
19
+ <components>
20
+ <matchers default="lm">
21
+ <matcher name="lm" src="org.apache.forrest.locationmap.WildcardLocationMapHintMatcher"/>
22
+ </matchers>
23
+ <!--
24
+ * Can contain any sitemap selector with the following syntax. *
25
+ <selectors default="exists">
26
+ <selector name="exists" logger="sitemap.selector.exists"
27
+ src="org.apache.forrest.sourceexists.SourceExistsSelector" />
28
+ </selectors>
29
+ -->
30
+ </components>
31
+ <!--
32
+ * Can contain a mount statement as a sibling to components and locator *
33
+ <mount src="somelocation.xml"/>
34
+ -->
35
+ <locator>
36
+ <!--
37
+ * Can contain a mount within a selector where a selector is valid.
38
+ <select>
39
+ <mount src="somelocation.xml"/>
40
+ </select>
41
+ -->
42
+ <match pattern="project.rewrite.**">
43
+ <location src="http://cocoon.apache.org/{1}.html"/>
44
+ </match>
45
+ <match pattern="project.remote.**.xml">
46
+ <location src="http://svn.apache.org/repos/asf/forrest/trunk/main/fresh-site/src/documentation/content/xdocs/{1}.xml"/>
47
+ </match>
48
+ <!--
49
+ * Can use a selector inside a match. *
50
+ <match pattern="somepattern/**">
51
+ <select>
52
+ <location src="first-location-attempted"/>
53
+ <location src="second-location-attempted"/>
54
+ <location src="third-location-attepted"/>
55
+ </select>
56
+ </match>
57
+ -->
58
+ <!--
59
+ To locate all your source documents in a slide repository you can do:
60
+
61
+ <match pattern="tabs.xml">
62
+ <location src="http://127.0.0.1:8080/slide/files/tabs.xml"/>
63
+ </match>
64
+ <match pattern="site.xml">
65
+ <location src="http://127.0.0.1:8080/slide/files/site.xml"/>
66
+ </match>
67
+ <match pattern="**.xml">
68
+ <location src="http://127.0.0.1:8080/slide/files/{1}.xml"/>
69
+ </match>
70
+ -->
71
+ </locator>
72
+ </locationmap>
@@ -0,0 +1,339 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2
+ <html>
3
+ <head>
4
+ <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
5
+ <meta content="Apache Forrest" name="Generator">
6
+ <meta name="Forrest-version" content="0.8">
7
+ <meta name="Forrest-skin-name" content="pelt">
8
+ <title>Machine Learning with ID3 Decision Trees in Ruby</title>
9
+ <link type="text/css" href="skin/basic.css" rel="stylesheet">
10
+ <link media="screen" type="text/css" href="skin/screen.css" rel="stylesheet">
11
+ <link media="print" type="text/css" href="skin/print.css" rel="stylesheet">
12
+ <link type="text/css" href="skin/profile.css" rel="stylesheet">
13
+ <script src="skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="skin/fontsize.js" language="javascript" type="text/javascript"></script>
14
+ <link rel="shortcut icon" href="">
15
+ </head>
16
+ <body onload="init()">
17
+ <script type="text/javascript">ndeSetTextSize();</script>
18
+ <div id="top">
19
+ <!--+
20
+ |header
21
+ +-->
22
+ <div class="header">
23
+ <!--+
24
+ |start group logo
25
+ +-->
26
+ <div class="grouplogo">
27
+ <a href="http://www.jadeferret.com"><img class="logoImage" alt="Jade Ferret" src="images/jadeferret.png" title="Jade Ferret"></a>
28
+ </div>
29
+ <!--+
30
+ |end group logo
31
+ +-->
32
+ <!--+
33
+ |start Project Logo
34
+ +-->
35
+ <div class="projectlogo">
36
+ <a href="http://ai4r.rubyforge.org/"><img class="logoImage" alt="ai4r" src="images/ai4r-logo.png" title="AI4R - Artificial Intelligence for Ruby"></a>
37
+ </div>
38
+ <!--+
39
+ |end Project Logo
40
+ +-->
41
+ <!--+
42
+ |start Search
43
+ +-->
44
+ <div class="searchbox">
45
+ <div class="roundtopsmall">
46
+ <form target="_top" action="http://www.google.com/custom" method="get">
47
+ <input value="ai4r.rubyforge.org;raa.ruby-lang.org;rubyforge.org" name="domains" type="hidden"><label style="display: none" for="sbi">Enter your search terms</label><input id="sbi" value="" maxlength="255" size="31" name="q" type="text"><label style="display: none" for="sbb">Submit search form</label><input id="sbb" value="Search" name="sa" type="submit"><span style="display:none"><input id="ss0" value="" name="sitesearch" style="display=none" type="radio"><input id="ss1" checked value="ai4r.rubyforge.org" name="sitesearch" style="display=none" type="radio"><input id="ss2" value="raa.ruby-lang.org" name="sitesearch" style="display=none" type="radio"><input id="ss3" value="rubyforge.org" name="sitesearch" style="display=none" type="radio"></span><input value="pub-2578934938711895" name="client" type="hidden"><input value="1" name="forid" type="hidden"><input value="ISO-8859-1" name="ie" type="hidden"><input value="ISO-8859-1" name="oe" type="hidden"><input value="active" name="safe" type="hidden"><input value="0000" name="flav" type="hidden"><input value="XEZZoGuMPMQqvUG_" name="sig" type="hidden"><input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;LH:50;LW:78;L:http://ai4r.rubyforge.org/images/ai4r-logo.png;S:http://ai4r.rubyforge.org/;FORID:1" name="cof" type="hidden"><input value="en" name="hl" type="hidden">
48
+ </form>
49
+ </div>
50
+ </div>
51
+ <!--+
52
+ |end search
53
+ +-->
54
+ <!--+
55
+ |start Tabs
56
+ +-->
57
+ <ul id="tabs">
58
+ <li class="current">
59
+ <a class="selected" href="index.html">Home</a>
60
+ </li>
61
+ </ul>
62
+ <!--+
63
+ |end Tabs
64
+ +-->
65
+ </div>
66
+ </div>
67
+ <div id="main">
68
+ <div id="publishedStrip">
69
+ <!--+
70
+ |start Subtabs
71
+ +-->
72
+ <div id="level2tabs"></div>
73
+ <!--+
74
+ |end Endtabs
75
+ +-->
76
+ <script type="text/javascript"><!--
77
+ document.write("Last Published: " + document.lastModified);
78
+ // --></script>
79
+ </div>
80
+ <!--+
81
+ |breadtrail
82
+ +-->
83
+ <div class="breadtrail">
84
+
85
+ &nbsp;
86
+ </div>
87
+ <!--+
88
+ |start Menu, mainarea
89
+ +-->
90
+ <!--+
91
+ |start Menu
92
+ +-->
93
+ <div id="menu">
94
+ <div onclick="SwitchMenu('menu_selected_1.1', 'skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Home</div>
95
+ <div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
96
+ <div class="menuitem">
97
+ <a href="index.html" title="ai4r - Artificial Intelligence for Ruby">Index</a>
98
+ </div>
99
+ <div onclick="SwitchMenu('menu_selected_1.1.2', 'skin/')" id="menu_selected_1.1.2Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Practical Examples</div>
100
+ <div id="menu_selected_1.1.2" class="selectedmenuitemgroup" style="display: block;">
101
+ <div class="menuitem">
102
+ <a href="geneticAlgorithms.html" title="Genetic Algorithms in ruby">Genetic Algorithms</a>
103
+ </div>
104
+ <div class="menupage">
105
+ <div class="menupagetitle">Machine Learning</div>
106
+ </div>
107
+ <div class="menuitem">
108
+ <a href="neuralNetworks.html" title="Backpropagation Neural Network in ruby">Neural Networks</a>
109
+ </div>
110
+ </div>
111
+ <div class="menuitem">
112
+ <a href="downloads.html" title="ai4r - Download Files">Downloads</a>
113
+ </div>
114
+ <div class="menuitem">
115
+ <a href="http://forum.jadeferret.com/viewforum.php?f=3" title="Ai4r Forum">Forum</a>
116
+ </div>
117
+ <div class="menuitem">
118
+ <a href="http://ai4r.rubyforge.org/rdoc/index.html" title="Ai4 RDoc docs">API doc (Rdoc)</a>
119
+ </div>
120
+ <div class="menuitem">
121
+ <a href="svn.html" title="ai4r Subversion repository">Source Code repository</a>
122
+ </div>
123
+ <div class="menuitem">
124
+ <a href="wholesite.pdf">ai4r project PDF</a>
125
+ </div>
126
+ </div>
127
+ <div id="credit">
128
+ <script type="text/javascript">
129
+ google_ad_client = "pub-2578934938711895";
130
+ google_ad_slot = "6111091580";
131
+ google_ad_width = 125;
132
+ google_ad_height = 125;
133
+ </script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
134
+ <hr>
135
+ </div>
136
+ <div id="roundbottom">
137
+ <img style="display: none" class="corner" height="15" width="15" alt="" src="skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
138
+ <!--+
139
+ |alternative credits
140
+ +-->
141
+ <div id="credit2"></div>
142
+ </div>
143
+ <!--+
144
+ |end Menu
145
+ +-->
146
+ <!--+
147
+ |start content
148
+ +-->
149
+ <div id="content">
150
+ <div title="Portable Document Format" class="pdflink">
151
+ <a class="dida" href="machineLearning.pdf"><img alt="PDF -icon" src="skin/images/pdfdoc.gif" class="skin"><br>
152
+ PDF</a>
153
+ </div>
154
+ <h1>Machine Learning with ID3 Decision Trees in Ruby</h1>
155
+ <div id="minitoc-area">
156
+ <ul class="minitoc">
157
+ <li>
158
+ <a href="#mach-intro">Introduction to ID3 algorithm</a>
159
+ </li>
160
+ <li>
161
+ <a href="#mach-HowTo">Marketing target strategy example using ID3 Decision Trees in Ruby</a>
162
+ </li>
163
+ <li>
164
+ <a href="#mach-dataload">Better data loading</a>
165
+ </li>
166
+ <li>
167
+ <a href="#mach-eval">A good tip for data evaluation</a>
168
+ </li>
169
+ <li>
170
+ <a href="#mach-more">More about ID3 and decision trees</a>
171
+ </li>
172
+ </ul>
173
+ </div>
174
+
175
+ <a name="N1000C"></a><a name="mach-intro"></a>
176
+ <h2 class="boxed">Introduction to ID3 algorithm</h2>
177
+ <div class="section">
178
+ <p>
179
+ AI4R implements the ID3 algorithm (Quinlan) as one of its automatic classifiers.
180
+ Given a set of preclassified examples, it builds a top-down
181
+ induction of decision tree, biased by the information gain and
182
+ entropy measure.
183
+ </p>
184
+ <p>
185
+ The good thing about this automatic learning method is that humans learns as well.
186
+ Unlike other AI techniques like neural networks, classifiers can
187
+ generate ruby code with if / else sentences. You
188
+ can use this to evaluate parameters on realtime, copy paste them in a
189
+ code, or just read them to learn about your problem domain.
190
+ </p>
191
+ </div>
192
+
193
+
194
+ <a name="N10019"></a><a name="mach-HowTo"></a>
195
+ <h2 class="boxed">Marketing target strategy example using ID3 Decision Trees in Ruby</h2>
196
+ <div class="section">
197
+ <p>Let's suppose that you are writting an application that must identify people as relevant marketing targets or not.
198
+ The only information that you have is a collection of examples, provided by a marketing survey:</p>
199
+ <pre class="code">
200
+
201
+ DATA_LABELS = [ 'city', 'age_range', 'gender', 'marketing_target' ]
202
+
203
+ DATA_SET = [
204
+ ['New York', '&lt;30', 'M', 'Y'],
205
+ ['Chicago', '&lt;30', 'M', 'Y'],
206
+ ['Chicago', '&lt;30', 'F', 'Y'],
207
+ ['New York', '&lt;30', 'M', 'Y'],
208
+ ['New York', '&lt;30', 'M', 'Y'],
209
+ ['Chicago', '[30-50)', 'M', 'Y'],
210
+ ['New York', '[30-50)', 'F', 'N'],
211
+ ['Chicago', '[30-50)', 'F', 'Y'],
212
+ ['New York', '[30-50)', 'F', 'N'],
213
+ ['Chicago', '[50-80]', 'M', 'N'],
214
+ ['New York', '[50-80]', 'F', 'N'],
215
+ ['New York', '[50-80]', 'M', 'N'],
216
+ ['Chicago', '[50-80]', 'M', 'N'],
217
+ ['New York', '[50-80]', 'F', 'N'],
218
+ ['Chicago', '&gt;80', 'F', 'Y']
219
+ ]
220
+
221
+ </pre>
222
+ <p>You can create an ID3 Decision tree to do the dirty job for you:</p>
223
+ <pre class="code">
224
+
225
+ id3 = ID3.new(DATA_SET, DATA_LABELS)
226
+
227
+ </pre>
228
+ <p>The Decision tree will automatically create the "rules" to parse new data,
229
+ and identify new posible marketing targets:</p>
230
+ <pre class="code">
231
+
232
+ id3.to_s
233
+ # =&gt; if age_range=='&lt;30' then marketing_target='Y'
234
+ elsif age_range=='[30-50)' and city=='Chicago' then marketing_target='Y'
235
+ elsif age_range=='[30-50)' and city=='New York' then marketing_target='N'
236
+ elsif age_range=='[50-80]' then marketing_target='N'
237
+ elsif age_range=='&gt;80' then marketing_target='Y'
238
+ else raise 'There was not enough information during training to do a proper induction for this data element' end
239
+
240
+ id3.eval(['New York', '&lt;30', 'M'])
241
+ # =&gt; 'Y'
242
+
243
+ </pre>
244
+ </div>
245
+
246
+
247
+ <a name="N10035"></a><a name="mach-dataload"></a>
248
+ <h2 class="boxed">Better data loading</h2>
249
+ <div class="section">
250
+ <p>
251
+ In real life you will use many more data training examples,
252
+ with more attributes.
253
+ Consider moving your data to an external CSV (comma separate values) file.
254
+ </p>
255
+ <pre class="code">
256
+
257
+ data_set = []
258
+ CSV::Reader.parse(File.open("#{File.dirname(__FILE__)}/data_set.csv", 'r')) do |row|
259
+ data_set &lt;&lt; row
260
+ end
261
+ data_labels = data_set.shift
262
+
263
+ id3 = ID3.new(data_set, data_labels)
264
+ </pre>
265
+ </div>
266
+
267
+
268
+ <a name="N10043"></a><a name="mach-eval"></a>
269
+ <h2 class="boxed">A good tip for data evaluation</h2>
270
+ <div class="section">
271
+ <p>
272
+ The ID3 class provides a method to evaluate new data.
273
+ </p>
274
+ <pre class="code">
275
+
276
+ id3.eval(['New York', '&lt;30', 'M'])
277
+ # =&gt; 'Y'
278
+ </pre>
279
+ <p>
280
+ But instead of going through the tree every time, you can take advantage of the fact that the method "to_s" generates proper ruby code!
281
+ </p>
282
+ <pre class="code">
283
+
284
+ id3 = ID3.new(DATA_SET, DATA_LABELS)
285
+ age_range = '&lt;30'
286
+ city = 'New York'
287
+ gender = 'M'
288
+ marketing_target = nil
289
+ eval id3.to_s
290
+ puts marketing_target
291
+ # =&gt; 'Y'
292
+ </pre>
293
+ </div>
294
+
295
+
296
+ <a name="N10058"></a><a name="mach-more"></a>
297
+ <h2 class="boxed">More about ID3 and decision trees</h2>
298
+ <div class="section">
299
+ <p>
300
+
301
+ <a class="external" href="http://en.wikipedia.org/wiki/Decision_tree">Wikipedia article on Decision trees</a>
302
+ <a class="external" href="http://en.wikipedia.org/wiki/ID3_algorithm">Wikipedia article on ID3 Algorithm</a>
303
+
304
+ </p>
305
+ </div>
306
+
307
+ </div>
308
+ <!--+
309
+ |end content
310
+ +-->
311
+ <div class="clearboth">&nbsp;</div>
312
+ </div>
313
+ <div id="footer">
314
+ <!--+
315
+ |start bottomstrip
316
+ +-->
317
+ <div class="lastmodified">
318
+ <script type="text/javascript"><!--
319
+ document.write("Last Published: " + document.lastModified);
320
+ // --></script>
321
+ </div>
322
+ <div class="copyright">
323
+ Copyright &copy;
324
+ 2007-2009 <a href="http://www.jadeferret.com/">Sergio Fierens, Jade Ferret</a>
325
+ </div>
326
+ <div class="host">
327
+ <a href="http://rubyforge.org/projects/ai4r/"><img class="logoImage" alt="" src="images/rubyforge.png"></a>
328
+ </div>
329
+ <!--+
330
+ |end bottomstrip
331
+ +-->
332
+ </div>
333
+ <script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script><script type="text/javascript">
334
+ var pageTracker = _gat._getTracker("UA-3234625-1");
335
+ pageTracker._initData();
336
+ pageTracker._trackPageview();
337
+ </script>
338
+ </body>
339
+ </html>