Einführung
In der Datenwissenschaft ist das Erstellen und Auswerten von Vorhersagemodellen eine zentrale Aufgabe. Sowohl R als auch Python bieten robuste Ökosysteme für maschinelles Lernen - R mit tidymodels (oder caret) und Python mit scikit-learn. In diesem Tutorial werden anhand des bekannten Iris-Datensatzes Beispiele gezeigt, um zu vergleichen, wie jede Sprache das Training, die Bewertung und die Vorhersage von Modellen angeht. Am Ende werden Sie die Gemeinsamkeiten und Unterschiede zwischen diesen Arbeitsabläufen verstehen, was Ihnen hilft, das beste Toolset für Ihre Projekte auszuwählen.
Vergleichendes Beispiel: Training eines Klassifizierungsmodells auf dem Iris-Datensatz
Wir werden den Iris-Datensatz in einen Trainings- und einen Testdatensatz aufteilen, ein logistisches Regressionsmodell in jeder Sprache trainieren und dann die Leistung der Modelle bewerten.
#| label: r-tidymodels
# Laden von benötigten Bibliotheken
library(tidymodels)
# Laden Sie den Iris-Datensatz
data(iris)
# Aufteilen der Daten in Trainings- und Testdatensätze
set.seed(123)
<- initial_split(iris, prop = 0.8)
iris_split <- training(iris_split)
iris_train <- testing(iris_split)
iris_test
# Definieren Sie eine logistische Regressionsmodellspezifikation für die Mehrklassenklassifizierung
<- multinom_reg() %>%
model_spec set_engine("nnet") %>%
set_mode("classification")
# Erstellen eines Arbeitsablaufs und Hinzufügen des Modells und der Formel
<- workflow() %>%
iris_workflow add_model(model_spec) %>%
add_formula(Species ~ .)
# Anpassen des Modells
<- fit(iris_workflow, data = iris_train)
iris_fit
# Machen Sie Vorhersagen für die Testmenge
<- predict(iris_fit, new_data = iris_test) %>%
iris_pred bind_cols(iris_test)
# Bewertung der Modellleistung
<- iris_pred %>% metrics(truth = Species, estimate = .pred_class)
metrics print(metrics)
Ergebnisse:
.metric .estimator .estimate
<chr> <chr> <dbl>
1 accuracy multiclass 0.967
2 kap multiclass 0.946
#| label: python-scikit-learn
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report
# Laden Sie den Iris-Datensatz
= load_iris()
iris = pd.DataFrame(iris.data, columns=iris.feature_names)
df 'Species'] = iris.target
df[
# Aufteilung des Datensatzes in einen Trainings- und einen Testsatz
= df.drop('Species', axis=1)
X = df['Species']
y = train_test_split(X, y, test_size=0.2, random_state=123)
X_train, X_test, y_train, y_test
# Initialisieren und Anpassen eines logistischen Regressionsmodells
= LogisticRegression(max_iter=200)
model
model.fit(X_train, y_train)
# Machen Sie Vorhersagen für die Testmenge
= model.predict(X_test)
pred
# Bewertung der Modellleistung
= accuracy_score(y_test, pred)
accuracy print("Accuracy:", accuracy)
print("Classification Report:")
print(classification_report(y_test, pred))
Ergebnisse:
precision recall f1-score support
0 1.00 1.00 1.00 13
1 1.00 1.00 1.00 6
2 1.00 1.00 1.00 11
accuracy 1.00 30
macro avg 1.00 1.00 1.00 30
weighted avg 1.00 1.00 1.00 30
Die Support-Spalte gibt die Anzahl der wahren Instanzen (oder tatsächlichen Beobachtungen) jeder Klasse in der Testmenge an. Es zeigt an, wie viele Proben zu jeder Klasse gehören, was für das Verständnis der Verteilung der Klassen in Ihrem Datensatz nützlich ist.
Diskussion
Workflow-Vergleich
Daten aufteilen:
In beiden Beispielen wird der Iris-Datensatz in einen Trainings- und einen Testdatensatz aufgeteilt, wobei ähnliche Zufallsauswahlansätze verwendet werden.Modell-Training:
- R (tidymodels): Verwendet einen Arbeitsablauf, der die Modellspezifikation und die formelbasierte Modellierung integriert.
- Python (scikit-learn): Implementiert einen zwingenderen Ansatz, indem ein logistisches Regressionsmodell direkt angepasst wird.
- R (tidymodels): Verwendet einen Arbeitsablauf, der die Modellspezifikation und die formelbasierte Modellierung integriert.
Auswertung:
Beide Methoden bewerten die Modellleistung, obwohl sich die Metriken und Ausgabeformate unterscheiden. Der Ansatz von tidymodels nutzt eine aufgeräumte, pipe-freundliche Syntax, während scikit-learn integrierte Funktionen für die Genauigkeit und detaillierte Klassifizierungsberichte bereitstellt.
Stärken jedes Ansatzes
tidymodels (R):
Bietet einen hochgradig modularen, konsistenten Arbeitsablauf, der sich nahtlos in andere tidyverse-Tools integrieren lässt, so dass er leicht erweitert und angepasst werden kann.scikit-learn (Python):
Bietet eine unkomplizierte, weit verbreitete Schnittstelle mit robuster Unterstützung für eine Vielzahl von Algorithmen für maschinelles Lernen und Vorverarbeitungswerkzeugen.
Schlussfolgerung
Dieser Seite-an-Seite-Vergleich zeigt, dass sowohl tidymodels in R als auch scikit-learn in Python leistungsstarke Arbeitsabläufe für die Erstellung und Bewertung von Machine-Learning-Modellen bieten. Wenn Sie die Nuancen jedes Ansatzes verstehen, können Sie die Umgebung auswählen, die am besten zu Ihren Datenwissenschaft-Anforderungen passt - oder sie sogar kombinieren, um die Stärken beider zu nutzen.
Weiterführende Literatur
- Python für R-Anwender: Umstellung auf Python für die Datenwissenschaft
- Datenmanipulation in Python vs. R: dplyr vs. pandas
- R-Syntax vs. Python-Syntax: Ein vergleichender Leitfaden
Viel Spaß beim Programmieren und beim Erforschen von Arbeitsabläufen des maschinellen Lernens sowohl in R als auch in Python!
Weitere Artikel erkunden
Hier finden Sie weitere Artikel aus derselben Kategorie, die Ihnen helfen, tiefer in das Thema einzutauchen.
Wiederverwendung
Zitat
@online{kassambara2024,
author = {Kassambara, Alboukadel},
title = {Arbeitsabläufe beim maschinellen Lernen: tidymodels vs.
scikit-learn},
date = {2024-02-13},
url = {https://www.datanovia.com/de/learn/programming/transition/machine-learning-workflows.html},
langid = {de}
}