This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
cs401r_w2016:lab3 [2015/12/23 21:05] admin |
cs401r_w2016:lab3 [2021/06/30 23:42] (current) |
||
---|---|---|---|
Line 6: | Line 6: | ||
a small library of random variable types. | a small library of random variable types. | ||
+ | ---- | ||
====Deliverable:==== | ====Deliverable:==== | ||
Line 22: | Line 23: | ||
{{:cs401r_w2016:lab3_2d.png?nolink|}} | {{:cs401r_w2016:lab3_2d.png?nolink|}} | ||
+ | ---- | ||
====Description:==== | ====Description:==== | ||
- | You must implement seven random variable objects. These should all inherit from a base random variable object that supports the following methods: | + | You must implement seven random variable objects. For each type, you should be able to sample from that distribution, and compute the log-likelihood of a particular value. All of your classes should inherit from a base random variable object that supports the following methods: |
<code python> | <code python> | ||
Line 47: | Line 49: | ||
</code> | </code> | ||
- | For example, your univariate Gaussian class might look like this: | + | You don't need to implement the ''get'' or ''propose'' methods yet. For example, your univariate Gaussian class might look like this: |
<code python> | <code python> | ||
Line 67: | Line 69: | ||
**Given that framework, you should implement:** | **Given that framework, you should implement:** | ||
- | * The following one dimensional, continuous valued distributions. For | + | * The following one dimensional, continuous valued distributions. To visualize |
- | these, you should also plot the PDF of the random variable on the | + | these, you should plot a histogram of sampled values, and also plot the PDF of the random variable on the |
- | same plot; the curves should match. //Note: it is **not** sufficient to let seaborn estimate the PDF using its built-in KDE estimator; you need to plot the true PDF. In other words, you can't just use seaborn.kdeplot!// | + | same axis; they should (roughly) match. //Note: it is **not** sufficient to let seaborn estimate the PDF using its built-in KDE estimator; you need to plot the true PDF. In other words, you can't just use seaborn.kdeplot!// |
- | * ''Beta (alpha=1, beta=3)'' | + | * ''Beta (a=1, b=3)'' |
* ''Poisson (lambda=7)'' | * ''Poisson (lambda=7)'' | ||
* ''Univariate Gaussian (mean=2, variance=3)'' | * ''Univariate Gaussian (mean=2, variance=3)'' | ||
Line 77: | Line 79: | ||
* The following discrete distributions. For these, plot predicted and | * The following discrete distributions. For these, plot predicted and | ||
empirical histograms side-by-side: | empirical histograms side-by-side: | ||
- | * ''Bernoulli (p=0.7)'' | + | * ''Bernoulli (p=0.7)'' (hint: you may need a uniform random number) |
- | * ''Multinomial (theta=[0.1, 0.2, 0.7])'' | + | * ''Multinomial (pvals=[0.1, 0.2, 0.7])'' |
- | * The following multidimensional distributions. For these, | + | * The following multidimensional distributions. For these, use a contour or surface plot to visualize the empirical distribution of samples vs. the PDF: |
- | * Two-dimensional Gaussian | + | * ''Multivariate Gaussian ( mean=[2.0,3.0], cov=[[1.0,0.9],[0.9,1.0]] )'' |
- | * 3-dimensional Dirichlet | + | * ''Dirichlet ( alpha=[ 0.1, 0.2, 0.7 ] )'' |
**Important notes:** | **Important notes:** | ||
Line 88: | Line 90: | ||
**You //may// use [[http://docs.scipy.org/doc/numpy-1.10.0/reference/routines.random.html|numpy.random]] to sample from the appropriate distributions.** | **You //may// use [[http://docs.scipy.org/doc/numpy-1.10.0/reference/routines.random.html|numpy.random]] to sample from the appropriate distributions.** | ||
- | **You may //not// use any existing code to calculate the log-likelihoods.** | + | **You may //not// use any existing code to calculate the log-likelihoods.** But you can, of course, use any online resources or the book to find the appropriate definition of each PDF. |
+ | ---- | ||
====Hints:==== | ====Hints:==== | ||