entropy 0.0.2
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.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +674 -0
- data/README.txt +48 -0
- data/Rakefile +22 -0
- data/doc/rdocs/Entropy.html +234 -0
- data/doc/rdocs/Entropy/Dict.html +311 -0
- data/doc/rdocs/Entropy/ProbabilityMetricSpace.html +544 -0
- data/doc/rdocs/Entropy/ProbabilitySpace.html +473 -0
- data/doc/rdocs/Entropy/Stream.html +281 -0
- data/doc/rdocs/LICENSE_txt.html +834 -0
- data/doc/rdocs/README_txt.html +138 -0
- data/doc/rdocs/created.rid +9 -0
- data/doc/rdocs/images/brick.png +0 -0
- data/doc/rdocs/images/brick_link.png +0 -0
- data/doc/rdocs/images/bug.png +0 -0
- data/doc/rdocs/images/bullet_black.png +0 -0
- data/doc/rdocs/images/bullet_toggle_minus.png +0 -0
- data/doc/rdocs/images/bullet_toggle_plus.png +0 -0
- data/doc/rdocs/images/date.png +0 -0
- data/doc/rdocs/images/find.png +0 -0
- data/doc/rdocs/images/loadingAnimation.gif +0 -0
- data/doc/rdocs/images/macFFBgHack.png +0 -0
- data/doc/rdocs/images/package.png +0 -0
- data/doc/rdocs/images/page_green.png +0 -0
- data/doc/rdocs/images/page_white_text.png +0 -0
- data/doc/rdocs/images/page_white_width.png +0 -0
- data/doc/rdocs/images/plugin.png +0 -0
- data/doc/rdocs/images/ruby.png +0 -0
- data/doc/rdocs/images/tag_green.png +0 -0
- data/doc/rdocs/images/wrench.png +0 -0
- data/doc/rdocs/images/wrench_orange.png +0 -0
- data/doc/rdocs/images/zoom.png +0 -0
- data/doc/rdocs/index.html +155 -0
- data/doc/rdocs/js/darkfish.js +116 -0
- data/doc/rdocs/js/jquery.js +32 -0
- data/doc/rdocs/js/quicksearch.js +114 -0
- data/doc/rdocs/js/thickbox-compressed.js +10 -0
- data/doc/rdocs/lib/entropy/dict_rb.html +56 -0
- data/doc/rdocs/lib/entropy/metric_space_rb.html +54 -0
- data/doc/rdocs/lib/entropy/probability_space_rb.html +52 -0
- data/doc/rdocs/lib/entropy/stream_rb.html +52 -0
- data/doc/rdocs/lib/entropy/version_rb.html +52 -0
- data/doc/rdocs/lib/entropy_rb.html +62 -0
- data/doc/rdocs/rdoc.css +763 -0
- data/entropy.gemspec +24 -0
- data/example/metric_prob_space.rb +42 -0
- data/example/prob_space.rb +31 -0
- data/lib/entropy.rb +13 -0
- data/lib/entropy/dict.rb +30 -0
- data/lib/entropy/metric_space.rb +116 -0
- data/lib/entropy/probability_space.rb +91 -0
- data/lib/entropy/stream.rb +37 -0
- data/lib/entropy/version.rb +3 -0
- data/test/stream0.txt +1 -0
- data/test/stream1.txt +1 -0
- data/test/stream2.txt +1 -0
- data/test/stream_random.bin +2 -0
- data/test/test_entropy_def.rb +10 -0
- data/test/test_entropy_metr.rb +36 -0
- data/test/test_entropy_prob.rb +64 -0
- data/test/test_entropy_stream.rb +29 -0
- metadata +127 -0
@@ -0,0 +1,544 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
3
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
<head>
|
6
|
+
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
7
|
+
|
8
|
+
<title>Class: Entropy::ProbabilityMetricSpace</title>
|
9
|
+
|
10
|
+
<link rel="stylesheet" href="../rdoc.css" type="text/css" media="screen" />
|
11
|
+
|
12
|
+
<script src="../js/jquery.js" type="text/javascript" charset="utf-8"></script>
|
13
|
+
<script src="../js/thickbox-compressed.js" type="text/javascript" charset="utf-8"></script>
|
14
|
+
<script src="../js/quicksearch.js" type="text/javascript" charset="utf-8"></script>
|
15
|
+
<script src="../js/darkfish.js" type="text/javascript" charset="utf-8"></script>
|
16
|
+
|
17
|
+
</head>
|
18
|
+
<body id="top" class="class">
|
19
|
+
|
20
|
+
<div id="metadata">
|
21
|
+
<div id="home-metadata">
|
22
|
+
<div id="home-section" class="section">
|
23
|
+
<h3 class="section-header">
|
24
|
+
<a href="../index.html">Home</a>
|
25
|
+
<a href="../index.html#classes">Classes</a>
|
26
|
+
<a href="../index.html#methods">Methods</a>
|
27
|
+
</h3>
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
|
31
|
+
<div id="file-metadata">
|
32
|
+
<div id="file-list-section" class="section">
|
33
|
+
<h3 class="section-header">In Files</h3>
|
34
|
+
<div class="section-body">
|
35
|
+
<ul>
|
36
|
+
|
37
|
+
<li><a href="../lib/entropy/metric_space_rb.html?TB_iframe=true&height=550&width=785"
|
38
|
+
class="thickbox" title="lib/entropy/metric_space.rb">lib/entropy/metric_space.rb</a></li>
|
39
|
+
|
40
|
+
</ul>
|
41
|
+
</div>
|
42
|
+
</div>
|
43
|
+
|
44
|
+
|
45
|
+
</div>
|
46
|
+
|
47
|
+
<div id="class-metadata">
|
48
|
+
|
49
|
+
<!-- Parent Class -->
|
50
|
+
<div id="parent-class-section" class="section">
|
51
|
+
<h3 class="section-header">Parent</h3>
|
52
|
+
|
53
|
+
<p class="link"><a href="ProbabilitySpace.html">Entropy::ProbabilitySpace</a></p>
|
54
|
+
|
55
|
+
</div>
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
<!-- Method Quickref -->
|
64
|
+
<div id="method-list-section" class="section">
|
65
|
+
<h3 class="section-header">Methods</h3>
|
66
|
+
<ul class="link-list">
|
67
|
+
|
68
|
+
<li><a href="#method-c-new">::new</a></li>
|
69
|
+
|
70
|
+
<li><a href="#method-i-add_stream">#add_stream</a></li>
|
71
|
+
|
72
|
+
<li><a href="#method-i-cardinality">#cardinality</a></li>
|
73
|
+
|
74
|
+
<li><a href="#method-i-define_distance">#define_distance</a></li>
|
75
|
+
|
76
|
+
<li><a href="#method-i-diversity">#diversity</a></li>
|
77
|
+
|
78
|
+
<li><a href="#method-i-rao_entropy">#rao_entropy</a></li>
|
79
|
+
|
80
|
+
<li><a href="#method-i-renyi_entropy">#renyi_entropy</a></li>
|
81
|
+
|
82
|
+
<li><a href="#method-i-shannon_entropy">#shannon_entropy</a></li>
|
83
|
+
|
84
|
+
</ul>
|
85
|
+
</div>
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
</div>
|
90
|
+
|
91
|
+
<div id="project-metadata">
|
92
|
+
|
93
|
+
|
94
|
+
<div id="fileindex-section" class="section project-section">
|
95
|
+
<h3 class="section-header">Files</h3>
|
96
|
+
<ul>
|
97
|
+
|
98
|
+
<li class="file"><a href="../LICENSE_txt.html">LICENSE.txt</a></li>
|
99
|
+
|
100
|
+
<li class="file"><a href="../README_txt.html">README.txt</a></li>
|
101
|
+
|
102
|
+
</ul>
|
103
|
+
</div>
|
104
|
+
|
105
|
+
|
106
|
+
<div id="classindex-section" class="section project-section">
|
107
|
+
<h3 class="section-header">Class/Module Index
|
108
|
+
<span class="search-toggle"><img src="../images/find.png"
|
109
|
+
height="16" width="16" alt="[+]"
|
110
|
+
title="show/hide quicksearch" /></span></h3>
|
111
|
+
<form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
|
112
|
+
<fieldset>
|
113
|
+
<legend>Quicksearch</legend>
|
114
|
+
<input type="text" name="quicksearch" value=""
|
115
|
+
class="quicksearch-field" />
|
116
|
+
</fieldset>
|
117
|
+
</form>
|
118
|
+
|
119
|
+
<ul class="link-list">
|
120
|
+
|
121
|
+
<li><a href="../Entropy.html">Entropy</a></li>
|
122
|
+
|
123
|
+
<li><a href="../Entropy/Dict.html">Entropy::Dict</a></li>
|
124
|
+
|
125
|
+
<li><a href="../Entropy/ProbabilityMetricSpace.html">Entropy::ProbabilityMetricSpace</a></li>
|
126
|
+
|
127
|
+
<li><a href="../Entropy/ProbabilitySpace.html">Entropy::ProbabilitySpace</a></li>
|
128
|
+
|
129
|
+
<li><a href="../Entropy/Stream.html">Entropy::Stream</a></li>
|
130
|
+
|
131
|
+
</ul>
|
132
|
+
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
133
|
+
</div>
|
134
|
+
|
135
|
+
|
136
|
+
</div>
|
137
|
+
</div>
|
138
|
+
|
139
|
+
<div id="documentation">
|
140
|
+
<h1 class="class">Entropy::ProbabilityMetricSpace</h1>
|
141
|
+
|
142
|
+
<div id="description" class="description">
|
143
|
+
|
144
|
+
<p><a href="ProbabilityMetricSpace.html">Entropy::ProbabilityMetricSpace</a>
|
145
|
+
defines a finite probability metric space</p>
|
146
|
+
|
147
|
+
</div><!-- description -->
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
|
152
|
+
<div id="5Buntitled-5D" class="documentation-section">
|
153
|
+
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
|
160
|
+
<!-- Attributes -->
|
161
|
+
<div id="attribute-method-details" class="method-section section">
|
162
|
+
<h3 class="section-header">Attributes</h3>
|
163
|
+
|
164
|
+
|
165
|
+
<div id="distance_function-attribute-method" class="method-detail">
|
166
|
+
<a name="distance_function"></a>
|
167
|
+
|
168
|
+
<div class="method-heading attribute-method-heading">
|
169
|
+
<span class="method-name">distance_function</span><span
|
170
|
+
class="attribute-access-type">[R]</span>
|
171
|
+
</div>
|
172
|
+
|
173
|
+
<div class="method-description">
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
</div>
|
178
|
+
</div>
|
179
|
+
|
180
|
+
<div id="distance_matrix-attribute-method" class="method-detail">
|
181
|
+
<a name="distance_matrix"></a>
|
182
|
+
|
183
|
+
<div class="method-heading attribute-method-heading">
|
184
|
+
<span class="method-name">distance_matrix</span><span
|
185
|
+
class="attribute-access-type">[R]</span>
|
186
|
+
</div>
|
187
|
+
|
188
|
+
<div class="method-description">
|
189
|
+
|
190
|
+
|
191
|
+
|
192
|
+
</div>
|
193
|
+
</div>
|
194
|
+
|
195
|
+
</div><!-- attribute-method-details -->
|
196
|
+
|
197
|
+
|
198
|
+
<!-- Methods -->
|
199
|
+
|
200
|
+
<div id="public-class-method-details" class="method-section section">
|
201
|
+
<h3 class="section-header">Public Class Methods</h3>
|
202
|
+
|
203
|
+
|
204
|
+
<div id="new-method" class="method-detail ">
|
205
|
+
<a name="method-c-new"></a>
|
206
|
+
|
207
|
+
|
208
|
+
<div class="method-heading">
|
209
|
+
<span class="method-name">new</span><span
|
210
|
+
class="method-args">()</span>
|
211
|
+
<span class="method-click-advice">click to toggle source</span>
|
212
|
+
</div>
|
213
|
+
|
214
|
+
|
215
|
+
<div class="method-description">
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
|
220
|
+
|
221
|
+
<div class="method-source-code" id="new-source">
|
222
|
+
<pre>
|
223
|
+
<span class="ruby-comment"># File lib/entropy/metric_space.rb, line 10</span>
|
224
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>
|
225
|
+
<span class="ruby-ivar">@distance_matrix</span> = <span class="ruby-keyword">nil</span>
|
226
|
+
<span class="ruby-ivar">@density</span> = <span class="ruby-keyword">nil</span>
|
227
|
+
<span class="ruby-keyword">super</span>
|
228
|
+
<span class="ruby-keyword">end</span></pre>
|
229
|
+
</div><!-- new-source -->
|
230
|
+
|
231
|
+
</div>
|
232
|
+
|
233
|
+
|
234
|
+
|
235
|
+
|
236
|
+
</div><!-- new-method -->
|
237
|
+
|
238
|
+
|
239
|
+
</div><!-- public-class-method-details -->
|
240
|
+
|
241
|
+
<div id="public-instance-method-details" class="method-section section">
|
242
|
+
<h3 class="section-header">Public Instance Methods</h3>
|
243
|
+
|
244
|
+
|
245
|
+
<div id="add_stream-method" class="method-detail ">
|
246
|
+
<a name="method-i-add_stream"></a>
|
247
|
+
|
248
|
+
|
249
|
+
<div class="method-heading">
|
250
|
+
<span class="method-name">add_stream</span><span
|
251
|
+
class="method-args">(stream)</span>
|
252
|
+
<span class="method-click-advice">click to toggle source</span>
|
253
|
+
</div>
|
254
|
+
|
255
|
+
|
256
|
+
<div class="method-description">
|
257
|
+
|
258
|
+
<p>Adds a set of elements (char, bit) to the space</p>
|
259
|
+
|
260
|
+
|
261
|
+
|
262
|
+
<div class="method-source-code" id="add_stream-source">
|
263
|
+
<pre>
|
264
|
+
<span class="ruby-comment"># File lib/entropy/metric_space.rb, line 17</span>
|
265
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">add_stream</span>(<span class="ruby-identifier">stream</span>)
|
266
|
+
<span class="ruby-keyword">super</span>(<span class="ruby-identifier">stream</span>)
|
267
|
+
<span class="ruby-keyword">end</span></pre>
|
268
|
+
</div><!-- add_stream-source -->
|
269
|
+
|
270
|
+
</div>
|
271
|
+
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
</div><!-- add_stream-method -->
|
276
|
+
|
277
|
+
|
278
|
+
<div id="cardinality-method" class="method-detail ">
|
279
|
+
<a name="method-i-cardinality"></a>
|
280
|
+
|
281
|
+
|
282
|
+
<div class="method-heading">
|
283
|
+
<span class="method-name">cardinality</span><span
|
284
|
+
class="method-args">(alpha)</span>
|
285
|
+
<span class="method-click-advice">click to toggle source</span>
|
286
|
+
</div>
|
287
|
+
|
288
|
+
|
289
|
+
<div class="method-description">
|
290
|
+
|
291
|
+
<p>Computes the α-Cardinality of the space</p>
|
292
|
+
|
293
|
+
|
294
|
+
|
295
|
+
<div class="method-source-code" id="cardinality-source">
|
296
|
+
<pre>
|
297
|
+
<span class="ruby-comment"># File lib/entropy/metric_space.rb, line 87</span>
|
298
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">cardinality</span>(<span class="ruby-identifier">alpha</span>)
|
299
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-string">"Warning: distance metric not defined..."</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@distance_matrix</span>.<span class="ruby-identifier">nil?</span>
|
300
|
+
<span class="ruby-identifier">card</span> = <span class="ruby-value">0</span>
|
301
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">alpha</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
|
302
|
+
<span class="ruby-identifier">card</span> = <span class="ruby-value">1</span>
|
303
|
+
<span class="ruby-ivar">@prob_space</span>.<span class="ruby-identifier">each_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
|
304
|
+
<span class="ruby-identifier">card</span> = <span class="ruby-identifier">card</span> * (<span class="ruby-ivar">@density</span>[<span class="ruby-identifier">i</span>] <span class="ruby-operator">**</span> (<span class="ruby-operator">-</span><span class="ruby-ivar">@prob_space</span>[<span class="ruby-identifier">i</span>]))
|
305
|
+
<span class="ruby-keyword">end</span>
|
306
|
+
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">alpha</span> <span class="ruby-operator">==</span> <span class="ruby-value">:infinite</span>
|
307
|
+
<span class="ruby-identifier">card</span> = <span class="ruby-value">1.0</span><span class="ruby-operator">/</span><span class="ruby-ivar">@density</span>.<span class="ruby-identifier">max</span>
|
308
|
+
<span class="ruby-keyword">else</span>
|
309
|
+
<span class="ruby-ivar">@prob_space</span>.<span class="ruby-identifier">each_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
|
310
|
+
<span class="ruby-identifier">card</span> <span class="ruby-operator">+=</span> <span class="ruby-ivar">@prob_space</span>[<span class="ruby-identifier">i</span>] * (<span class="ruby-ivar">@density</span>[<span class="ruby-identifier">i</span>]<span class="ruby-operator">**</span>(<span class="ruby-identifier">alpha</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>))
|
311
|
+
<span class="ruby-keyword">end</span>
|
312
|
+
<span class="ruby-identifier">card</span> = <span class="ruby-identifier">card</span> <span class="ruby-operator">**</span> (<span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> (<span class="ruby-value">1</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">alpha</span>))
|
313
|
+
<span class="ruby-keyword">end</span>
|
314
|
+
<span class="ruby-identifier">card</span>
|
315
|
+
<span class="ruby-keyword">end</span></pre>
|
316
|
+
</div><!-- cardinality-source -->
|
317
|
+
|
318
|
+
</div>
|
319
|
+
|
320
|
+
|
321
|
+
|
322
|
+
|
323
|
+
</div><!-- cardinality-method -->
|
324
|
+
|
325
|
+
|
326
|
+
<div id="define_distance-method" class="method-detail ">
|
327
|
+
<a name="method-i-define_distance"></a>
|
328
|
+
|
329
|
+
|
330
|
+
<div class="method-heading">
|
331
|
+
<span class="method-name">define_distance</span><span
|
332
|
+
class="method-args">(*args, &blk)</span>
|
333
|
+
<span class="method-click-advice">click to toggle source</span>
|
334
|
+
</div>
|
335
|
+
|
336
|
+
|
337
|
+
<div class="method-description">
|
338
|
+
|
339
|
+
<p>Defines the distance among the elements of the set. The method accepts a
|
340
|
+
block, so you can use your function to calculate the distance. The function
|
341
|
+
should accept two parameters, viz. the ordinals i,j of the elements and
|
342
|
+
should return a decimal number, the distance between element i and j. In
|
343
|
+
alternative you could pass a matrix of numbers defining the distances among
|
344
|
+
i’s and j’s.</p>
|
345
|
+
|
346
|
+
|
347
|
+
|
348
|
+
<div class="method-source-code" id="define_distance-source">
|
349
|
+
<pre>
|
350
|
+
<span class="ruby-comment"># File lib/entropy/metric_space.rb, line 29</span>
|
351
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">define_distance</span>(*<span class="ruby-identifier">args</span>, &<span class="ruby-identifier">blk</span>)
|
352
|
+
<span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">blk</span>.<span class="ruby-identifier">nil?</span>
|
353
|
+
<span class="ruby-ivar">@distance_function</span> = <span class="ruby-identifier">blk</span>
|
354
|
+
<span class="ruby-identifier">update_distance_matrix</span>
|
355
|
+
<span class="ruby-keyword">else</span>
|
356
|
+
<span class="ruby-identifier">mat</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
|
357
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-string">"distance matrix is not a matrix object"</span> <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">mat</span>.<span class="ruby-identifier">respond_to</span>(<span class="ruby-string">"square?"</span>)
|
358
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-string">"distance matrix is not square"</span> <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">mat</span>.<span class="ruby-identifier">square?</span>
|
359
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-string">"distance matrix has wrong dimensions"</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">mat</span>.<span class="ruby-identifier">to_a</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">!=</span> <span class="ruby-ivar">@prob_space</span>.<span class="ruby-identifier">size</span>
|
360
|
+
<span class="ruby-ivar">@distance_matrix</span> = <span class="ruby-identifier">mat</span>
|
361
|
+
<span class="ruby-keyword">end</span>
|
362
|
+
<span class="ruby-identifier">z</span> = <span class="ruby-ivar">@distance_matrix</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">d</span><span class="ruby-operator">|</span> <span class="ruby-constant">Math</span>.<span class="ruby-identifier">exp</span>(<span class="ruby-operator">-</span><span class="ruby-identifier">d</span>) }
|
363
|
+
<span class="ruby-ivar">@density</span> = <span class="ruby-identifier">z</span> * <span class="ruby-constant">Matrix</span>.<span class="ruby-identifier">column_vector</span>(<span class="ruby-ivar">@prob_space</span>)
|
364
|
+
<span class="ruby-ivar">@density</span> = <span class="ruby-ivar">@density</span>.<span class="ruby-identifier">column</span>(<span class="ruby-value">0</span>).<span class="ruby-identifier">to_a</span>
|
365
|
+
<span class="ruby-keyword">end</span></pre>
|
366
|
+
</div><!-- define_distance-source -->
|
367
|
+
|
368
|
+
</div>
|
369
|
+
|
370
|
+
|
371
|
+
|
372
|
+
|
373
|
+
</div><!-- define_distance-method -->
|
374
|
+
|
375
|
+
|
376
|
+
<div id="diversity-method" class="method-detail ">
|
377
|
+
<a name="method-i-diversity"></a>
|
378
|
+
|
379
|
+
|
380
|
+
<div class="method-heading">
|
381
|
+
<span class="method-name">diversity</span><span
|
382
|
+
class="method-args">(alpha)</span>
|
383
|
+
<span class="method-click-advice">click to toggle source</span>
|
384
|
+
</div>
|
385
|
+
|
386
|
+
|
387
|
+
<div class="method-description">
|
388
|
+
|
389
|
+
<p>Computes the α-Diversity of the space</p>
|
390
|
+
|
391
|
+
|
392
|
+
|
393
|
+
<div class="method-source-code" id="diversity-source">
|
394
|
+
<pre>
|
395
|
+
<span class="ruby-comment"># File lib/entropy/metric_space.rb, line 76</span>
|
396
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">diversity</span>(<span class="ruby-identifier">alpha</span>)
|
397
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-string">"Warning: distance metric not defined..."</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@distance_matrix</span>.<span class="ruby-identifier">nil?</span>
|
398
|
+
<span class="ruby-identifier">div</span> = []
|
399
|
+
<span class="ruby-ivar">@prob_space</span>.<span class="ruby-identifier">each_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
|
400
|
+
<span class="ruby-identifier">p</span> = <span class="ruby-ivar">@prob_space</span>[<span class="ruby-identifier">i</span>]
|
401
|
+
<span class="ruby-identifier">div</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-identifier">p</span> * <span class="ruby-identifier">surprise</span>(<span class="ruby-identifier">alpha</span>, <span class="ruby-ivar">@density</span>[<span class="ruby-identifier">i</span>])
|
402
|
+
<span class="ruby-keyword">end</span>
|
403
|
+
<span class="ruby-identifier">div</span>.<span class="ruby-identifier">inject</span>(<span class="ruby-value">:+</span>)
|
404
|
+
<span class="ruby-keyword">end</span></pre>
|
405
|
+
</div><!-- diversity-source -->
|
406
|
+
|
407
|
+
</div>
|
408
|
+
|
409
|
+
|
410
|
+
|
411
|
+
|
412
|
+
</div><!-- diversity-method -->
|
413
|
+
|
414
|
+
|
415
|
+
<div id="rao_entropy-method" class="method-detail ">
|
416
|
+
<a name="method-i-rao_entropy"></a>
|
417
|
+
|
418
|
+
|
419
|
+
<div class="method-heading">
|
420
|
+
<span class="method-name">rao_entropy</span><span
|
421
|
+
class="method-args">()</span>
|
422
|
+
<span class="method-click-advice">click to toggle source</span>
|
423
|
+
</div>
|
424
|
+
|
425
|
+
|
426
|
+
<div class="method-description">
|
427
|
+
|
428
|
+
<p>Computes the Rao <a href="../Entropy.html">Entropy</a> of the space</p>
|
429
|
+
|
430
|
+
|
431
|
+
|
432
|
+
<div class="method-source-code" id="rao_entropy-source">
|
433
|
+
<pre>
|
434
|
+
<span class="ruby-comment"># File lib/entropy/metric_space.rb, line 51</span>
|
435
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">rao_entropy</span>
|
436
|
+
<span class="ruby-identifier">diversity</span>(<span class="ruby-value">2</span>)
|
437
|
+
<span class="ruby-keyword">end</span></pre>
|
438
|
+
</div><!-- rao_entropy-source -->
|
439
|
+
|
440
|
+
</div>
|
441
|
+
|
442
|
+
|
443
|
+
|
444
|
+
|
445
|
+
</div><!-- rao_entropy-method -->
|
446
|
+
|
447
|
+
|
448
|
+
<div id="renyi_entropy-method" class="method-detail ">
|
449
|
+
<a name="method-i-renyi_entropy"></a>
|
450
|
+
|
451
|
+
|
452
|
+
<div class="method-heading">
|
453
|
+
<span class="method-name">renyi_entropy</span><span
|
454
|
+
class="method-args">(alpha)</span>
|
455
|
+
<span class="method-click-advice">click to toggle source</span>
|
456
|
+
</div>
|
457
|
+
|
458
|
+
|
459
|
+
<div class="method-description">
|
460
|
+
|
461
|
+
<p>Computes the Renyi <a href="../Entropy.html">Entropy</a> (α-<a
|
462
|
+
href="../Entropy.html">Entropy</a>) of the space</p>
|
463
|
+
|
464
|
+
|
465
|
+
|
466
|
+
<div class="method-source-code" id="renyi_entropy-source">
|
467
|
+
<pre>
|
468
|
+
<span class="ruby-comment"># File lib/entropy/metric_space.rb, line 57</span>
|
469
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">renyi_entropy</span>(<span class="ruby-identifier">alpha</span>)
|
470
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-string">"Warning: distance metric not defined..."</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@distance_matrix</span>.<span class="ruby-identifier">nil?</span>
|
471
|
+
<span class="ruby-identifier">h</span> = <span class="ruby-value">0</span>
|
472
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">alpha</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
|
473
|
+
<span class="ruby-ivar">@prob_space</span>.<span class="ruby-identifier">each_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
|
474
|
+
<span class="ruby-identifier">h</span> <span class="ruby-operator">+=</span> <span class="ruby-operator">-</span><span class="ruby-ivar">@prob_space</span>[<span class="ruby-identifier">i</span>] * <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-ivar">@density</span>[<span class="ruby-identifier">i</span>], <span class="ruby-value">2</span>)
|
475
|
+
<span class="ruby-keyword">end</span>
|
476
|
+
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">alpha</span> <span class="ruby-operator">==</span> <span class="ruby-value">:infinite</span>
|
477
|
+
<span class="ruby-identifier">h</span> = <span class="ruby-operator">-</span><span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-ivar">@density</span>.<span class="ruby-identifier">max</span>, <span class="ruby-value">2</span>)
|
478
|
+
<span class="ruby-keyword">else</span>
|
479
|
+
<span class="ruby-ivar">@prob_space</span>.<span class="ruby-identifier">each_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
|
480
|
+
<span class="ruby-identifier">h</span> <span class="ruby-operator">+=</span> <span class="ruby-ivar">@prob_space</span>[<span class="ruby-identifier">i</span>] * (<span class="ruby-ivar">@density</span>[<span class="ruby-identifier">i</span>]<span class="ruby-operator">**</span>(<span class="ruby-identifier">alpha</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>))
|
481
|
+
<span class="ruby-keyword">end</span>
|
482
|
+
<span class="ruby-identifier">h</span> = <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> (<span class="ruby-value">1</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">alpha</span>) * <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">h</span>, <span class="ruby-value">2</span>)
|
483
|
+
<span class="ruby-keyword">end</span>
|
484
|
+
<span class="ruby-identifier">h</span>
|
485
|
+
<span class="ruby-keyword">end</span></pre>
|
486
|
+
</div><!-- renyi_entropy-source -->
|
487
|
+
|
488
|
+
</div>
|
489
|
+
|
490
|
+
|
491
|
+
|
492
|
+
|
493
|
+
</div><!-- renyi_entropy-method -->
|
494
|
+
|
495
|
+
|
496
|
+
<div id="shannon_entropy-method" class="method-detail ">
|
497
|
+
<a name="method-i-shannon_entropy"></a>
|
498
|
+
|
499
|
+
|
500
|
+
<div class="method-heading">
|
501
|
+
<span class="method-name">shannon_entropy</span><span
|
502
|
+
class="method-args">()</span>
|
503
|
+
<span class="method-click-advice">click to toggle source</span>
|
504
|
+
</div>
|
505
|
+
|
506
|
+
|
507
|
+
<div class="method-description">
|
508
|
+
|
509
|
+
<p>Computes the Shannon <a href="../Entropy.html">Entropy</a> of the space</p>
|
510
|
+
|
511
|
+
|
512
|
+
|
513
|
+
<div class="method-source-code" id="shannon_entropy-source">
|
514
|
+
<pre>
|
515
|
+
<span class="ruby-comment"># File lib/entropy/metric_space.rb, line 46</span>
|
516
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">shannon_entropy</span>
|
517
|
+
<span class="ruby-identifier">diversity</span>(<span class="ruby-value">1</span>)
|
518
|
+
<span class="ruby-keyword">end</span></pre>
|
519
|
+
</div><!-- shannon_entropy-source -->
|
520
|
+
|
521
|
+
</div>
|
522
|
+
|
523
|
+
|
524
|
+
|
525
|
+
|
526
|
+
</div><!-- shannon_entropy-method -->
|
527
|
+
|
528
|
+
|
529
|
+
</div><!-- public-instance-method-details -->
|
530
|
+
|
531
|
+
</div><!-- 5Buntitled-5D -->
|
532
|
+
|
533
|
+
|
534
|
+
</div><!-- documentation -->
|
535
|
+
|
536
|
+
<div id="validator-badges">
|
537
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
538
|
+
<p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
|
539
|
+
Rdoc Generator</a> 2</small>.</p>
|
540
|
+
</div>
|
541
|
+
|
542
|
+
</body>
|
543
|
+
</html>
|
544
|
+
|