{ "cells": [ { "cell_type": "markdown", "metadata": { "deletable": false, "editable": false, "nbgrader": { "cell_type": "markdown", "checksum": "82556a443e7c08d69f986cd498c5379e", "grade": false, "grade_id": "cell-de685353dea0cc6e", "locked": true, "schema_version": 3, "solution": false, "task": false }, "slideshow": { "slide_type": "slide" } }, "source": [ "# Grundlagen des maschinellen Lernens\n", "\n", "Für diese Unterlagen verwenden wir das Framework [PyCaret](https://pycaret.readthedocs.io/en/latest). [PyCaret](https://pycaret.readthedocs.io/en/latest) ist ein low-code Framework mit dem Ziel _Citizen Data Science_ zu ermöglichen. Schauen wir uns das mal genauer an.\n", "\n", "![Beispiel für Klassifikation](https://scikit-learn.org/stable/_images/sphx_glr_plot_classifier_comparison_001.png)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "skip" }, "tags": [] }, "outputs": [], "source": [ "import pip\n", "!pip install pycaret matplotlib pandas" ] }, { "attachments": { "ecf2ce73-a2eb-4fed-bac6-62b743063555.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": { "deletable": false, "editable": false, "nbgrader": { "cell_type": "markdown", "checksum": "239b6ac04531eff90295d45f837ebf3b", "grade": false, "grade_id": "cell-577c2b66d3cd0704", "locked": true, "schema_version": 3, "solution": false, "task": false }, "slideshow": { "slide_type": "fragment" }, "tags": [] }, "source": [ "## Die Zweige des maschinellen Lernens\n", "- **Überwachtes Lernen (Supervised Learning)**: Die Daten haben ein zusätzliches Attribut (\"Label\"), das wir vorhersagen möchten $\\rightarrow$ Klassifikation oder Regression\n", "- **Unüberwachtes Lernen (Unsupervised Learning)**: Die Daten haben keinen Zielwert, wir wollen Gruppen ähnlicher Proben identifizieren $\\rightarrow$ Clustering\n", "- **Verstärkungslernen (Reinforcement Learning)**: Keine Daten verfügbar, durch Interaktion mit einer Umgebung und entsprechenden Reaktionen wird ein System trainiert.\n", "\n", "Im folgenden Notebook werden wir auf Supervised- und Unsupervised Learning eingehen.\n", "\n", "\n", "![branches_ml.png](attachment:ecf2ce73-a2eb-4fed-bac6-62b743063555.png)\n", "\n", "## Supervised Learning\n", "\n", "Ein Lernproblem betrachtet eine Stichprobe von Daten und versucht dann, Eigenschaften von zuvor unbekannten Daten vorherzusagen.\n", "\n", "![ML-Beispiel](https://miro.medium.com/v2/resize:fit:720/1*R-ItxBW2SWarITBKe7HZuA.gif)\n" ] }, { "cell_type": "markdown", "metadata": { "deletable": false, "editable": false, "nbgrader": { "cell_type": "markdown", "checksum": "51e1c691b378ee8299cc50e84b3db431", "grade": false, "grade_id": "cell-ca3e2d2b572bb9c1", "locked": true, "schema_version": 3, "solution": false, "task": false }, "slideshow": { "slide_type": "slide" } }, "source": [ "### Ein Beispielprojekt: Klassifizierung von Weinen\n", "\n", "![Red and White Wine](https://vinepair.com/wp-content/uploads/2014/12/red-white-myth-header.jpg)\n", "\n", "Der Datensatz sieht wie folgt aus:\n", "\n", "| **Attribute (units)** | | **Red Wine** | | | **White Wine** | |\n", "|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n", "| | **Min** | **Max** | **Mean** | **Min** | **Max** | **Mean** |\n", "| fixed acidity (g(tartaric acid)/dm3) | 4.6 | 15.9 | 8.3 | 3.8 | 14.2 | 6.9 |\n", "| volatile acidity (g(tartaric acid)/dm3) | 0.1 | 1.6 | 0.5 | 0.1 | 1.1 | 0.3 |\n", "| citric acidity (g/dm3) | 0 | 1 | 0.3 | 0 | 1.7 | 0.3 |\n", "| residual sugar (g/dm3) | 0.9 | 15.5 | 2.5 | 0.6 | 65.8 | 6.4 |\n", "| chlorides (g(sodium chloride)/dm3) | 0.01 | 0.61 | 0.08 | 0.01 | 0.35 | 0.05 |\n", "| free sulfur dioxide (mg/dm3) | 1 | 72 | 14 | 2 | 289 | 35 |\n", "| total sulfur dioxide (mg/dm3) | 6 | 289 | 46 | 9 | 440 | 138 |\n", "| density (g/cm3) | 0.99 | 1.004 | 0.996 | 0.987 | 1.039 | 0.994 |\n", "| pH | 2.7 | 4 | 3.3 | 2.7 | 3.8 | 3.1 |\n", "| sulphates (g(potassium sulphate)/dm3) | 0.3 | 2 | 0.7 | 0.2 | 1.1 | 0.5 |\n", "| alcohol (% vol.) | 8.4 | 14.9 | 10.4 | 8 | 14.2 | 10.4 |\n", "\n", "Für weitere Informationen zum Datensatz wird auf die Beschreibung des Datensatzes auf [dieser Webseite](http://www3.dsi.uminho.pt/pcortez/wine/) verwiesen.\n", "\n", "__Quelle:__ P. Cortez, A. Cerdeira, F. Almeida, T. Matos, and J. Reis, “Modeling wine preferences by data mining from physicochemical properties,” Decision Support Systems, vol. 47, no. 4, pp. 547–553, Nov. 2009, doi: 10.1016/j.dss.2009.05.016.\n", "\n", "__Aufgabe:__ Wir haben Informationen über verschiedene Weine und möchten (im ersten Schritt) die Weinart (rot/weiß) bestimmen.\n", "\n", "#### 1. Das Laden der Daten" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "from pycaret.datasets import get_data\n", "data = get_data('wine')" ] }, { "cell_type": "markdown", "metadata": { "deletable": false, "editable": false, "nbgrader": { "cell_type": "markdown", "checksum": "f185bd1c1863d4efc5a39fd9b70e52c6", "grade": false, "grade_id": "cell-e14db57ddb384317", "locked": true, "schema_version": 3, "solution": false, "task": false }, "slideshow": { "slide_type": "slide" } }, "source": [ "\n", "#### 2. Vorverarbeiten und verstehen der Daten\n", "![Data Processing](https://res.cloudinary.com/talend/image/upload/v1634323116/resources/seo-hubs/seo-subcategory-data-definitions_geenlt.png)\n", "\n", "**Wie sind die daten _beschaffen_**?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "data.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 3. Setup und Training des Model\n", "Für unsere Vorhersage verwenden wir das 'Standardsetup' von PyCaret." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from pycaret.classification import *\n", "session_1 = setup(data, target = 'type', session_id=123, experiment_name='wine_type')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "best_model = compare_models(exclude=['lightgbm'])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "models()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "lr = create_model('lr')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "tuned_lr = tune_model(lr)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "tuned_lr" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plot_model(lr, plot='boundary')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Zweites Beispiel: Vorhersage der Qualität\n", "\n", "In diesem Beispiel versuchen wir nun die Qualität des Weines vorherzusagen. Hier spricht man nun von einem `multiclass`-Problem.\n", "\n", "Zunächst müssen wir eine neue 'session' / Umbegung erstellen." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "session_2 = setup(data, target = 'quality', session_id=123, experiment_name='wine_quality')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nun vergleichen wir wieder einige Modelle" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "best_model_quality = compare_models(exclude=['lightgbm'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Das Model `Random Forest` (RF) scheint gut zu gehen. Jetzt trainieren wir eine Instanz des RF und optimieren das Model noch weiter." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "rf = create_model('rf')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "tuned_rf = tune_model(rf)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 4. Evaluierung \n", "Schauen wir uns mal die Performance unseres Models an einigen Beispielen an:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "plot_model(rf, plot = 'confusion_matrix')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plot_model(rf, plot = 'feature')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plot_model(rf, plot = 'class_report')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Unsupervised Learning\n", "![Unsupervised Learning](https://www.abtasty.com/wp-content/uploads/supervised-learning-funktionsweise-unsupervised-learning-ab-tasty.jpg)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%reset -f" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. Das Laden der Daten\n", "In diesem Beispiel schauen wir uns Gesundheitsdaten an." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from pycaret.datasets import get_data\n", "data = get_data('jewellery')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. Das Explorieren der Daten" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "data.describe()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "fig, axs = plt.subplots(ncols=3, nrows=2, figsize=(16, 9))\n", "axs[0, 0].scatter(data['Age'], data['Income'])\n", "axs[0, 0].set_xlabel('Age')\n", "axs[0, 0].set_ylabel('Income')\n", "\n", "axs[0, 1].scatter(data['Age'], data['SpendingScore'])\n", "axs[0, 1].set_xlabel('Age')\n", "axs[0, 1].set_ylabel('Spending Score')\n", "\n", "axs[0, 2].scatter(data['Age'], data['Savings'])\n", "axs[0, 2].set_xlabel('Age')\n", "axs[0, 2].set_ylabel('Savings')\n", "\n", "axs[1, 0].scatter(data['Income'], data['SpendingScore'])\n", "axs[1, 0].set_xlabel('Income')\n", "axs[1, 0].set_ylabel('Spending Score')\n", "\n", "axs[1, 1].scatter(data['Income'], data['Savings'])\n", "axs[1, 1].set_xlabel('Income')\n", "axs[1, 1].set_ylabel('Savings')\n", "\n", "axs[1, 2].scatter(data['SpendingScore'], data['Savings'])\n", "axs[1, 2].set_xlabel('SpendingScore')\n", "axs[1, 2].set_ylabel('Spending Savings')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3. Setup und Training des Models" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from pycaret.clustering import *\n", "clu1 = setup(data, ignore_features=['Country Name'], session_id=123,\n", " experiment_name='jewellery')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "models()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "kmeans = create_model('kmeans', num_clusters=4)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "meanshift = create_model('meanshift', num_clusters=4)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "kmeans_cluster = assign_model(kmeans)\n", "kmeans_cluster" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4. Visualisierung der Resultate" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plot_model(kmeans, plot = 'cluster')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5. Versuchen wir doch einfach mal 'eigene' Daten zu klassifizieren" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "unseen_data = pd.DataFrame([{\n", " 'Age': 65,\n", " 'Income': 120000,\n", " 'SpendingScore': 0.5,\n", " 'Savings': 200000,}]) \n", "\n", "kmeans_predictions = predict_model(model = kmeans, data = unseen_data)\n", "kmeans_predictions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Offene Aufgabe\n", "PyCaret hat noch viele andere Datensätze verfügbar. Schauen wir mal welche..." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%reset -f\n", "from pycaret.datasets import get_data\n", "get_data('index', verbose=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Aufgabe:__ suchen Sie sich einen Datensatz aus, untersuchen Sie diesen und bauen Sie ein ML model zur vorhersage einer Zielgröße." ] }, { "cell_type": "code", "execution_count": null, "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.10.12" } }, "nbformat": 4, "nbformat_minor": 4 }