diff --git a/rholmber.ipynb b/rholmber.ipynb new file mode 100644 index 0000000..49f1569 --- /dev/null +++ b/rholmber.ipynb @@ -0,0 +1,271 @@ +{ + "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": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 " + ] + } + ], + "source": [ + "def fibonacci():\n", + " n1, n2 = 0, 1\n", + " nth = n1 + n2\n", + " \n", + " while nth <= 1000000:\n", + " print(n1, end= \" \")\n", + " nth = n1 + n2\n", + " n1 = n2\n", + " n2 = nth\n", + "fibonacci()" + ] + }, + { + "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": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean is: 0.491\n", + "Standard Deviation is: 0.4999189934379369\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "def coinFlip(p): \n", + " result = np.random.binomial(1,p) \n", + " return result\n", + "\n", + "probability = .5\n", + "n = 1000\n", + "#initiate array\n", + "fullResults = np.arange(n)\n", + "\n", + "#perform desired numbered of flips at required probability set above\n", + "for i in range(0, n): \n", + " fullResults[i] = coinFlip(probability) \n", + " i+=1\n", + "\n", + "print(\"Mean is: \", (np.mean(fullResults)))\n", + "print(\"Standard Deviation is: \", (np.std(fullResults)))" + ] + }, + { + "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": 5, + "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", + "def scattered():\n", + " x = np.random.normal(0, 5, 100)\n", + " e = np.random.normal(0, 1, 100)\n", + " y = 0.5 * x + e\n", + " \n", + " plt.plot(x, y, 'o', color = 'black')\n", + " plt.show()\n", + " \n", + "scattered()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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 +}