diff --git a/Manual-Neural-Network.ipynb b/Manual-Neural-Network.ipynb
new file mode 100644
index 0000000..dac1056
--- /dev/null
+++ b/Manual-Neural-Network.ipynb
@@ -0,0 +1,158 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "class SimpleClass():\n",
+ " \n",
+ " def __init__(self,name):\n",
+ " print(\"Hello\"+ ' ' +name)\n",
+ " \n",
+ " def yell(self):\n",
+ " print(\"YELLING!!!\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "s = \"world\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "str"
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "type(s)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Hello Ed\n"
+ ]
+ }
+ ],
+ "source": [
+ "x = SimpleClass('Ed')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "YELLING!!!\n"
+ ]
+ }
+ ],
+ "source": [
+ "x.yell()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "class ExtendedClass(SimpleClass):\n",
+ " \n",
+ " def __init__(self):\n",
+ " super().__init__('Eddie')\n",
+ " print(\"EXTEND\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Hello Eddie\n",
+ "EXTEND\n"
+ ]
+ }
+ ],
+ "source": [
+ "y = ExtendedClass()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "YELLING!!!\n"
+ ]
+ }
+ ],
+ "source": [
+ "y.yell()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "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.7.6"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/Numpy.ipynb b/Numpy.ipynb
new file mode 100644
index 0000000..28119fb
--- /dev/null
+++ b/Numpy.ipynb
@@ -0,0 +1,528 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "my_list = [1,2,3]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "numpy.ndarray"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "type(np.array(my_list))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "arr = np.array(my_list)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([1, 2, 3])"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "arr"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.arange(0,10)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([ 0, 2, 4, 6, 8, 10])"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.arange(0,11,2)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([0., 0., 0., 0., 0.])"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.zeros(5)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[0., 0., 0., 0., 0.],\n",
+ " [0., 0., 0., 0., 0.],\n",
+ " [0., 0., 0., 0., 0.]])"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.zeros((3,5))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([ 0. , 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 11. ])"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.linspace(0,11,11)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[7, 3, 7],\n",
+ " [8, 3, 2],\n",
+ " [1, 9, 0]])"
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.random.randint(0,10,(3,3))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([95, 11, 81, 70, 63, 87, 75, 9, 77, 40])"
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.random.seed(101)\n",
+ "\n",
+ "np.random.randint(0,100,10)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([ 4, 63, 40, 60, 92, 64, 5, 12, 93, 40])"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.random.randint(0,100,10)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "np.random.seed(101)\n",
+ "\n",
+ "arr = np.random.randint(0,100,10)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([95, 11, 81, 70, 63, 87, 75, 9, 77, 40])"
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "arr"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "95"
+ ]
+ },
+ "execution_count": 28,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "arr.max()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "9"
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "arr.min()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0"
+ ]
+ },
+ "execution_count": 30,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "arr.argmax()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[95, 11, 81, 70, 63],\n",
+ " [87, 75, 9, 77, 40]])"
+ ]
+ },
+ "execution_count": 31,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "arr.reshape(2,5)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "mat = np.arange(0,100).reshape(10,10)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],\n",
+ " [10, 11, 12, 13, 14, 15, 16, 17, 18, 19],\n",
+ " [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],\n",
+ " [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],\n",
+ " [40, 41, 42, 43, 44, 45, 46, 47, 48, 49],\n",
+ " [50, 51, 52, 53, 54, 55, 56, 57, 58, 59],\n",
+ " [60, 61, 62, 63, 64, 65, 66, 67, 68, 69],\n",
+ " [70, 71, 72, 73, 74, 75, 76, 77, 78, 79],\n",
+ " [80, 81, 82, 83, 84, 85, 86, 87, 88, 89],\n",
+ " [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]])"
+ ]
+ },
+ "execution_count": 33,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "mat"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "43"
+ ]
+ },
+ "execution_count": 34,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "mat[4,3]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])"
+ ]
+ },
+ "execution_count": 35,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "mat[:,0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([50, 51, 52, 53, 54, 55, 56, 57, 58, 59])"
+ ]
+ },
+ "execution_count": 36,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "mat[5,:]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[ 0, 1, 2],\n",
+ " [10, 11, 12],\n",
+ " [20, 21, 22]])"
+ ]
+ },
+ "execution_count": 37,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "mat[0:3,0:3]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "my_filter = mat > 50"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,\n",
+ " 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,\n",
+ " 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99])"
+ ]
+ },
+ "execution_count": 39,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "mat[my_filter]"
+ ]
+ },
+ {
+ "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.7.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/Pandas.ipynb b/Pandas.ipynb
new file mode 100644
index 0000000..6746acf
--- /dev/null
+++ b/Pandas.ipynb
@@ -0,0 +1,397 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/Users/eddie/.pyenv/versions/3.7.3/envs/tensorflow-1.14/lib/python3.7/site-packages/pandas/compat/__init__.py:117: UserWarning: Could not import the lzma module. Your installed Python is incomplete. Attempting to use lzma compression will result in a RuntimeError.\n",
+ " warnings.warn(msg)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import pandas as pd"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'/Users/eddie/Documents/Programming/Python/Neural_Networks_Stuff/Course'"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pwd"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df = pd.read_csv('./Tensorflow-Bootcamp-master/00-Crash-Course-Basics/salaries.csv')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Name | \n",
+ " Salary | \n",
+ " Age | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " John | \n",
+ " 50000 | \n",
+ " 34 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " Sally | \n",
+ " 120000 | \n",
+ " 45 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " Alyssa | \n",
+ " 80000 | \n",
+ " 27 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Name Salary Age\n",
+ "0 John 50000 34\n",
+ "1 Sally 120000 45\n",
+ "2 Alyssa 80000 27"
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0 50000\n",
+ "1 120000\n",
+ "2 80000\n",
+ "Name: Salary, dtype: int64"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df['Salary']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Salary | \n",
+ " Name | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 50000 | \n",
+ " John | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 120000 | \n",
+ " Sally | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 80000 | \n",
+ " Alyssa | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Salary Name\n",
+ "0 50000 John\n",
+ "1 120000 Sally\n",
+ "2 80000 Alyssa"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df[['Salary','Name']]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Salary | \n",
+ " Age | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " count | \n",
+ " 3.000000 | \n",
+ " 3.000000 | \n",
+ "
\n",
+ " \n",
+ " mean | \n",
+ " 83333.333333 | \n",
+ " 35.333333 | \n",
+ "
\n",
+ " \n",
+ " std | \n",
+ " 35118.845843 | \n",
+ " 9.073772 | \n",
+ "
\n",
+ " \n",
+ " min | \n",
+ " 50000.000000 | \n",
+ " 27.000000 | \n",
+ "
\n",
+ " \n",
+ " 25% | \n",
+ " 65000.000000 | \n",
+ " 30.500000 | \n",
+ "
\n",
+ " \n",
+ " 50% | \n",
+ " 80000.000000 | \n",
+ " 34.000000 | \n",
+ "
\n",
+ " \n",
+ " 75% | \n",
+ " 100000.000000 | \n",
+ " 39.500000 | \n",
+ "
\n",
+ " \n",
+ " max | \n",
+ " 120000.000000 | \n",
+ " 45.000000 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Salary Age\n",
+ "count 3.000000 3.000000\n",
+ "mean 83333.333333 35.333333\n",
+ "std 35118.845843 9.073772\n",
+ "min 50000.000000 27.000000\n",
+ "25% 65000.000000 30.500000\n",
+ "50% 80000.000000 34.000000\n",
+ "75% 100000.000000 39.500000\n",
+ "max 120000.000000 45.000000"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.describe()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Name | \n",
+ " Salary | \n",
+ " Age | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 | \n",
+ " Sally | \n",
+ " 120000 | \n",
+ " 45 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " Alyssa | \n",
+ " 80000 | \n",
+ " 27 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Name Salary Age\n",
+ "1 Sally 120000 45\n",
+ "2 Alyssa 80000 27"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df[df['Salary'] > 60000]"
+ ]
+ },
+ {
+ "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.7.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/Pytorch_1.ipynb b/Pytorch_1.ipynb
new file mode 100644
index 0000000..cf3d422
--- /dev/null
+++ b/Pytorch_1.ipynb
@@ -0,0 +1,70 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import torch"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import torchvision"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "False"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "torch.cuda.is_available()"
+ ]
+ },
+ {
+ "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.7.6"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/Scikit-Learn.ipynb b/Scikit-Learn.ipynb
new file mode 100644
index 0000000..47a462a
--- /dev/null
+++ b/Scikit-Learn.ipynb
@@ -0,0 +1,818 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np\n",
+ "from sklearn.preprocessing import MinMaxScaler"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "data = np.random.randint(0,100,(10,2))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[53, 52],\n",
+ " [82, 96],\n",
+ " [60, 84],\n",
+ " [15, 90],\n",
+ " [78, 31],\n",
+ " [ 5, 12],\n",
+ " [32, 75],\n",
+ " [80, 39],\n",
+ " [31, 46],\n",
+ " [22, 29]])"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "scaler_model = MinMaxScaler()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "sklearn.preprocessing._data.MinMaxScaler"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "type(scaler_model)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "MinMaxScaler(copy=True, feature_range=(0, 1))"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "scaler_model.fit(data)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[0.62337662, 0.47619048],\n",
+ " [1. , 1. ],\n",
+ " [0.71428571, 0.85714286],\n",
+ " [0.12987013, 0.92857143],\n",
+ " [0.94805195, 0.22619048],\n",
+ " [0. , 0. ],\n",
+ " [0.35064935, 0.75 ],\n",
+ " [0.97402597, 0.32142857],\n",
+ " [0.33766234, 0.4047619 ],\n",
+ " [0.22077922, 0.20238095]])"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "scaler_model.transform(data)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[0.62337662, 0.47619048],\n",
+ " [1. , 1. ],\n",
+ " [0.71428571, 0.85714286],\n",
+ " [0.12987013, 0.92857143],\n",
+ " [0.94805195, 0.22619048],\n",
+ " [0. , 0. ],\n",
+ " [0.35064935, 0.75 ],\n",
+ " [0.97402597, 0.32142857],\n",
+ " [0.33766234, 0.4047619 ],\n",
+ " [0.22077922, 0.20238095]])"
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "scaler_model.fit_transform(data)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/Users/eddie/.pyenv/versions/3.7.3/envs/tensorflow-1.14/lib/python3.7/site-packages/pandas/compat/__init__.py:117: UserWarning: Could not import the lzma module. Your installed Python is incomplete. Attempting to use lzma compression will result in a RuntimeError.\n",
+ " warnings.warn(msg)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import pandas as pd"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "mydata = np.random.randint(0,101,(50,4))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[ 97, 70, 23, 81],\n",
+ " [ 60, 40, 73, 7],\n",
+ " [ 60, 88, 87, 67],\n",
+ " [ 42, 25, 81, 100],\n",
+ " [ 45, 30, 69, 72],\n",
+ " [ 16, 100, 70, 14],\n",
+ " [ 25, 76, 32, 70],\n",
+ " [ 2, 29, 46, 65],\n",
+ " [ 71, 33, 11, 79],\n",
+ " [ 98, 16, 76, 9],\n",
+ " [ 0, 78, 61, 34],\n",
+ " [ 78, 43, 45, 87],\n",
+ " [ 95, 78, 6, 34],\n",
+ " [ 14, 44, 95, 27],\n",
+ " [ 32, 31, 90, 58],\n",
+ " [ 72, 15, 16, 59],\n",
+ " [ 5, 72, 31, 36],\n",
+ " [ 72, 30, 94, 55],\n",
+ " [ 55, 19, 91, 74],\n",
+ " [ 9, 20, 10, 34],\n",
+ " [ 3, 6, 25, 49],\n",
+ " [ 63, 61, 86, 55],\n",
+ " [ 25, 21, 0, 85],\n",
+ " [ 80, 66, 73, 51],\n",
+ " [ 96, 46, 35, 58],\n",
+ " [ 7, 4, 89, 25],\n",
+ " [ 92, 11, 77, 59],\n",
+ " [ 38, 94, 19, 46],\n",
+ " [ 34, 24, 94, 70],\n",
+ " [100, 91, 46, 76],\n",
+ " [ 43, 10, 35, 78],\n",
+ " [ 15, 24, 57, 6],\n",
+ " [ 51, 47, 47, 55],\n",
+ " [ 83, 5, 84, 40],\n",
+ " [100, 22, 26, 72],\n",
+ " [ 60, 83, 80, 92],\n",
+ " [ 28, 39, 82, 17],\n",
+ " [ 56, 20, 94, 85],\n",
+ " [ 72, 56, 63, 54],\n",
+ " [ 15, 60, 30, 72],\n",
+ " [ 41, 21, 86, 54],\n",
+ " [ 85, 7, 50, 87],\n",
+ " [ 48, 13, 69, 93],\n",
+ " [ 75, 20, 98, 96],\n",
+ " [ 41, 18, 14, 31],\n",
+ " [ 84, 13, 62, 6],\n",
+ " [ 13, 40, 77, 60],\n",
+ " [ 70, 18, 84, 26],\n",
+ " [ 97, 22, 24, 34],\n",
+ " [ 56, 83, 9, 95]])"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "mydata"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df = pd.DataFrame(data=mydata, columns = ['f1','f2','f3','label'])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " f1 | \n",
+ " f2 | \n",
+ " f3 | \n",
+ " label | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 97 | \n",
+ " 70 | \n",
+ " 23 | \n",
+ " 81 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 60 | \n",
+ " 40 | \n",
+ " 73 | \n",
+ " 7 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 60 | \n",
+ " 88 | \n",
+ " 87 | \n",
+ " 67 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 42 | \n",
+ " 25 | \n",
+ " 81 | \n",
+ " 100 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 45 | \n",
+ " 30 | \n",
+ " 69 | \n",
+ " 72 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 16 | \n",
+ " 100 | \n",
+ " 70 | \n",
+ " 14 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 25 | \n",
+ " 76 | \n",
+ " 32 | \n",
+ " 70 | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " 2 | \n",
+ " 29 | \n",
+ " 46 | \n",
+ " 65 | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " 71 | \n",
+ " 33 | \n",
+ " 11 | \n",
+ " 79 | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " 98 | \n",
+ " 16 | \n",
+ " 76 | \n",
+ " 9 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 0 | \n",
+ " 78 | \n",
+ " 61 | \n",
+ " 34 | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " 78 | \n",
+ " 43 | \n",
+ " 45 | \n",
+ " 87 | \n",
+ "
\n",
+ " \n",
+ " 12 | \n",
+ " 95 | \n",
+ " 78 | \n",
+ " 6 | \n",
+ " 34 | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " 14 | \n",
+ " 44 | \n",
+ " 95 | \n",
+ " 27 | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " 32 | \n",
+ " 31 | \n",
+ " 90 | \n",
+ " 58 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 72 | \n",
+ " 15 | \n",
+ " 16 | \n",
+ " 59 | \n",
+ "
\n",
+ " \n",
+ " 16 | \n",
+ " 5 | \n",
+ " 72 | \n",
+ " 31 | \n",
+ " 36 | \n",
+ "
\n",
+ " \n",
+ " 17 | \n",
+ " 72 | \n",
+ " 30 | \n",
+ " 94 | \n",
+ " 55 | \n",
+ "
\n",
+ " \n",
+ " 18 | \n",
+ " 55 | \n",
+ " 19 | \n",
+ " 91 | \n",
+ " 74 | \n",
+ "
\n",
+ " \n",
+ " 19 | \n",
+ " 9 | \n",
+ " 20 | \n",
+ " 10 | \n",
+ " 34 | \n",
+ "
\n",
+ " \n",
+ " 20 | \n",
+ " 3 | \n",
+ " 6 | \n",
+ " 25 | \n",
+ " 49 | \n",
+ "
\n",
+ " \n",
+ " 21 | \n",
+ " 63 | \n",
+ " 61 | \n",
+ " 86 | \n",
+ " 55 | \n",
+ "
\n",
+ " \n",
+ " 22 | \n",
+ " 25 | \n",
+ " 21 | \n",
+ " 0 | \n",
+ " 85 | \n",
+ "
\n",
+ " \n",
+ " 23 | \n",
+ " 80 | \n",
+ " 66 | \n",
+ " 73 | \n",
+ " 51 | \n",
+ "
\n",
+ " \n",
+ " 24 | \n",
+ " 96 | \n",
+ " 46 | \n",
+ " 35 | \n",
+ " 58 | \n",
+ "
\n",
+ " \n",
+ " 25 | \n",
+ " 7 | \n",
+ " 4 | \n",
+ " 89 | \n",
+ " 25 | \n",
+ "
\n",
+ " \n",
+ " 26 | \n",
+ " 92 | \n",
+ " 11 | \n",
+ " 77 | \n",
+ " 59 | \n",
+ "
\n",
+ " \n",
+ " 27 | \n",
+ " 38 | \n",
+ " 94 | \n",
+ " 19 | \n",
+ " 46 | \n",
+ "
\n",
+ " \n",
+ " 28 | \n",
+ " 34 | \n",
+ " 24 | \n",
+ " 94 | \n",
+ " 70 | \n",
+ "
\n",
+ " \n",
+ " 29 | \n",
+ " 100 | \n",
+ " 91 | \n",
+ " 46 | \n",
+ " 76 | \n",
+ "
\n",
+ " \n",
+ " 30 | \n",
+ " 43 | \n",
+ " 10 | \n",
+ " 35 | \n",
+ " 78 | \n",
+ "
\n",
+ " \n",
+ " 31 | \n",
+ " 15 | \n",
+ " 24 | \n",
+ " 57 | \n",
+ " 6 | \n",
+ "
\n",
+ " \n",
+ " 32 | \n",
+ " 51 | \n",
+ " 47 | \n",
+ " 47 | \n",
+ " 55 | \n",
+ "
\n",
+ " \n",
+ " 33 | \n",
+ " 83 | \n",
+ " 5 | \n",
+ " 84 | \n",
+ " 40 | \n",
+ "
\n",
+ " \n",
+ " 34 | \n",
+ " 100 | \n",
+ " 22 | \n",
+ " 26 | \n",
+ " 72 | \n",
+ "
\n",
+ " \n",
+ " 35 | \n",
+ " 60 | \n",
+ " 83 | \n",
+ " 80 | \n",
+ " 92 | \n",
+ "
\n",
+ " \n",
+ " 36 | \n",
+ " 28 | \n",
+ " 39 | \n",
+ " 82 | \n",
+ " 17 | \n",
+ "
\n",
+ " \n",
+ " 37 | \n",
+ " 56 | \n",
+ " 20 | \n",
+ " 94 | \n",
+ " 85 | \n",
+ "
\n",
+ " \n",
+ " 38 | \n",
+ " 72 | \n",
+ " 56 | \n",
+ " 63 | \n",
+ " 54 | \n",
+ "
\n",
+ " \n",
+ " 39 | \n",
+ " 15 | \n",
+ " 60 | \n",
+ " 30 | \n",
+ " 72 | \n",
+ "
\n",
+ " \n",
+ " 40 | \n",
+ " 41 | \n",
+ " 21 | \n",
+ " 86 | \n",
+ " 54 | \n",
+ "
\n",
+ " \n",
+ " 41 | \n",
+ " 85 | \n",
+ " 7 | \n",
+ " 50 | \n",
+ " 87 | \n",
+ "
\n",
+ " \n",
+ " 42 | \n",
+ " 48 | \n",
+ " 13 | \n",
+ " 69 | \n",
+ " 93 | \n",
+ "
\n",
+ " \n",
+ " 43 | \n",
+ " 75 | \n",
+ " 20 | \n",
+ " 98 | \n",
+ " 96 | \n",
+ "
\n",
+ " \n",
+ " 44 | \n",
+ " 41 | \n",
+ " 18 | \n",
+ " 14 | \n",
+ " 31 | \n",
+ "
\n",
+ " \n",
+ " 45 | \n",
+ " 84 | \n",
+ " 13 | \n",
+ " 62 | \n",
+ " 6 | \n",
+ "
\n",
+ " \n",
+ " 46 | \n",
+ " 13 | \n",
+ " 40 | \n",
+ " 77 | \n",
+ " 60 | \n",
+ "
\n",
+ " \n",
+ " 47 | \n",
+ " 70 | \n",
+ " 18 | \n",
+ " 84 | \n",
+ " 26 | \n",
+ "
\n",
+ " \n",
+ " 48 | \n",
+ " 97 | \n",
+ " 22 | \n",
+ " 24 | \n",
+ " 34 | \n",
+ "
\n",
+ " \n",
+ " 49 | \n",
+ " 56 | \n",
+ " 83 | \n",
+ " 9 | \n",
+ " 95 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " f1 f2 f3 label\n",
+ "0 97 70 23 81\n",
+ "1 60 40 73 7\n",
+ "2 60 88 87 67\n",
+ "3 42 25 81 100\n",
+ "4 45 30 69 72\n",
+ "5 16 100 70 14\n",
+ "6 25 76 32 70\n",
+ "7 2 29 46 65\n",
+ "8 71 33 11 79\n",
+ "9 98 16 76 9\n",
+ "10 0 78 61 34\n",
+ "11 78 43 45 87\n",
+ "12 95 78 6 34\n",
+ "13 14 44 95 27\n",
+ "14 32 31 90 58\n",
+ "15 72 15 16 59\n",
+ "16 5 72 31 36\n",
+ "17 72 30 94 55\n",
+ "18 55 19 91 74\n",
+ "19 9 20 10 34\n",
+ "20 3 6 25 49\n",
+ "21 63 61 86 55\n",
+ "22 25 21 0 85\n",
+ "23 80 66 73 51\n",
+ "24 96 46 35 58\n",
+ "25 7 4 89 25\n",
+ "26 92 11 77 59\n",
+ "27 38 94 19 46\n",
+ "28 34 24 94 70\n",
+ "29 100 91 46 76\n",
+ "30 43 10 35 78\n",
+ "31 15 24 57 6\n",
+ "32 51 47 47 55\n",
+ "33 83 5 84 40\n",
+ "34 100 22 26 72\n",
+ "35 60 83 80 92\n",
+ "36 28 39 82 17\n",
+ "37 56 20 94 85\n",
+ "38 72 56 63 54\n",
+ "39 15 60 30 72\n",
+ "40 41 21 86 54\n",
+ "41 85 7 50 87\n",
+ "42 48 13 69 93\n",
+ "43 75 20 98 96\n",
+ "44 41 18 14 31\n",
+ "45 84 13 62 6\n",
+ "46 13 40 77 60\n",
+ "47 70 18 84 26\n",
+ "48 97 22 24 34\n",
+ "49 56 83 9 95"
+ ]
+ },
+ "execution_count": 17,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "X = df[['f1','f2','f3']]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "y = df['label']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sklearn.model_selection import train_test_split"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(33, 3)"
+ ]
+ },
+ "execution_count": 24,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "X_train.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(17, 3)"
+ ]
+ },
+ "execution_count": 25,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "X_test.shape"
+ ]
+ },
+ {
+ "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.7.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/Tensors1D.ipynb b/Tensors1D.ipynb
new file mode 100644
index 0000000..1ca386f
--- /dev/null
+++ b/Tensors1D.ipynb
@@ -0,0 +1,1180 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import torch"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "a = torch.tensor([7,4,3,2,6])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "tensor(7)"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a[0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "tensor(6)"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a[4]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "torch.int64"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a.dtype"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'torch.LongTensor'"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a.type()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "a = torch.tensor([0.0,1.0,2.0,3.0,4.0])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "torch.float32"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a.dtype"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'torch.FloatTensor'"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a.type()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "a = torch.tensor([0.0,1.0,2.0,3.0,4.0], dtype=torch.int32)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "torch.int32"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a.dtype"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "a = torch.tensor([4.0, 1.0, 2.0, 3.0, 4])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "torch.float32"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a.dtype"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "a = torch.FloatTensor([0,1,2,3,4])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "torch.float32"
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a.dtype"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'torch.FloatTensor'"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a.type()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "tensor([0., 1., 2., 3., 4.])"
+ ]
+ },
+ "execution_count": 17,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "a = torch.tensor([0,1,2,3,4])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "a = a.type(torch.FloatTensor)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'torch.FloatTensor'"
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a.type()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "torch.float32"
+ ]
+ },
+ "execution_count": 21,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a = torch.tensor([4, 1, 2, 3, 4])\n",
+ "b=a.type(torch.float32)\n",
+ "b.dtype"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "torch.Size([5])"
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a.size()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "1"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a.ndimension()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "a = torch.tensor([1,2,3,4,5])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "a_col = a.view(5,1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "tensor([[1],\n",
+ " [2],\n",
+ " [3],\n",
+ " [4],\n",
+ " [5]])"
+ ]
+ },
+ "execution_count": 26,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "a_col"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "b_col = a.view(-1,1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "tensor([[1],\n",
+ " [2],\n",
+ " [3],\n",
+ " [4],\n",
+ " [5]])"
+ ]
+ },
+ "execution_count": 28,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "b_col"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2"
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "b_col.ndimension()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "numpy_array = np.array([0.0,1.0,2.0,3.0,4.0])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "torch_tensor = torch.from_numpy(numpy_array)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "back_to_numpy = torch_tensor.numpy()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/Users/eddie/.pyenv/versions/3.7.6/envs/pytorch/lib/python3.7/site-packages/pandas/compat/__init__.py:117: UserWarning: Could not import the lzma module. Your installed Python is incomplete. Attempting to use lzma compression will result in a RuntimeError.\n",
+ " warnings.warn(msg)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import pandas as pd"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "pandas_series = pd.Series([0.1,2,0.3,10.1])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "pandas_to_torch = torch.from_numpy(pandas_series.values)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "this_tensor = torch.tensor([0,1,2,3])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "torch_to_list = this_tensor.tolist()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[0, 1, 2, 3]"
+ ]
+ },
+ "execution_count": 40,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "torch_to_list"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "new_tensor = torch.tensor([1,2,3,4,5])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "tensor(1)"
+ ]
+ },
+ "execution_count": 42,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "new_tensor[0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2"
+ ]
+ },
+ "execution_count": 43,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "new_tensor[1].item()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "c = torch.tensor([20,1,2,3,4])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 45,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "c[0] = 100"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "tensor([100, 1, 2, 3, 4])"
+ ]
+ },
+ "execution_count": 46,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "c"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "c[4] = 0"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "tensor([100, 1, 2, 3, 0])"
+ ]
+ },
+ "execution_count": 48,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "c"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "d = c[1:4]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "tensor([1, 2, 3])"
+ ]
+ },
+ "execution_count": 52,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "d"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 53,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "c[3:5] = torch.tensor([300,400])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "tensor([100, 1, 2, 300, 400])"
+ ]
+ },
+ "execution_count": 55,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "c"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 57,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "u = torch.tensor([1, 2, 3, -1])\n",
+ "v = u + 1"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "tensor([2, 3, 4, 0])"
+ ]
+ },
+ "execution_count": 58,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "v"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 59,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "u = torch.tensor([1,0])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "v = torch.tensor([0,1])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 61,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "w = u + v"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 62,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "tensor([1, 1])"
+ ]
+ },
+ "execution_count": 62,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "w"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "z = 2*w"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 66,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "tensor([2, 2])"
+ ]
+ },
+ "execution_count": 66,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "z"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 67,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "u = torch.tensor([1,2])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 68,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "v = torch.tensor([3,2])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 69,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "z = u * v"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 70,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "tensor([3, 4])"
+ ]
+ },
+ "execution_count": 70,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "z"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 71,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "v = torch.tensor([3,1])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 72,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "result = torch.dot(u,v)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 73,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "tensor(5)"
+ ]
+ },
+ "execution_count": 73,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "result"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 76,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "a = torch.tensor([1.0,-1.0,1.0,-1.0])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 77,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "mean_a = a.mean()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 78,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "tensor(0.)"
+ ]
+ },
+ "execution_count": 78,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "mean_a"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 79,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "x=torch.tensor([0,np.pi/2,np.pi])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 80,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "y=torch.sin(x)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 81,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "tensor([ 0.0000e+00, 1.0000e+00, -8.7423e-08])"
+ ]
+ },
+ "execution_count": 81,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 84,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "-4.371138828673793e-07"
+ ]
+ },
+ "execution_count": 84,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y[2].item()*5"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 88,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "tensor([-2., -1., 0., 1., 2.])"
+ ]
+ },
+ "execution_count": 88,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "torch.linspace(-2,2,steps=5)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 89,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "x=torch.linspace(0,2*np.pi,100)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 90,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "y=torch.sin(x)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 93,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import matplotlib.pyplot as plt"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 94,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%matplotlib inline"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 95,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "execution_count": 95,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.plot(x.numpy(),y.numpy())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 96,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'1.4.0'"
+ ]
+ },
+ "execution_count": 96,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "torch.__version__"
+ ]
+ },
+ {
+ "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.7.6"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/Visualization.ipynb b/Visualization.ipynb
new file mode 100644
index 0000000..3ace716
--- /dev/null
+++ b/Visualization.ipynb
@@ -0,0 +1,330 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%matplotlib inline"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "x = np.arange(0,10)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "y = x**2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0, 0.5, 'Y label')"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.plot(x,y,'r--')\n",
+ "plt.xlim(0,4)\n",
+ "plt.ylim(0,10)\n",
+ "plt.title('TITLE')\n",
+ "plt.xlabel('X label')\n",
+ "plt.ylabel('Y label')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "mat = np.arange(0,100).reshape(10,10)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],\n",
+ " [10, 11, 12, 13, 14, 15, 16, 17, 18, 19],\n",
+ " [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],\n",
+ " [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],\n",
+ " [40, 41, 42, 43, 44, 45, 46, 47, 48, 49],\n",
+ " [50, 51, 52, 53, 54, 55, 56, 57, 58, 59],\n",
+ " [60, 61, 62, 63, 64, 65, 66, 67, 68, 69],\n",
+ " [70, 71, 72, 73, 74, 75, 76, 77, 78, 79],\n",
+ " [80, 81, 82, 83, 84, 85, 86, 87, 88, 89],\n",
+ " [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]])"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "mat"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.imshow(mat)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "mat = np.random.randint(0,1000,(10,10))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAASoAAAD4CAYAAABbu6u/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAUUklEQVR4nO3dfYxddZ3H8feHTh9ogZZnYVpolVpFNiwwwWo3rlpWEYglrg/dXRBYdFYFaZWoyB9L3LjraoyArouprQSlEdjaDQ3bBQwPISRrtQUCttWlKdBObaWlPNmnaWe++8c91Qnbufe0c07v79zzeSUnvffcc7/326bznd/ve37nXEUEZmYpO6LdCZiZteJCZWbJc6Eys+S5UJlZ8lyozCx5XWUEHT3xyBj3pomFx+0e+3LhMQE27Tm28JhvGbe98JgArwyMKSXui3uOLiXuUaP7S4l72ugdhcf83/XHFx4T4IjuvYXH3Lnldfpf2aWRxPjg+ybES9sHch276uk9D0TEhSP5vJEopVCNe9NEzv33ywqP+/W3/GfhMQH+cf2lhce8e8ZPC48JcN+OaaXE/d6z7y0l7rve9EIpcf+te0XhMT/wsSsLjwkw/l82Fx7zsU/fM+IYL20f4JcPnJbr2FGnPHvCiD9wBEopVGaWvgAGGWx3Grm4UJnVVBDsjXxTv3ZzoTKrMY+ozCxpQTBQkUvoXKjMamwQFyozS1gAAxUpVLkWfEq6UNJvJa2TdEPZSZnZ4TFI5NrareWIStIo4PvAXwF9wK8kLYuINWUnZ2blCWBvRXpUeUZU5wPrImJ9RPQDdwFzyk3LzMoWBAM5t3bL06PqBjYOed4HvPONB0nqBXoBxp5UzuUYZlaggIH216BcCrsoOSIWRERPRPSMnjS+qLBmVpLGyvR8W7vlGVFtAqYMeT4522dmlSYGGNF1zYdNnkL1K2C6pGk0CtRc4G9LzcrMStdopndIoYqIfZKuBR4ARgE/iojVpWdmZqVqrKPqkEIFEBHLgeUl52Jmh9lgp4yozKwzddyIysw6TyAGKnI3chcqsxrz1M/MkhaI/hjV7jRycaEyq6nGgs8aT/3693Tx/IYTC4876x3l/KOu31h8rj846bzCYwI89tmZpcR95y2/KSXugw+dW0rct+8q/t/39JWrCo8J8Oz9xee659WxhcRxM93MkhYhBqLGIyozq4ZBj6jMLGWNZno1SkA1sjSzwtW+mW5m1TDgdVRmljKvTDezShj0WT8zS1njomQXKjNLWCD2+hIaM0tZBF7waWapkxd8mlnaAo+ozKwC3Ew3s6QF8o3zzCxtja/LqkYJqEaWZlaC6nwBaTUmqGZWuKCxMj3P1oqkL0haLenXkn4qaZykaZJWSFon6W5JY7Jjx2bP12WvT20V34XKrMYGslFVq60ZSd3AdUBPRJxF44uK5wLfBG6OiDOAl4Grs7dcDbyc7b85O64pFyqzmopQYSMqGm2kIyV1AeOBzcD7gSXZ63cAl2aP52TPyV6fLalpNXSPyqymGs30kV9CExGbJH0b2ADsAh4EVgGvRMS+7LA+oDt73A1szN67T9KrwPHAtuE+wyMqs9pq3DM9zwacIGnlkK33j1GkY2mMkqYBpwITgAuLzLSUEdWonWLSqjGFx33z7n8oPCbAJ//i8cJjLn3+7MJjApy0c28pceef9FApcf/7xLNKibt3b/G/Y5//yVsLjwnw5t7Vhcf83Wu7Rxyj0UzPfdZvW0T0DPPaBcBzEbEVQNJSYBYwSVJXNqqaDGzKjt8ETAH6sqniROClZh/uEZVZjQ1wRK6thQ3ATEnjs17TbGAN8Ajw0eyYK4B7s8fLsudkrz8cEdHsA9yjMqupolamR8QKSUuAJ4B9wJPAAuC/gLskfT3btyh7yyLgJ5LWAdtpnCFsyoXKrMaK+nKHiLgJuOkNu9cD5x/g2N3Axw4mvguVWU1FwN7BanR/XKjMaqox9XOhMrPEVeVaPxcqs5o6yOUJbdVy3CdpiqRHJK3JLjqcdzgSM7OyFXoJTanyjKj2AddHxBOSjgZWSfp5RKwpOTczK1nH3DM9IjbTuMCQiHhd0loa1+q4UJlVWOOsXwd+XVZ235hzgBUHeK0X6AUYfdSxBaRmZmWq0q2Ic08+JR0F/AyYHxGvvfH1iFgQET0R0dN15IQiczSzkgxmX5nVamu3XCMqSaNpFKnFEbG03JTM7HCo0lm/loUqu8hwEbA2Ir5TfkpmdrikcEYvjzwjqlnA5cAzkp7K9t0YEcvLS8vMyhYh9nVKoYqIxyGBSaqZFa5jpn5m1pk6qkdlZp3LhcrMklaldVQuVGY1lsIaqTxKKVRTTt7Kzdf/oPC4p3f9v3WmhfjsR4r/0ojH77298JgA77jus6XEnX/2RaXEnXh58V/yAbDz1Ka32D4kj11c/P9ZgCtPvLz4oDuL+Jor2Ocb55lZ6jz1M7OkuUdlZpUQLlRmlrpaN9PNLH0R7lGZWfLEgM/6mVnq3KMys6T5Wj8zS180+lRV4EJlVmM+62dmSQs3082sCjz1M7Pk+ayfmSUtwoXKzCrAyxPMLHnuUZlZ0gIx6LN+Zpa6igyoXKjMaqtCzfRqjPvMrByRc2tB0iRJSyT9RtJaSe+SdJykn0t6Nvvz2OxYSfqupHWSnpZ0bqv4LlRmNRahXFsOtwL3R8TbgLOBtcANwEMRMR14KHsO8CFgerb1Are1Cl7K1G/DruO47plPFB737j9fVHhMgLct+G3hMb+29fzCYwLc+Zc/LCVu7+euLSXuztP2lRL3rZ/5ZeExH/7I5MJjAqy9/oTCY+7+55H/6AYwODjyqZ+kicB7gCsBIqIf6Jc0B3hvdtgdwKPAV4A5wI8jIoBfZKOxUyJi83Cf4RGVWV0FEMq3NTcN2ArcLulJSQslTQBOHlJ8tgAnZ4+7gY1D3t+X7RuWC5VZjUXk24ATJK0csvUOCdMFnAvcFhHnADv40zQv+5zI2e06MJ/1M6uz/KVjW0T0DPNaH9AXESuy50toFKrf75/SSToFeDF7fRMwZcj7J2f7huURlVlt5Wukt2qmR8QWYKOkGdmu2cAaYBlwRbbvCuDe7PEy4JPZ2b+ZwKvN+lPgEZVZvRW34vPzwGJJY4D1wFU0BkL3SLoaeAH4eHbscuAiYB2wMzu2KRcqs7oKiALO+gFExFPAgaaGsw9wbADXHEx8FyqzWuuwlemSRmWnHu8rMyEzO4wKWpletoNpps+jsdrUzDpFJxUqSZOBi4GF5aZjZodNcQs+S5e3R3UL8GXg6OEOyBaA9QKMPnHiyDMzs9JV5cZ5LUdUki4BXoyIVc2Oi4gFEdETET2jjhlfWIJmVqJB5dvaLM+IahbwYUkXAeOAYyTdGRGXlZuamZVNnTKiioivRsTkiJgKzAUedpEy6wB5G+kJFDOvozKrrTQa5XkcVKGKiEdp3FPGzDpBAqOlPDyiMquzwXYnkI8LlVld7V9HVQEuVGY1VpWzfi5UZnVWkULlG+eZWfJKGVG9Zfw2lpxT/GWBo0oq//c9MtwdVg/d2JfK+R3w9PK3lxJ36isbWx90CDb+9ZTWBx0CnfeOwmO+0L+j8JgAo7ePKjymBorpLXnqZ2ZpC5K4PCYPFyqzOvOIysxS56mfmaXPhcrMkudCZWYpU3jqZ2ZV4LN+ZpY6j6jMLH0uVGaWNPeozKwSXKjMLHWqyI3zfPcEM0ueR1Rmdeapn5klzc10M6sEFyozS54LlZmlTFTnrJ8LlVlduUdlZpXgQmVmyatzodr466OZN2N24XG33D218JgAZyx+vfCYe48bV3hMgB3f2l1K3G9Mv7eUuF+68XOlxP3MXcXn+41/urzwmABTNvUXHvP3rxVTYYqc+kkaBawENkXEJZKmAXcBxwOrgMsjol/SWODHwHnAS8AnIuL5ZrG9Mt2sziLnls88YO2Q598Ebo6IM4CXgauz/VcDL2f7b86Oa8qFyqyuonHWL8/WiqTJwMXAwuy5gPcDS7JD7gAuzR7PyZ6TvT47O35YLlRmdVbciOoW4MvA/rJ2PPBKROzLnvcB3dnjbmAjQPb6q9nxw3KhMqux/fdNb7UBJ0haOWTr/WMM6RLgxYhYVVaePutnVmf5+0/bIqJnmNdmAR+WdBEwDjgGuBWYJKkrGzVNBjZlx28CpgB9krqAiTSa6sPyiMqsrvJO+1oUs4j4akRMjoipwFzg4Yj4O+AR4KPZYVcA+0/VLsuek73+cEQ0/RQXKrOaEgc19TsUXwG+KGkdjR7Uomz/IuD4bP8XgRtaBco19ZM0iUY3/ywa9fXvI+J/DiFxM0tI0ZfQRMSjwKPZ4/XA+Qc4ZjfwsYOJm7dHdStwf0R8VNIYYPzBfIiZJapTVqZLmgi8B7gSICL6geKX2prZ4VeRQpWnRzUN2ArcLulJSQslTXjjQZJ695+67GdP4YmaWcFy9qdSuMNCnkLVBZwL3BYR5wA7OEDzKyIWRERPRPSMYWzBaZpZKYq9hKY0eQpVH9AXESuy50toFC4zq7iiLqEpW8tCFRFbgI2SZmS7ZgNrSs3KzA6Lqkz98p71+zywODvjtx64qryUzOywSGRal0euQhURTwHDLZ83s6rqpEJlZp1n/8r0KnChMqsxDVajUrlQmdVVp/WozKwzeepnZumrc6HaM20cz31zeuFx7zn7h4XHBLjhuQ8WHnP9p2e0PugQnPa9E0uJO/Ddcu74M2P+6lLifuDI7YXH/NKfFR4SgD9MKf5KjX2rm95iPDePqMwsfS5UZpa0SOPymDxcqMxqyuuozKwamt+qPBkuVGY15hGVmaXNCz7NrArcTDez5LlQmVnaAjfTzSx9bqabWfpcqMwsZV7waWbpi/CN88ysAqpRp1yozOrMUz8zS1sAnvqZWfKqUadcqMzqzFM/M0uez/qZWdrqfveEMet3cfrcNYXHnfPDawuPCfD2sRsKj3nBeeV8qcEjE99aStzrbv5cKXFPffDFUuJ+7a7zC4/57GW3FR4TYNqy3sJjDo4ZeYVpLPisRqXyiMqsznz3BDNLnUdUZpa2CvWoyvnWSTOrgMa1fnm2ZiRNkfSIpDWSVkual+0/TtLPJT2b/Xlstl+SvitpnaSnJZ3bKlMXKrM6i8i3NbcPuD4izgRmAtdIOhO4AXgoIqYDD2XPAT4ETM+2XqDlWQwXKrO6yr6ANM/WNEzE5oh4Inv8OrAW6AbmAHdkh90BXJo9ngP8OBp+AUySdEqzz3CPyqzO8jfTT5C0csjzBRGx4I0HSZoKnAOsAE6OiM3ZS1uAk7PH3cDGIW/ry/ZtZhi5CpWkLwCfotF6ewa4KiJ253mvmSUsfzN9W0T0NDtA0lHAz4D5EfGapD99TERIh37BTsupn6Ru4DqgJyLOAkYBcw/1A80sHRoczLW1jCONplGkFkfE0mz37/dP6bI/96/+3QRMGfL2ydm+YeXtUXUBR0rqAsYDv8v5PjNLVdBY8Jlna0KNodMiYG1EfGfIS8uAK7LHVwD3Dtn/yezs30zg1SFTxANqOfWLiE2Svg1sAHYBD0bEgwdItpdGB59xjG8V1szaTERRCz5nAZcDz0h6Ktt3I/CvwD2SrgZeAD6evbYcuAhYB+wErmr1AS0LVbb2YQ4wDXgF+A9Jl0XEnUOPyxprCwCO0XEVWUZmVnMFFKqIeJzGpYMHMvsAxwdwzcF8Rp6p3wXAcxGxNSL2AkuBdx/Mh5hZoopZR1W6PGf9NgAzJY2nMfWbDaxs/hYzS97+HlUF5OlRrZC0BHiCxgrUJ8mmeGZWbXnO6KUg1zqqiLgJuKnkXMzssEpjWpeHV6ab1VXgQmVmFVCNmZ8LlVmd+cZ5ZpY+FyozS1oEDFRj7ldKoeo/ZQIbP/XOwuO+efGewmMCxB92FB7zhflnFB4T4M7FC0uJO/rdA6XEvWb7daXEfeZ9WwuP+dgThYcEYNLTxf+Ybd013ELwg+QRlZklz4XKzJIWgL8p2czSFhA17lGZWQUE9W6mm1lFuEdlZslzoTKztPmiZDNLXQCddJsXM+tQHlGZWdpqfgmNmVVAQHgdlZklzyvTzSx57lGZWdIifNbPzCrAIyozS1sQA+Xch6xoLlRmdeXbvJhZJXh5gpmlLIDwiMrMkha+cZ6ZVUBVmumKEk5PStoKvJDj0BOAbYUnUJ4q5VulXKFa+aaQ6+kRceJIAki6n8bfJY9tEXHhSD5vJEopVLk/XFoZET1tS+AgVSnfKuUK1cq3Srl2iiPanYCZWSsuVGaWvHYXqgVt/vyDVaV8q5QrVCvfKuXaEdraozIzy6PdIyozs5ZcqMwseW0rVJIulPRbSesk3dCuPFqRNEXSI5LWSFotaV67c8pD0ihJT0q6r925NCNpkqQlkn4jaa2kd7U7p2YkfSH7f/BrST+VNK7dOdVBWwqVpFHA94EPAWcCfyPpzHbkksM+4PqIOBOYCVyTcK5DzQPWtjuJHG4F7o+ItwFnk3DOkrqB64CeiDgLGAXMbW9W9dCuEdX5wLqIWB8R/cBdwJw25dJURGyOiCeyx6/T+EHqbm9WzUmaDFwMLGx3Ls1Imgi8B1gEEBH9EfFKe7NqqQs4UlIXMB74XZvzqYV2FapuYOOQ530k/sMPIGkqcA6wor2ZtHQL8GUg9StOpwFbgduzaepCSRPandRwImIT8G1gA7AZeDUiHmxvVvXgZnpOko4CfgbMj4jX2p3PcCRdArwYEavanUsOXcC5wG0RcQ6wA0i5X3ksjZH/NOBUYIKky9qbVT20q1BtAqYMeT4525ckSaNpFKnFEbG03fm0MAv4sKTnaUyp3y/pzvamNKw+oC8i9o9Ql9AoXKm6AHguIrZGxF5gKfDuNudUC+0qVL8CpkuaJmkMjYbksjbl0pQk0eihrI2I77Q7n1Yi4qsRMTkiptL4d304IpL8rR8RW4CNkmZku2YDa9qYUisbgJmSxmf/L2aTcPO/k7TlflQRsU/StcADNM6c/CgiVrcjlxxmAZcDz0h6Ktt3Y0Qsb2NOneTzwOLsF9Z64Ko25zOsiFghaQnwBI2zwU/iy2kOC19CY2bJczPdzJLnQmVmyXOhMrPkuVCZWfJcqMwseS5UZpY8FyozS97/Aa0C8uRaZ2HyAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.imshow(mat)\n",
+ "plt.colorbar()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df = pd.read_csv('./Tensorflow-Bootcamp-master/00-Crash-Course-Basics/salaries.csv')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Name | \n",
+ " Salary | \n",
+ " Age | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " John | \n",
+ " 50000 | \n",
+ " 34 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " Sally | \n",
+ " 120000 | \n",
+ " 45 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " Alyssa | \n",
+ " 80000 | \n",
+ " 27 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Name Salary Age\n",
+ "0 John 50000 34\n",
+ "1 Sally 120000 45\n",
+ "2 Alyssa 80000 27"
+ ]
+ },
+ "execution_count": 21,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "