t_lib 0.1.0 → 0.1.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.
- checksums.yaml +4 -4
- data/lib/t_lib/math.rb +119 -0
- data/lib/t_lib/version.rb +1 -1
- data/lib/t_lib.rb +2 -2
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9821928a9b695eb9a02d9508c512dc82baa21119
|
|
4
|
+
data.tar.gz: 815e887eeba7749e2a80aafb3944bb20898e8d4b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7a26f0ffcc3d7da5b84934772261a1919332dd6cbd56673b1693dfdb24317f4a015b6246eb96dfd0406c3350905d57ac9daf9936d2da71de6c289f0a876fa437
|
|
7
|
+
data.tar.gz: e28be8515a0263556be90f0c719e90d07c9d928619f60c2bcad2e7022f56b086ea73360500c8d3c183d7a81373f8afd21486eb2c7ba924b1d00eb5da98c82e9d
|
data/lib/t_lib/math.rb
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
# -*- encoding: utf-8 -*-
|
|
3
|
+
|
|
4
|
+
module TLib
|
|
5
|
+
module Math
|
|
6
|
+
|
|
7
|
+
#
|
|
8
|
+
# === gauusian distribution
|
|
9
|
+
# @todo
|
|
10
|
+
#
|
|
11
|
+
def gauusian(x, mu, sigma)
|
|
12
|
+
f1 = 1.0/(Math.sqrt(2.0*Math::PI)*Math.sqrt(sigma))
|
|
13
|
+
f2 = Math.exp(-(((x-mu)**2)/((2.0*sigma))))
|
|
14
|
+
return f1 * f2
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
#
|
|
18
|
+
# === gauusian distribution
|
|
19
|
+
# @todo
|
|
20
|
+
#
|
|
21
|
+
def gauusian_array(x, mu, sigma)
|
|
22
|
+
if x[0].size <= 1
|
|
23
|
+
x = x[0]
|
|
24
|
+
mu = mu[0]
|
|
25
|
+
sigma = sigma[0][0]
|
|
26
|
+
return gauusian(x, mu, sigma)
|
|
27
|
+
else
|
|
28
|
+
return gauusian_over_2dim(x, mu, sigma)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
#
|
|
34
|
+
# === gauusian distribution over 2 dim version
|
|
35
|
+
#
|
|
36
|
+
def gauusian_over_2dim(x, mu, conv)
|
|
37
|
+
x = Matrix[x]
|
|
38
|
+
mu = Matrix[mu]
|
|
39
|
+
conv = Matrix[*conv]
|
|
40
|
+
f1 = 1.0/(((2.0 * Math::PI)**(@dim/2.0)) * ( conv.det**(0.5) ))
|
|
41
|
+
f2 = Math.exp((-1.0/2.0)*((x-mu) * conv.inverse * (x-mu).transpose)[0, 0])
|
|
42
|
+
|
|
43
|
+
return (f1 * f2)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
#
|
|
47
|
+
# ===ボックス―ミューラー法をよる正規分布乱数発生
|
|
48
|
+
# @param mu flout 平均
|
|
49
|
+
# @param sigma flout 標準偏差
|
|
50
|
+
# @return ボックスミューラー法に従う正規分布に従う乱数を生成
|
|
51
|
+
#
|
|
52
|
+
def normal_rand(mu = 0,sigma = 1.0)
|
|
53
|
+
a, b = rand(), rand() ;
|
|
54
|
+
return (Math.sqrt(-2*Math.log(rand()))*Math.sin(2*Math::PI*rand()) * sigma) + mu
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
#
|
|
58
|
+
# === 指数分布に従った乱数を返す
|
|
59
|
+
#
|
|
60
|
+
def exp(ave=0.5)
|
|
61
|
+
x = rand() ;
|
|
62
|
+
y = rand() ;
|
|
63
|
+
while ((1.0/ave)*Math.exp(-(x/ave)) < y )
|
|
64
|
+
x = rand() ;
|
|
65
|
+
y = rand() ;
|
|
66
|
+
end
|
|
67
|
+
return x ;
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
#
|
|
73
|
+
# ===ポアソン分布に従う乱数を発生する
|
|
74
|
+
#
|
|
75
|
+
def poisson_rand(mu=0.0)
|
|
76
|
+
lambda = Math.exp(-mu)
|
|
77
|
+
k = 0
|
|
78
|
+
p = 1.0
|
|
79
|
+
while p >= lambda
|
|
80
|
+
p *= rand()
|
|
81
|
+
k += 1
|
|
82
|
+
end
|
|
83
|
+
return k - 1
|
|
84
|
+
end
|
|
85
|
+
def scale(x)
|
|
86
|
+
sum_each_vec = []
|
|
87
|
+
ave_list = []
|
|
88
|
+
std_list = []
|
|
89
|
+
x.each{|vec|
|
|
90
|
+
vec.each_with_index{|data, i|
|
|
91
|
+
sum_each_vec[i] = (sum_each_vec[i] == nil) ? data : sum_each_vec[i]+data
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
x[0].size.times{|i|
|
|
95
|
+
ave_list.push(sum_each_vec[i]/x.size)
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
sum_each_vec = []
|
|
99
|
+
x.each{|vec|
|
|
100
|
+
vec.each_with_index{|data, i|
|
|
101
|
+
sum_each_vec[i] = (sum_each_vec[i] == nil) ? (ave_list[i]-data)**2 : (sum_each_vec[i]+(ave_list[i]-data)**2)
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
x[0].size.times{|i|
|
|
105
|
+
std_list.push(Math.sqrt(sum_each_vec[i]/x.size))
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
scaled_x = []
|
|
109
|
+
x.each_with_index{|vec, i|
|
|
110
|
+
scaled_x[i] ||= []
|
|
111
|
+
vec.each_with_index{|data, j|
|
|
112
|
+
scaled_x[i][j] ||= (data-ave_list[j])/std_list[j]
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return scaled_x
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
end
|
|
119
|
+
end
|
data/lib/t_lib/version.rb
CHANGED
data/lib/t_lib.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: t_lib
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.0
|
|
4
|
+
version: 0.1.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- tcom
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-06-
|
|
11
|
+
date: 2017-06-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -70,6 +70,7 @@ files:
|
|
|
70
70
|
- bin/console
|
|
71
71
|
- bin/setup
|
|
72
72
|
- lib/t_lib.rb
|
|
73
|
+
- lib/t_lib/math.rb
|
|
73
74
|
- lib/t_lib/version.rb
|
|
74
75
|
- t_lib.gemspec
|
|
75
76
|
homepage: https://github.com/Tcom242242/t_lib
|