diff --git a/ssmit285.ipynb b/ssmit285.ipynb new file mode 100644 index 0000000..6bfaf19 --- /dev/null +++ b/ssmit285.ipynb @@ -0,0 +1,288 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "IPython version: %6.6s 6.1.0\n" + ] + } + ], + "source": [ + "import IPython\n", + "import json\n", + "# Numpy is a library for working with Arrays\n", + "import numpy as np\n", + "# SciPy implements many different numerical algorithms\n", + "import scipy as sp\n", + "# Pandas is good with data tables\n", + "import pandas as pd\n", + "# Module for plotting\n", + "import matplotlib\n", + "#BeautifulSoup parses HTML documents (once you get them via requests)\n", + "import bs4\n", + "# Nltk helps with some natural language tasks, like stemming\n", + "import nltk\n", + "# Bson is a binary format of json to be stored in databases\n", + "import bson\n", + "# Mongo is one of common nosql databases \n", + "# it stores/searches json documents natively\n", + "import pymongo\n", + "print (\"IPython version: %6.6s\", IPython.__version__)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Make a 2 row x 3 column array of random numbers\n", + "[[ 0.20354485 0.87353642 0.79226415]\n", + " [ 0.26457656 0.23486214 0.8240387 ]]\n", + "Add 5 to every element\n", + "[[ 5.20354485 5.87353642 5.79226415]\n", + " [ 5.26457656 5.23486214 5.8240387 ]]\n", + "Get the first row\n", + "[ 5.20354485 5.87353642 5.79226415]\n" + ] + } + ], + "source": [ + "#Here is what numpy can do\\n\",\n", + "print (\"Make a 2 row x 3 column array of random numbers\")\n", + "x = np.random.random((2, 3))\n", + "print (x)\n", + "\n", + "#array operation (as in R)\n", + "print (\"Add 5 to every element\")\n", + "x = x + 5\n", + "print (x)\n", + "\n", + "# get a slice (first row) (as in R)\n", + "print (\"Get the first row\")\n", + "print (x[0, :])" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# IPython is quite modern: just press at the end of the unfinished statement to see the documentation\n", + "# on possible completions.\n", + "# In the code cell below, type x., to find built-in operations for x\n", + "x.any" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline \n", + "import matplotlib.pyplot as plt\n", + "heads = np.random.binomial(500, .5, size=500)\n", + "histogram = plt.hist(heads, bins=10)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "# Task 1\n", + "## write a program to produce Fibonacci numbers up to 1000000" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "1\n", + "1\n", + "2\n", + "3\n", + "5\n", + "8\n", + "13\n", + "21\n", + "34\n", + "55\n", + "89\n", + "144\n", + "233\n", + "377\n", + "610\n", + "987\n", + "1597\n", + "2584\n", + "4181\n", + "6765\n", + "10946\n", + "17711\n", + "28657\n", + "46368\n", + "75025\n", + "121393\n", + "196418\n", + "317811\n", + "514229\n", + "832040\n", + "1346269\n" + ] + } + ], + "source": [ + "i = 1; # Current\n", + "j = 0; # Previous\n", + "c = 0; # Cache\n", + "\n", + "print(j);\n", + "print(i);\n", + "\n", + "while (i < 1000000):\n", + " c = i;\n", + " i += j;\n", + " j = c;\n", + " print(i);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Task 2\n", + "## write a program to simulate 1000 tosses of a fair coin (use np.random.binomial)\n", + "## Calculate the mean and standard deviation of that sample" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean: 0.504\n", + "std : 0.4999839997439918\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "\n", + "heads = np.random.binomial(1, 0.5, 1000);\n", + "\n", + "print(\"mean: \" + str(np.mean(np.array(heads))));\n", + "print(\"std : \" + str(np.std (np.array(heads))));" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Task 3\n", + "## Produce a scatterplot of y = 0.5*x+e where x has gaussian (0, 5) and e has gaussian (0, 1) distributions \n", + "### use numpy.random.normal to generate gaussian distribution" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "cases = 500;\n", + "\n", + "x = np.random.normal(0.0, 5.0, cases);\n", + "e = np.random.normal(0.0, 1.0, cases);\n", + "\n", + "y = [];\n", + "\n", + "for i in range(0, cases):\n", + " y.append((0.5 * x[i]) + e[i])\n", + "\n", + "scatterplot = plt.scatter(x, y)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.2" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +}