12-Pipeline, Stiftung für maschinelles Lernen, realisiert automatische Prozessverarbeitung (basierend auf dem indischen Diabetes-Pima-Datensatz)

Es gibt einige Standardprozesse, die die Verarbeitung von maschinellen Lernproblemen automatisieren können. Diese Prozesse werden in scikitlearn definiert und automatisch über Pipeline ausgeführt. In diesem Abschnitt wird erläutert, wie die automatisierte Prozessverarbeitung über Pipeline implementiert wird.

  • So minimieren Sie fehlende Daten durch Pipeline.
  • So erstellen Sie eine Pipeline für die Datenvorbereitung und generative Modelle.
  • So erstellen Sie eine Pipeline für die Funktionsauswahl und generative Modelle.

Automatisierte Prozesse für maschinelles Lernen

Es gibt einige standardisierte Prozesse, die beim maschinellen Lernen übernommen werden können und die aus häufig auftretenden Problemen wie fehlenden Daten in Bewertungsrahmen usw. abgeleitet sind. In scikit-learn wird ein Tool zur Automatisierung der laufenden Prozess-Pipeline bereitgestellt . Pipeline automatisiert den gesamten maschinellen Lernprozess von der Datentransformation bis zur Modellauswertung. Leser können auf der offiziellen Website von scikit-learn das Kapitel über Pipeline lesen und so ihr Verständnis von Pipeline vertiefen.

Pipeline für Datenaufbereitung und generative Modelle

Ein sehr häufiger Fehler in der Praxis des maschinellen Lernens ist der Datenverlust zwischen dem Trainingsdatensatz und dem Bewertungsdatensatz, der die Genauigkeit der Bewertung beeinträchtigt. Um dieses Problem zu vermeiden, muss eine geeignete Möglichkeit zur Aufteilung der Daten in Trainings- und Bewertungsdatensätze vorhanden sein, die in den Datenvorbereitungsprozess einbezogen wird. Der Datenvorbereitungsprozess ist der Prozess des Verständnisses der Beziehung zwischen den Daten und dem Algorithmus. Wenn Sie beispielsweise den Trainingsdatensatz zum Trainieren des Algorithmus standardisieren und normalisieren, sollten Sie verstehen und akzeptieren, dass dies auch vom Bewertungsdatensatz beeinflusst wird . .

Pipeline kann das Datenleckproblem zwischen dem Trainingsdatensatz und dem Bewertungsdatensatz bewältigen und führt während der Datenverarbeitung normalerweise die gleiche Datenverarbeitung für alle getrennten Datenteilmengen durch, z. B. die Normalisierungsverarbeitung.

Im Folgenden wird gezeigt, wie dieser Prozess über Pipeline gehandhabt wird, der in die folgenden zwei Schritte unterteilt ist
:
(1) Normalisieren Sie die Daten.
(2) Trainieren Sie ein lineares Diskriminanzanalysemodell.
Im Bewertungsprozess des Pipeline-Algorithmusmodells mithilfe von Pipeline wird eine 10-fache Kreuzvalidierung verwendet, um die Datensätze zu trennen.

Datensatz-Download

Sein Code lautet wie folgt:


import pandas as pd
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.linear_model import LogisticRegression

from sklearn.model_selection import cross_val_score, ShuffleSplit, KFold
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

#数据预处理
path = 'D:\down\\archive\\diabetes.csv'
data = pd.read_csv(path)


#将数据转成数组
array = data.values
#分割数据,去掉最后一个标签
X = array[:, 0:8]

Y = array[:, 8]
# 分割数据集
n_splits = 10

# 随机数种子
seed = 7

kfold = KFold(n_splits=n_splits, random_state=seed, shuffle=True)


steps = []
steps.append(('Standardize', StandardScaler()))
steps.append(('lda',LinearDiscriminantAnalysis()))


model = Pipeline(steps)

result = cross_val_score(model, X, Y, cv=kfold)

print("算法评估结果:%.3f (%.3f)" % (result.mean(), result.std()))




Jeder Schritt der Pipeline wird über die Listenparameter an die Pipeline-Instanz übergeben und
der Prozess wird über die Pipeline verarbeitet. Operationsergebnis:

算法评估结果:0.767 (0.048)

Pipeline für Feature-Auswahl und generative Modelle

Auch die Funktionsauswahl ist ein Prozess, der anfällig für Datenschutzverletzungen ist. Wie bei der Datenaufbereitung muss auch die Datenstabilität bei der Feature-Auswahl gewährleistet sein. Pipeline stellt auch ein Tool (FeatureUnion) zur Verfügung, um die Datenstabilität bei der Feature-Auswahl sicherzustellen. Nachfolgend finden Sie ein Beispiel für die Aufrechterhaltung der Datenrobustheit während der Datenauswahl.

Dieser Prozess umfasst die folgenden vier Schritte:
(1) Merkmalsauswahl durch Hauptkomponentenanalyse.
(2) Merkmalsauswahl durch statistische Auswahl.
(3) Funktionsumfang.
(4) Generieren Sie ein logistisches Regressionsmodell.

In diesem Beispiel wird auch eine 10-fache Kreuzvalidierung verwendet, um die Trainings- und Bewertungsdatensätze zu trennen.

Code wie folgt anzeigen:


import pandas as pd
from sklearn.decomposition import PCA
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.feature_selection import SelectKBest
from sklearn.linear_model import LogisticRegression

from sklearn.model_selection import cross_val_score, ShuffleSplit, KFold
from sklearn.pipeline import Pipeline, FeatureUnion
from sklearn.preprocessing import StandardScaler

#数据预处理
path = 'D:\down\\archive\\diabetes.csv'
data = pd.read_csv(path)


#将数据转成数组
array = data.values
#分割数据,去掉最后一个标签
X = array[:, 0:8]

Y = array[:, 8]
# 分割数据集
n_splits = 10

# 随机数种子
seed = 7

kfold = KFold(n_splits=n_splits, random_state=seed, shuffle=True)


features = []
features.append(('PCA', PCA(n_components=3)))
#添加select_best
features.append(('select_best', SelectKBest(k=6)))

steps = []
steps.append(('feature_union', FeatureUnion(features)))

steps.append(('logistic', LogisticRegression()))

model = Pipeline(steps)

result = cross_val_score(model, X, Y, cv=kfold)

print("算法评估结果:%.3f (%.3f)" % (result.mean(), result.std()))


Laufergebnis:
Hier wird zuerst die FeatureUnion erstellt und dann als Generierungsschritt der Pipeline verwendet.

算法评估结果:0.771 (0.048)

In diesem Abschnitt wurde der Prozess der automatischen Pipeline-Datenvorbereitung und Funktionsauswahl über die Pipeline in scikit-learn erlernt. Als nächstes untersuchen wir, wie wir die Genauigkeit von Algorithmen für maschinelles Lernen für das Problem, mit dem wir uns befassen, verbessern können .

おすすめ

転載: blog.csdn.net/hai411741962/article/details/132492171