Arbeitsabläufe beim maschinellen Lernen: tidymodels vs. scikit-learn

Vergleich von ML-Modell-Training, Auswertung und Vorhersage in R und Python

Vergleich der Arbeitsabläufe beim maschinellen Lernen in R und Python durch Untersuchung von tidymodels in R und scikit-learn in Python. In diesem Tutorial werden Beispiele für das Training, die Bewertung und die Vorhersage von Modellen anhand des Iris-Datensatzes nebeneinander gestellt, um die wichtigsten Unterschiede und Stärken der einzelnen Ökosysteme hervorzuheben.

Programmierung
Autor:in
Zugehörigkeit
Veröffentlichungsdatum

13. Februar 2024

Geändert

29. April 2025

Schlüsselwörter

tidymodels vs scikit-learn, Maschinelles Lernen in R und Python, caret vs scikit-learn, ML-Workflows in der Datenwissenschaft, Maschinelles Lernen in Python und R

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)
iris_split <- initial_split(iris, prop = 0.8)
iris_train <- training(iris_split)
iris_test <- testing(iris_split)

# Definieren Sie eine logistische Regressionsmodellspezifikation für die Mehrklassenklassifizierung
model_spec <- multinom_reg() %>% 
  set_engine("nnet") %>% 
  set_mode("classification")

# Erstellen eines Arbeitsablaufs und Hinzufügen des Modells und der Formel
iris_workflow <- workflow() %>% 
  add_model(model_spec) %>% 
  add_formula(Species ~ .)

# Anpassen des Modells
iris_fit <- fit(iris_workflow, data = iris_train)

# Machen Sie Vorhersagen für die Testmenge
iris_pred <- predict(iris_fit, new_data = iris_test) %>% 
  bind_cols(iris_test)

# Bewertung der Modellleistung
metrics <- iris_pred %>% metrics(truth = Species, estimate = .pred_class)
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
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['Species'] = iris.target

# Aufteilung des Datensatzes in einen Trainings- und einen Testsatz
X = df.drop('Species', axis=1)
y = df['Species']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=123)

# Initialisieren und Anpassen eines logistischen Regressionsmodells
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)

# Machen Sie Vorhersagen für die Testmenge
pred = model.predict(X_test)

# Bewertung der Modellleistung
accuracy = accuracy_score(y_test, pred)
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
Hinweis

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.
  • 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

Viel Spaß beim Programmieren und beim Erforschen von Arbeitsabläufen des maschinellen Lernens sowohl in R als auch in Python!

Weitere Artikel erkunden

Hinweis

Hier finden Sie weitere Artikel aus derselben Kategorie, die Ihnen helfen, tiefer in das Thema einzutauchen.

placeholder

placeholder
Keine Treffer
Zurück nach oben

Wiederverwendung

Zitat

Mit BibTeX zitieren:
@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}
}
Bitte zitieren Sie diese Arbeit als:
Kassambara, Alboukadel. 2024. “Arbeitsabläufe beim maschinellen Lernen: tidymodels vs. scikit-learn.” February 13, 2024. https://www.datanovia.com/de/learn/programming/transition/machine-learning-workflows.html.