Skip to content

Commit df70194

Browse files
committed
initial commit for packaging
1 parent 7a729d3 commit df70194

32 files changed

+2873
-2011
lines changed

ch01_Introduction.ipynb

-354
This file was deleted.

ch02_Probability_Distributions.ipynb

-349
This file was deleted.

ch03_Linear_Models_for_Regression.ipynb

-609
This file was deleted.

ch04_Linear_Models_for_Classfication.ipynb

-416
This file was deleted.

distributions.py

-232
This file was deleted.

features.py

-51
This file was deleted.

notebooks/ch01_Introduction.ipynb

+356
Large diffs are not rendered by default.

notebooks/ch02_Probability_Distributions.ipynb

+345
Large diffs are not rendered by default.

notebooks/ch03_Linear_Models_for_Regression.ipynb

+580
Large diffs are not rendered by default.

notebooks/ch04_Linear_Models_for_Classfication.ipynb

+421
Large diffs are not rendered by default.
File renamed without changes.
File renamed without changes.

prml/__init__.py

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from . import distributions
2+
from . import features
3+
from . import linear_models
4+
5+
6+
__all__ = [
7+
"distributions",
8+
"features",
9+
"linear_models"
10+
]

prml/distributions/__init__.py

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from .beta import BetaDistribution
2+
from .gaussian import GaussianDistribution
3+
from .gaussian_mixture import GaussianMixtureDistribution
4+
from .students_t import StudentsTDistribution
5+
6+
7+
__all__ = [
8+
"BetaDistribution",
9+
"GaussianDistribution",
10+
"GaussianMixtureDistribution",
11+
"StudentsTDistribution"
12+
]

prml/distributions/beta.py

+89
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
import numpy as np
2+
from scipy.special import gamma
3+
4+
5+
np.seterr(all="ignore")
6+
7+
8+
class BetaDistribution(object):
9+
10+
def __init__(self, pseudo_ones=1, pseudo_zeros=1):
11+
"""
12+
construct beta distribution
13+
14+
Parameters
15+
----------
16+
pseudo_ones : float
17+
pseudo count of one
18+
pseudo_zeros : float
19+
pseudo count of zero
20+
"""
21+
self.pseudo_ones = pseudo_ones
22+
self.pseudo_zeros = pseudo_zeros
23+
self.n_ones = pseudo_ones
24+
self.n_zeros = pseudo_zeros
25+
26+
def fit(self, n_ones=None, n_zeros=None):
27+
"""
28+
estimating parameter of posterior distribution of Beta(mu|a,b)
29+
30+
Parameters
31+
----------
32+
n_ones : float
33+
number of observed one
34+
n_zeros : float
35+
number of observed zero
36+
"""
37+
self.n_ones = 0 if n_ones is None else n_ones
38+
self.n_zeros = 0 if n_zeros is None else n_zeros
39+
self.n_ones += self.pseudo_ones
40+
self.n_zeros += self.pseudo_zeros
41+
42+
def fit_online(self, n_ones=None, n_zeros=None):
43+
"""
44+
online estimation of posterior distribution Beta(mu|a,b)
45+
46+
Parameters
47+
----------
48+
n_ones : float
49+
number of observed one
50+
n_zeros : float
51+
number of observed zero
52+
"""
53+
self.n_ones += 0 if n_ones is None else n_ones
54+
self.n_zeros += 0 if n_zeros is None else n_zeros
55+
56+
def predict(self):
57+
"""
58+
returns one or zero according to the posterior distribution
59+
60+
Returns
61+
-------
62+
output : int
63+
prediction
64+
"""
65+
return int(
66+
self.n_ones / (self.n_ones + self.n_zeros)
67+
> np.random.uniform())
68+
69+
def probability(self, x):
70+
"""
71+
probability denstiy function
72+
calculate posterior distribution beta(x|D)
73+
74+
Parameters
75+
----------
76+
x : ndarray
77+
input
78+
79+
Returns
80+
-------
81+
output : float
82+
value of posterior distribution
83+
"""
84+
return (
85+
gamma(self.n_ones + self.n_zeros)
86+
* np.power(x, self.n_ones - 1)
87+
* np.power(1 - x, self.n_zeros - 1)
88+
/ gamma(self.n_ones)
89+
/ gamma(self.n_zeros))

0 commit comments

Comments
 (0)