trainings/PythonAI/JupyterLab/PythonAI_4.ipynb
2025-04-09 10:28:19 +02:00

376 lines
13 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"id": "a5fd2a1b-ac9e-474a-a04b-d583a48d3b3f",
"metadata": {},
"source": [
"# Dzień 4"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "6a53b426-a1c5-485b-807c-02c3bddb5a85",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"id": "5cdb50f3-a713-4f9d-b58d-5169529cc736",
"metadata": {},
"source": [
"## Najpopularniejsze modele uczenia maszynowego\n",
"### Regresja liniowa\n",
" - model przewiduje wartość liczbową na podstawie wartości wejściowych\n",
"### Regresja logistyczna\n",
" - mimo nazwy, służy głownie do klasyfikacji binarnej - prawdopodobieństwo przynależności do grupy\n",
" - np. w jakim stopniu prawdopodobieństwa dane objawy pasują do choroby, albo dane finansowe pasują do grupy \"dostanie kredyt\"\n",
" - \n",
"## Drzewa decyzyjne i last losowe\n",
"### Drzewo decyzyjne\n",
" - struktura przypominająca drzewo, gdzie każdy węzeł to pytanie o dane a gaęzie to odpowiedzi na to pytanie\n",
"### Las losowy\n",
" - grupa wielu drzew decyzyjnych, gdzie każde drzewo jest uczone na losowym podzbiorze cech\n",
" - końcowa decyzja jest wynikiem głosowania drzew, co poprawia dokładność\n",
"### Gradient boosting\n",
" - technika polegająca na tym, że bierzemy słabe modele (zwykle drzewa) i łączymy z innymi modelami, które koncentrują się na poprawie błędów poprzenich modeli\n",
"\n",
"## Wzmacnianie \n",
" - środowisko - przestreń, w której agent działa\n",
" - agent - autonomiczny program, który podejmuje decyzje na podstawie środowiska\n",
" - nagroda - sygnał informujący agenta o jakości akcji\n",
" - akcja - działanie podjęte przez agenta, które wpływa na środowisko\n",
"Przykład: Środowisko to plansza, duchy, owoce i tabletki, nagroda to owoce, agent to PacMan, akcja to poruszanie się.\n",
"\n",
"## Support Vector Machines - SVM \n",
" - potężne narzędzie do klasyfikacji\n",
"\n",
"## Metoda KNN\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "4dbc4438-13fa-429d-894e-ffaf184f2fdb",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>date</th>\n",
" <th>datatype</th>\n",
" <th>station</th>\n",
" <th>attributes</th>\n",
" <th>value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2018-01-01T00:00:00</td>\n",
" <td>PRCP</td>\n",
" <td>GHCND:US1CTFR0039</td>\n",
" <td>,,N,</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2018-01-01T00:00:00</td>\n",
" <td>PRCP</td>\n",
" <td>GHCND:US1NJBG0015</td>\n",
" <td>,,N,</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2018-01-01T00:00:00</td>\n",
" <td>SNOW</td>\n",
" <td>GHCND:US1NJBG0015</td>\n",
" <td>,,N,</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2018-01-01T00:00:00</td>\n",
" <td>PRCP</td>\n",
" <td>GHCND:US1NJBG0017</td>\n",
" <td>,,N,</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2018-01-01T00:00:00</td>\n",
" <td>SNOW</td>\n",
" <td>GHCND:US1NJBG0017</td>\n",
" <td>,,N,</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78775</th>\n",
" <td>2018-12-31T00:00:00</td>\n",
" <td>WDF5</td>\n",
" <td>GHCND:USW00094789</td>\n",
" <td>,,W,</td>\n",
" <td>130.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78776</th>\n",
" <td>2018-12-31T00:00:00</td>\n",
" <td>WSF2</td>\n",
" <td>GHCND:USW00094789</td>\n",
" <td>,,W,</td>\n",
" <td>9.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78777</th>\n",
" <td>2018-12-31T00:00:00</td>\n",
" <td>WSF5</td>\n",
" <td>GHCND:USW00094789</td>\n",
" <td>,,W,</td>\n",
" <td>12.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78778</th>\n",
" <td>2018-12-31T00:00:00</td>\n",
" <td>WT01</td>\n",
" <td>GHCND:USW00094789</td>\n",
" <td>,,W,</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78779</th>\n",
" <td>2018-12-31T00:00:00</td>\n",
" <td>WT02</td>\n",
" <td>GHCND:USW00094789</td>\n",
" <td>,,W,</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>78780 rows × 5 columns</p>\n",
"</div>"
],
"text/plain": [
" date datatype station attributes value\n",
"0 2018-01-01T00:00:00 PRCP GHCND:US1CTFR0039 ,,N, 0.0\n",
"1 2018-01-01T00:00:00 PRCP GHCND:US1NJBG0015 ,,N, 0.0\n",
"2 2018-01-01T00:00:00 SNOW GHCND:US1NJBG0015 ,,N, 0.0\n",
"3 2018-01-01T00:00:00 PRCP GHCND:US1NJBG0017 ,,N, 0.0\n",
"4 2018-01-01T00:00:00 SNOW GHCND:US1NJBG0017 ,,N, 0.0\n",
"... ... ... ... ... ...\n",
"78775 2018-12-31T00:00:00 WDF5 GHCND:USW00094789 ,,W, 130.0\n",
"78776 2018-12-31T00:00:00 WSF2 GHCND:USW00094789 ,,W, 9.8\n",
"78777 2018-12-31T00:00:00 WSF5 GHCND:USW00094789 ,,W, 12.5\n",
"78778 2018-12-31T00:00:00 WT01 GHCND:USW00094789 ,,W, 1.0\n",
"78779 2018-12-31T00:00:00 WT02 GHCND:USW00094789 ,,W, 1.0\n",
"\n",
"[78780 rows x 5 columns]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('data/nyc_weather_2018.csv')\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "5987fc03-1a75-45bb-b154-7fb1d8c5c1e9",
"metadata": {},
"outputs": [],
"source": [
"iris = pd.read_csv('data/iris.csv')\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "1edbb5f7-577a-4460-886e-482464157465",
"metadata": {},
"outputs": [],
"source": [
"from matplotlib.colors import ListedColormap\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# To check recent matplotlib compatibility\n",
"import matplotlib\n",
"from distutils.version import LooseVersion\n",
"\n",
"\n",
"def plot_decision_regions(X, y, classifier, test_idx=None, resolution=0.02):\n",
"\n",
" # setup marker generator and color map\n",
" markers = ('o', 's', '^', 'v', '<')\n",
" colors = ('red', 'blue', 'lightgreen', 'gray', 'cyan')\n",
" cmap = ListedColormap(colors[:len(np.unique(y))])\n",
"\n",
" # plot the decision surface\n",
" x1_min, x1_max = X[:, 0].min() - 1, X[:, 0].max() + 1\n",
" x2_min, x2_max = X[:, 1].min() - 1, X[:, 1].max() + 1\n",
" xx1, xx2 = np.meshgrid(np.arange(x1_min, x1_max, resolution),\n",
" np.arange(x2_min, x2_max, resolution))\n",
" lab = classifier.predict(np.array([xx1.ravel(), xx2.ravel()]).T)\n",
" lab = lab.reshape(xx1.shape)\n",
" plt.contourf(xx1, xx2, lab, alpha=0.3, cmap=cmap)\n",
" plt.xlim(xx1.min(), xx1.max())\n",
" plt.ylim(xx2.min(), xx2.max())\n",
"\n",
" # plot class examples\n",
" for idx, cl in enumerate(np.unique(y)):\n",
" plt.scatter(x=X[y == cl, 0],\n",
" y=X[y == cl, 1],\n",
" alpha=0.8,\n",
" c=colors[idx],\n",
" marker=markers[idx],\n",
" label=f'Class {cl}',\n",
" edgecolor='black')\n",
" # highlight test examples\n",
" if test_idx:\n",
" # plot all examples\n",
" X_test, y_test = X[test_idx, :], y[test_idx]\n",
"\n",
" plt.scatter(X_test[:, 0],\n",
" X_test[:, 1],\n",
" c='none',\n",
" edgecolor='black',\n",
" alpha=1.0,\n",
" linewidth=1,\n",
" marker='o',\n",
" s=100,\n",
" label='Test set')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "0de01538-5c3f-4110-bb9d-ecdbb7f0af1b",
"metadata": {},
"outputs": [
{
"ename": "ModuleNotFoundError",
"evalue": "No module named 'sklearn'",
"output_type": "error",
"traceback": [
"\u001b[31m---------------------------------------------------------------------------\u001b[39m",
"\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)",
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[34;01msklearn\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mmodel_selection\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m train_test_split\n\u001b[32m 3\u001b[39m X_train, X_test, Y_train, Y_test = train_test_split(x,y,test_size=\u001b[32m0.3\u001b[39m, random_state=\u001b[32m1\u001b[39m, stratify=y)\n",
"\u001b[31mModuleNotFoundError\u001b[39m: No module named 'sklearn'"
]
}
],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"X_train, X_test, Y_train, Y_test = train_test_split(x,y,test_size=0.3, random_state=1, stratify=y)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "00d65b25-a305-4409-8daf-8bd4e3cd8005",
"metadata": {},
"outputs": [
{
"ename": "ModuleNotFoundError",
"evalue": "No module named 'sklearn'",
"output_type": "error",
"traceback": [
"\u001b[31m---------------------------------------------------------------------------\u001b[39m",
"\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)",
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[10]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[34;01msklearn\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mpreprocessing\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m StandardScaler\n\u001b[32m 3\u001b[39m sc = StandardScaler()\n\u001b[32m 4\u001b[39m sc.fit(X_train)\n",
"\u001b[31mModuleNotFoundError\u001b[39m: No module named 'sklearn'"
]
}
],
"source": [
"from sklearn.preprocessing import StandardScaler\n",
"\n",
"sc = StandardScaler()\n",
"sc.fit(X_train)\n",
"X_train_std = sc.transform(X_train)\n",
"X_test_std = sc.transform(X_test)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5cecc1db-c8b7-4153-897e-9a4a216e936e",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "f0c72b7a-b92b-4678-8bdb-3b6ca4c201ad",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "06f65b9c-bf3e-438a-a11f-8df0db4f553e",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.12.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}