pca 0.2.0 → 0.3.0
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/pca.rb +19 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b99f1b6d4bf1ccc3afe06b8c9ba4d4e2ec9f2fc1
|
4
|
+
data.tar.gz: 05e82f5c93569697933ea9ed13f801bae97b5bca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0ea21685a8c8376ff1ef31bed9d2d7fb1cc9b8d7cf42b8963746e728566a2fe30e8c1a1915e23720d64e2a6e6b296048d91c25223f72454c150a97817a43ee3a
|
7
|
+
data.tar.gz: 1a05a814d570eddeac92990dfae8efb4392a3cf54ce858d305733f594829e51118e530b10da43b745de7e336675556efaec377e6258db1a9cd5225b57077c93b
|
data/lib/pca.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'gsl'
|
2
2
|
|
3
3
|
class PCA
|
4
|
-
attr_reader :components, :singular_values, :
|
4
|
+
attr_reader :components, :singular_values, :explained_variance, :explained_variance_ratio
|
5
|
+
attr_accessor :mean, :std
|
5
6
|
|
6
7
|
def initialize opts = {}
|
7
8
|
@n_components = opts[:components]
|
@@ -27,10 +28,15 @@ class PCA
|
|
27
28
|
|
28
29
|
def inverse_transform x
|
29
30
|
x = ensure_matrix x
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
xit = x * @components
|
32
|
+
undo_scale(xit) if @scale_data
|
33
|
+
undo_mean_normalize xit
|
34
|
+
xit
|
35
|
+
end
|
36
|
+
|
37
|
+
def components= c
|
38
|
+
c = ensure_matrix(c)
|
39
|
+
@components = slice_n(c.transpose).transpose
|
34
40
|
end
|
35
41
|
|
36
42
|
private
|
@@ -77,6 +83,10 @@ class PCA
|
|
77
83
|
x.size2.times {|col| x.col(col).sub! @mean[col] }
|
78
84
|
end
|
79
85
|
|
86
|
+
def undo_mean_normalize x
|
87
|
+
x.size2.times {|col| x.col(col).add! @mean[col] }
|
88
|
+
end
|
89
|
+
|
80
90
|
def calculate_std x
|
81
91
|
x.size2.times.map {|col| x.col(col).sd }
|
82
92
|
end
|
@@ -85,6 +95,10 @@ class PCA
|
|
85
95
|
x.size2.times {|col| x.col(col).div! @std[col] }
|
86
96
|
end
|
87
97
|
|
98
|
+
def undo_scale x
|
99
|
+
x.size2.times {|col| x.col(col).mul! @std[col] }
|
100
|
+
end
|
101
|
+
|
88
102
|
def slice_n x
|
89
103
|
return x unless @n_components
|
90
104
|
case x
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pca
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Geoff Buesing
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rb-gsl
|