This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
cs401r_w2016:lab2 [2016/01/15 17:35] admin |
cs401r_w2016:lab2 [2021/06/30 23:42] (current) |
||
---|---|---|---|
Line 8: | Line 8: | ||
For this lab, you will turn in an ipython notebook that implements the "Bayesian Concept Learning" model from Chapter 3 of MLAPP. | For this lab, you will turn in an ipython notebook that implements the "Bayesian Concept Learning" model from Chapter 3 of MLAPP. | ||
+ | |||
+ | [[http://liftothers.org/courses/stat_ml/mlapp_ch3.pdf|Here is a PDF of the relevant chapter.]] | ||
Your notebook should perform the following functions: | Your notebook should perform the following functions: | ||
Line 18: | Line 20: | ||
When you display your prior, likelihood, and posterior, your figure should look something like the ones in the book; my version is shown here: | When you display your prior, likelihood, and posterior, your figure should look something like the ones in the book; my version is shown here: | ||
- | {{:cs401r_w2016:lab2_bayesian_concepts.png?direct&800|}} | + | {{:cs401r_w2016:lab2_plp.JPG?direct&800|}} |
Similarly, when you display the posterior predictive, your figure should look something like this: | Similarly, when you display the posterior predictive, your figure should look something like this: | ||
- | {{:cs401r_w2016:lab2_pp.png?direct&800|}} | + | {{:cs401r_w2016:lab2_predpost.JPG?direct&800|}} |
---- | ---- | ||
Line 50: | Line 52: | ||
<code python> | <code python> | ||
- | prior = numpy.ones(( len(concepts), 1 )) | + | prior = numpy.ones(len(concepts)) |
prior[0] = 5 | prior[0] = 5 | ||
prior[1] = 5 | prior[1] = 5 | ||
- | prior[2] = 5 | + | prior[30] = .01 |
- | prior[21] = 5 | + | prior[31] = .01 |
prior = prior / numpy.sum(prior) | prior = prior / numpy.sum(prior) | ||
</code> | </code> | ||
Line 66: | Line 68: | ||
$$p(\mathrm{data} | h )$$ | $$p(\mathrm{data} | h )$$ | ||
- | **Important:** you can assume that each number in the data was sampled independently, and that each number was sampled uniformly from the set of all possible numbers //in that concept//. | + | **Important:** you can assume that each number in the data was sampled **independently**, and that each number was sampled **uniformly** from the set of all possible numbers //in that concept//. |
//Hint: what does that imply about the probability of sampling a given number from a concept with lots of possibilities, such as the ''all'' concept, vs. a concept with few possibilities, such as ''multiples of 10''?// | //Hint: what does that imply about the probability of sampling a given number from a concept with lots of possibilities, such as the ''all'' concept, vs. a concept with few possibilities, such as ''multiples of 10''?// | ||
Line 85: | Line 87: | ||
---- | ---- | ||
====Hints:==== | ====Hints:==== | ||
- | |||
- | When using an ipython notebook, it's nice to make your plots show up inline. To do this, add the following lines to the first cell of your notebook: | ||
- | |||
- | <code python> | ||
- | |||
- | # this tells seaborn and matplotlib to generate plots inline in the notebook | ||
- | %matplotlib inline | ||
- | |||
- | # these two lines allow you to control the figure size | ||
- | %pylab inline | ||
- | pylab.rcParams['figure.figsize'] = (16.0, 8.0) | ||
- | |||
- | </code> | ||
- | |||
You may find the following functions useful: | You may find the following functions useful: | ||
Line 124: | Line 112: | ||
plt.title | plt.title | ||
plt.xlabel | plt.xlabel | ||
+ | |||
+ | # changes the xlimits of an axis | ||
+ | plt.xlim | ||
+ | # changes the ylimits of an axis | ||
+ | plt.ylim | ||
</code> | </code> |