Import
from sklearn import datasets
from sklearn.model_selection import train_test_splitEinlesen vordefinierter Datasets
Ausführlich: (Wenn nicht nur die Daten sondern auch Beschreibung usw. gebraucht wird)
iris = datasets.load_iris() #Z.B. die Iris Daten
x = iris.data
y = iris.target
class_names = iris.target_names
description = iris.DESCR
...Hier am Beispiel Iris, es gibt aber noch viele andere.
Kurz: (Wenn nur die Daten gebraucht werden)
x, y = datasets.load_iris(return_X_y=True)Einlesen eigener Daten aus CSV
Hier sollten die .csv Dateien im selben Verzeichnis liegen
import numpy as np
x=np.loadtxt('x_dataset.csv',delimiter=',')
y=np.loadtxt('y_dataset.csv',dtype='int64', delimiter=',')Beispieldaten anzeigen
num_samples = x.shape[0]
num_features = x.shape[1]
print(f"num_samples: {num_samples}")
print(f"num_features: {num_features}")Aufteilen und Mischen des Datasets
Normalerweise nimmt man 30% Testdaten und 70% Trainingsdaten
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)Normalisieren des Datasets
Man reduziert den Wertebereich behält dabei aber die Abstände (Relation/Korrelation) zwischen den Punkten bei. Alle Daten, die das Modell ab da verwendet müssen normalisiert sein (Training, Test, Prediction)
Die
y-Daten dürfen nicht normalisiert werden!
Es gibt 2 Arten von Scalern:
Min Max Scaler
- Wenn die Daten nicht als Normalverteilung vorliegen
- Neuronale Netze funktionieren mit Min Max Scaler besser
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
scaler = MinMaxScaler()
scaler.fit(x)
x_transformed = scaler.transform(x)
x_train, x_test, y_train, y_test = train_test_split(x_transformed, y, test_size=0.3)Standard Scaler
- Ziel dass die Werte einen Mittelwert von 0 und eine Standardabweichung von 1 haben
- Wenn die Daten normalverteilt sind oder einer Gaußschen Verteilung folgen Wobei der Mittelwert und die Standardabweichung ist.
from sklearn.preprocessing
import StandardScaler
scaler=StandardScaler()
scaler.fit(x)
x_transformed=scaler.transorm(x)
x_train, x_test, y_train, y_test = train_test_split(x_transformed, y, test_size=0.3)Datasets generieren
Import
from sklearn.datasets import make_classificationGenerieren
Generate a random n-class classification problem.
x,y = make_classification(
n_samples: Int = 100,
n_features: Int = 20,
*,
n_informative: Int = 2,
n_redundant: Int = 2,
n_repeated: Int = 0,
n_classes: Int = 2,
n_clusters_per_class: Int = 2,
weights: ArrayLike | None = None,
flip_y: Float = 0.01,
class_sep: Float = 1,
hypercube: bool = True,
shift: ArrayLike | None = 0,
scale: ArrayLike | None = 1,
shuffle: bool = True,
random_state: Int | RandomState | None = None
)