Skip to content

Commit adbe4ab

Browse files
author
Pierre Gerard
committed
[fix] densite de proba somme a 1
1 parent 3279acc commit adbe4ab

File tree

2 files changed

+20
-10
lines changed

2 files changed

+20
-10
lines changed

src/densite.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,31 +23,32 @@ def _getOneDimDate(self):
2323

2424

2525
def getOneDimGraph(self):
26-
trainSetPlot, = plt.plot(self.oneDimData,numpy.array([i/500. for i in range(len(self.oneDimData))]), 'bo')
26+
trainSetPlot, = plt.plot(self.oneDimData,numpy.array([i/1000. for i in range(len(self.oneDimData))]), 'bo')
2727

2828
dg = densite_fonction.DensiteGaussienne(1)
2929
dg.train(self.oneDimData)
30+
print(dg.getSigma())
3031
x = numpy.linspace(3,7,1000)
3132
densParamPlot, = plt.plot(x,[dg.p(i) for i in x], 'red', label= "Densite parametrique")
3233

3334

34-
sigma = 0.2
35+
sigma = 0.05
3536
dg = densite_fonction.DensiteParzen(1,sigma)
3637
dg.train(self.oneDimData)
3738
x = numpy.linspace(3,7,1000)
38-
parzenParamPlotGrand, = plt.plot(x,[dg.p(i) for i in x], 'blue', label= "Parzen sigma petit")
39+
parzenParamPlotGrand, = plt.plot(x,[dg.p(i) for i in x], 'yellow', label= "Parzen sigma petit")
3940

4041
sigma = 1
4142
dg = densite_fonction.DensiteParzen(1,sigma)
4243
dg.train(self.oneDimData)
4344
x = numpy.linspace(3,7,1000)
4445
parzenParamPlotPetit, = plt.plot(x,[dg.p(i) for i in x], 'green', label= "Parzen sigma grand")
4546

46-
sigma = 0.45
47+
sigma = 0.349
4748
dg = densite_fonction.DensiteParzen(1,sigma)
4849
dg.train(self.oneDimData)
4950
x = numpy.linspace(3,7,1000)
50-
parzenParamPlotAdequat, = plt.plot(x,[dg.p(i) for i in x], 'yellow', label= "Parzen sigma adequat")
51+
parzenParamPlotAdequat, = plt.plot(x,[dg.p(i) for i in x], 'blue', label= "Parzen sigma adequat")
5152

5253
plt.legend([trainSetPlot, densParamPlot, parzenParamPlotGrand,parzenParamPlotPetit,parzenParamPlotAdequat], ["Ensemble entrainement", "Densite parametrique","Parzen sigma petit","Parzen sigma grand","Parzen sigma adequat"])
5354
plt.axis([3, 7, 0, 1.7])

src/densite_fonction.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,12 @@ def getSigma(self):
2424

2525
def p(self, x):
2626
sigma = numpy.sqrt(self._sigma_sq)
27-
# TODO dimension d
28-
return 1./(numpy.sqrt(2.*numpy.pi)*sigma)* numpy.exp(-numpy.power((x - self._mu)/sigma, 2.)/2)
27+
if self._n_dims == 1:
28+
expo = -(float(x) - self._mu)**2
29+
expo /= 2*(float(sigma)**2)
30+
return 1./(numpy.sqrt(2.*numpy.pi)*sigma)* numpy.exp(expo)
31+
else:
32+
pass # TODO dimension d
2933

3034
def compute_predictions(self, test_data):
3135
"""
@@ -52,10 +56,15 @@ def train(self, train_data):
5256
def p(self, x):
5357
res = 0
5458
for i,xi in enumerate(self._data):
55-
res += 1./((2.*numpy.pi)**(self._n_dims/2.) * (self._sigma**self._n_dims)) \
56-
* numpy.exp(-numpy.power(self._distanceFunction(x, xi)/self._sigma**2, 2.)/2)
59+
expo = -1/2. * self._distanceFunction(x, xi)**2
60+
expo /= (self._sigma**2)
61+
res += 1./(((2.*numpy.pi)**(self._n_dims/2.)) * (self._sigma**self._n_dims)) \
62+
* numpy.exp(expo)
5763
res /= float(len(self._data))
5864
return res
5965

6066
def compute_predictions(self, test_data):
61-
pass
67+
log_prob = []
68+
for i in test_data:
69+
log_prob.append(numpy.log(i))
70+
return res

0 commit comments

Comments
 (0)