Dieses Notebook ist als freies Werk unter der Lizenz [Creative Commons Attribution-NonCommercial 3.0 Unported](http://creativecommons.org/licenses/by-nc/3.0/) verfügbar. Sie dürfen die Inhalte kopieren, verteilen und verändern, solange Sie die Urheber nennen und sie nicht für kommerzielle Zwecke nutzen.
Dieses Notebook ist als freies Werk unter der Lizenz [Creative Commons Attribution-NonCommercial 3.0 Unported](http://creativecommons.org/licenses/by-nc/3.0/) verfügbar. Sie dürfen die Inhalte kopieren, verteilen und verändern, solange Sie die Urheber nennen und sie nicht für kommerzielle Zwecke nutzen.
%% Cell type:markdown id:rising-farming tags:
%% Cell type:markdown id:rising-farming tags:
## Was ist es und worum geht es?
## Was ist es und worum geht es?
**Data Mining** wird wie folgt definiert:
**Data Mining** wird wie folgt definiert:
-**Definition 1 (Synonym zu *Knowledge Discovery in Databases (KDD)*)**: Prozess der (semi-) automatischen Extraktion von Wissen aus Datenbanken, das statistisch gültig, bisher unbekannt und potentiell nützlich ist. [1]
-**Definition 1 (Synonym zu *Knowledge Discovery in Databases (KDD)*)**: Prozess der (semi-) automatischen Extraktion von Wissen aus Datenbanken, das statistisch gültig, bisher unbekannt und potentiell nützlich ist. [1]
-**Definition 2 (Teil des KDD)**:
-**Definition 2 (Teil des KDD)**:
- Mustergewinnung/Modellierung
- Mustergewinnung/Modellierung
- Interpretation
- Interpretation
- Anwendung von Algorithmen, die unter gewissen Ressourcenbeschränkungen Muster/Modelle bei gegebener Faktenmenge erzeugen
- Anwendung von Algorithmen, die unter gewissen Ressourcenbeschränkungen Muster/Modelle bei gegebener Faktenmenge erzeugen
**Anwendungsfälle**
**Anwendungsfälle**
- Spamfilterung
- Spamfilterung
- Objekterkennung auf Bildern
- Objekterkennung auf Bildern
- Prüfung der Kreditwürdigkeit von potentiellen Kunden
- Prüfung der Kreditwürdigkeit von potentiellen Kunden
- Personalisierte Empfehlungen (zum Beispiel auf YouTube und Spotify)
- Personalisierte Empfehlungen (zum Beispiel auf YouTube und Spotify)
%% Cell type:markdown id:60ef8533 tags:
%% Cell type:markdown id:60ef8533 tags:
## Ziel für heute
## Ziel für heute
- kurze Einführung in das Thema
- kurze Einführung in das Thema
- Anwendungsbeispiele zeigen
- Anwendungsbeispiele zeigen
- Teaser für die Master-Lehrveranstaltungen *Knowledge Discovery in Databases (KDD)* und *Web Science*
- Teaser für die Master-Lehrveranstaltungen *Knowledge Discovery in Databases (KDD)* und *Web Science*
[1]:(Fayyad, Piatetsky-Shapiro und Smyth 1996) https://ojs.aaai.org//index.php/aimagazine/article/view/1230
[1]:(Fayyad, Piatetsky-Shapiro und Smyth 1996) https://ojs.aaai.org//index.php/aimagazine/article/view/1230
%% Cell type:markdown id:88429751 tags:
%% Cell type:markdown id:88429751 tags:
### Data Mining Tasks
### Data Mining Tasks
-**Clustering**
-**Clustering**
-**Klassifikation**
-**Klassifikation**
- Regression
- Regression
- Assoziationsregeln
- Assoziationsregeln
- ...
- ...
%% Cell type:markdown id:2f2a0afc tags:
%% Cell type:markdown id:2f2a0afc tags:
## Python Bibliotheken die wir heute benutzen:
## Python Bibliotheken die wir heute benutzen:
-[Pandas](https://pandas.pydata.org/) für die **Vorverarbeitung**
-[Pandas](https://pandas.pydata.org/) für die **Vorverarbeitung**
-[Seaborn](https://seaborn.pydata.org/) und [Matplotlib](https://matplotlib.org/) zur **Visualisierung**
-[Seaborn](https://seaborn.pydata.org/) und [Matplotlib](https://matplotlib.org/) zur **Visualisierung**
-[Scikit Learn](https://scikit-learn.org/stable/) zur **Implementierung von Algorithmen** und deren **Evaluation**
-[Scikit Learn](https://scikit-learn.org/stable/) zur **Implementierung von Algorithmen** und deren **Evaluation**
%% Cell type:code id:broadband-bathroom tags:
%% Cell type:code id:broadband-bathroom tags:
```
```
import pandas as pd
import pandas as pd
import seaborn as sns
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
```
```
%% Cell type:markdown id:91ec21a4 tags:
%% Cell type:markdown id:91ec21a4 tags:
## Wie entscheide ich mich für ein Modell?
## Wie entscheide ich mich für ein Modell?
Abgeleitet vom Ziel der Data Mining Anwendung, wird ein Modell auf Basis des jeweiligen Tasks (Klassifikation, Clustering, Regression, Assoziationsregeln, ...) gewählt. Es gibt eine Vielzahl von Modellen. Eine erste Heuristik zur Entscheidung für angemessene Modelle zum experimentieren bietet [SciKit Learn's Machine Learning Map](https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html). Allerdings, hat auch die Bibliothek von SciKit Learn seine Grenzen. Assoziationsregeln sind hier nicht implementiert und auch komplexere Ansätze die auf Neuronalen Netzen basieren, werden üblicherweise mit anderen Bibliotheken implementiert wie bspw. [PyTorch](https://pytorch.org/), [Tensorflow](https://www.tensorflow.org/) oder [Keras](https://keras.io/). Ein paar Beispiele die typischerweise verwendet werden in den jeweiligen Tasks:
Abgeleitet vom Ziel der Data Mining Anwendung, wird ein Modell auf Basis des jeweiligen Tasks (Klassifikation, Clustering, Regression, Assoziationsregeln, ...) gewählt. Es gibt eine Vielzahl von Modellen. Eine erste Heuristik zur Entscheidung für angemessene Modelle zum experimentieren bietet [SciKit Learn's Machine Learning Map](https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html). Allerdings, hat auch die Bibliothek von SciKit Learn seine Grenzen. Assoziationsregeln sind hier nicht implementiert und auch komplexere Ansätze die auf Neuronalen Netzen basieren, werden üblicherweise mit anderen Bibliotheken implementiert wie bspw. [PyTorch](https://pytorch.org/), [Tensorflow](https://www.tensorflow.org/) oder [Keras](https://keras.io/). Ein paar Beispiele die typischerweise verwendet werden in den jeweiligen Tasks:
from sklearn.model_selection import train_test_split
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.naive_bayes import GaussianNB
df = sns.load_dataset('iris')
df = sns.load_dataset('iris')
X = df.drop('species', axis=1)
X = df.drop('species', axis=1)
y = df['species']
y = df['species']
# train and test set split with a test set size of 50%
# train and test set split with a test set size of 50%
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0)
# initialize Naive Bayes Classifier
# initialize Naive Bayes Classifier
gnb = GaussianNB()
gnb = GaussianNB()
# training
# training
gnb.fit(X_train, y_train)
gnb.fit(X_train, y_train)
# predict
# predict
gnb.predict(X_test)
gnb.predict(X_test)
# Evaluation
# Evaluation
gnb.score(X_test, y_test)
gnb.score(X_test, y_test)
```
```
%% Cell type:markdown id:bae8b8bf tags:
%% Cell type:markdown id:bae8b8bf tags:
<div class="alert alert-info">
<div class="alert alert-info">
Wir haben hier *nur* die Accuracy berechnet. Generell gibt es noch weitere Metriken die zur Evaluation von Klassifikationsverfahren verwendet werden können. Beispielsweise: **Precision, Recall und F1 Score.**
Wir haben hier *nur* die Accuracy berechnet. Generell gibt es noch weitere Metriken die zur Evaluation von Klassifikationsverfahren verwendet werden können. Beispielsweise: **Precision, Recall und F1 Score.**