Import


from sklearn import datasets
from sklearn.model_selection import train_test_split

Einlesen 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_classification

Generieren

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
)