Maschinelles Lernen mit Python

Bild vom Autor

Die Zukunft vorherzusagen ist keine Zauberei, sondern KI.

Da wir am Rande der KI-Revolution stehen, können wir dank Python daran teilhaben.

Hier erfahren Sie, wie Sie Python und maschinelles Lernen zum Treffen von Vorhersagen nutzen können.

Wir beginnen mit den wirklichen Grundlagen und wenden dann Algorithmen auf die Daten an, um eine Vorhersage zu treffen. Lassen Sie uns anfangen!

Was ist maschinelles Lernen?

Maschinelles Lernen ist eine Methode, mit der Pc Vorhersagen treffen können. Es ist mittlerweile so beliebt, dass Sie es wahrscheinlich täglich verwenden, ohne es zu merken. Hier sind einige Technologien, die vom maschinellen Lernen profitieren:

  • Selbstfahrende Autos
  • Gesichtserkennungssystem
  • Netflix-Movie-Empfehlungssystem

Aber manchmal lassen sich KI, maschinelles Lernen und Deep Studying nicht intestine voneinander unterscheiden.
Hier ist ein Gesamtschema, das diese Begriffe am besten darstellt.

Maschinelles Lernen mit PythonMaschinelles Lernen mit Python

Einstufung des maschinellen Lernens als Anfänger

Machine-Studying-Algorithmen können mithilfe von zwei verschiedenen Methoden gruppiert werden. Bei einer dieser Methoden wird ermittelt, ob den Datenpunkten ein „Label“ zugeordnet ist. In diesem Zusammenhang bezieht sich ein „Label“ auf das spezifische Attribut oder Merkmal der Datenpunkte, die Sie vorhersagen möchten.

Wenn eine Bezeichnung vorhanden ist, wird Ihr Algorithmus als überwachter Algorithmus klassifiziert, andernfalls handelt es sich um einen unüberwachten Algorithmus.

Eine weitere Methode zum Klassifizieren von Machine-Studying-Algorithmen ist die Klassifizierung des Algorithmus. Wenn Sie das tun, können Machine-Studying-Algorithmen wie folgt gruppiert werden:

Wie Sci-kit Be taught es tat, Hier.

Maschinelles Lernen mit PythonMaschinelles Lernen mit Python

Bildquelle: scikit-learn.org

Was ist Sci-Package Be taught?

Sci-kit study ist die bekannteste Machine-Studying-Bibliothek in Python. Wir werden sie in diesem Artikel verwenden. Mit Sci-kit Be taught müssen Sie keine Algorithmen mehr von Grund auf neu definieren und können stattdessen die integrierten Funktionen von Sci-kit Be taught verwenden, was Ihnen den Aufbau von Machine Studying erleichtert.

In diesem Artikel erstellen wir ein maschinelles Lernmodell mithilfe verschiedener Regressionsalgorithmen aus dem Sci-Package Be taught. Lassen Sie uns zunächst die Regression erklären.

Was ist Regression?

Maschinelles Lernen mit PythonMaschinelles Lernen mit Python

Regression ist ein maschineller Lernalgorithmus, der Vorhersagen über kontinuierliche Werte macht. Hier sind einige Beispiele für Regression aus der Praxis:

Bevor wir Regressionsmodelle anwenden, sehen wir uns drei verschiedene Regressionsalgorithmen mit einfachen Erklärungen an.

  • A number of lineare Regression: Führt Prognosen mithilfe einer linearen Kombination mehrerer Prädiktorvariablen aus.
  • Entscheidungsbaum-Regressor: Erstellt ein baumartiges Entscheidungsmodell, um den Wert einer Zielvariablen basierend auf mehreren Eingabefunktionen vorherzusagen.
  • Assist-Vektor-Regression: Findet die am besten passende Linie (oder Hyperebene in höheren Dimensionen) mit der maximalen Anzahl von Punkten innerhalb einer bestimmten Entfernung.

Bevor Sie maschinelles Lernen anwenden, müssen Sie bestimmte Schritte befolgen. Manchmal können diese Schritte unterschiedlich sein, aber meistens umfassen sie:

  • Datenexploration und -analyse
  • Datenmanipulation
  • Trainieren und Testen aufteilen
  • Erstellen eines ML-Modells
  • Datenvisualisierung

In diesem Fall verwenden wir ein Datenprojekt von unserer Plattform, um den Preis vorherzusagen Hier.

Maschinelles Lernen mit PythonMaschinelles Lernen mit Python

Datenexploration und -analyse

In Python gibt es mehrere Funktionen. Indem Sie sie verwenden, können Sie sich mit den von Ihnen verwendeten Daten vertraut machen.

Aber zuerst sollten Sie die Bibliotheken mit diesen Funktionen laden.

import pandas as pd
import sklearn
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import RandomForestRegressor
from sklearn import svm
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score
from sklearn.metrics import mean_squared_error

Ausgezeichnet, lasst uns unsere Daten laden und sie ein wenig erkunden

knowledge = pd.read_csv('path')

Geben Sie den Pfad der Datei in Ihrem Verzeichnis ein. Python verfügt über drei Funktionen, mit denen Sie die Daten untersuchen können. Wenden wir sie nacheinander an und sehen uns das Ergebnis an.

Hier ist der Code, um die ersten fünf Zeilen unseres Datensatzes anzuzeigen.

Hier ist die Ausgabe.

Maschinelles Lernen mit PythonMaschinelles Lernen mit Python

Sehen wir uns nun unsere zweite Funktion an: Zeigen Sie die Informationen zu unserer Datensatzspalte an.

Hier ist die Ausgabe.

RangeIndex: 10000 entries, 0 to 9999
Knowledge columns (complete 8 columns):
  #     Column     Non-Null  Depend   Dtype
- - -   - - - -    - - - - - - - -   - - - -
  0     loc1       10000 non-null     object
  1     loc2       10000 non-null     object
  2     para1      10000 non-null     int64
  3     dow        10000 non-null     object
  4     para2      10000 non-null     int64
  5     para3      10000 non-null     float64
  6     para4      10000 non-null     float64
  7     value      10000 non-null     float64
 dtypes:   float64(3),   int64(2),   object(3)
 reminiscence  utilization:  625.1+ KB

Hier ist die letzte Funktion, die unsere Daten statistisch zusammenfasst. Hier ist der Code.

Hier ist die Ausgabe.

Maschinelles Lernen mit PythonMaschinelles Lernen mit Python

Jetzt sind Sie mit unseren Daten besser vertraut. Beim maschinellen Lernen sollten alle Ihre Prädiktorvariablen, additionally die Spalten, die Sie für eine Vorhersage verwenden möchten, numerisch sein.

Im nächsten Abschnitt werden wir dies sicherstellen.

Daten Manipulation

Jetzt wissen wir alle, dass wir die Spalte „Dow“ in Zahlen umwandeln sollten, aber vorher wollen wir für unsere Modelle des maschinellen Lernens prüfen, ob die anderen Spalten nur aus Zahlen bestehen.

Wir haben zwei verdächtige Spalten, loc1 und loc2, weil wir, wie Sie an der Ausgabe der Funktion information() sehen können, nur zwei Spalten vom Typ Objektdaten haben, die numerische und Zeichenfolgenwerte enthalten können.

Lassen Sie uns diesen Code zur Überprüfung verwenden;

knowledge("loc1").value_counts()

Hier ist die Ausgabe.

loc1
2	1607
0	1486
1	1223
7	1081
3	945
5	846
4	773
8	727
9	690
6	620
S	  1
T	  1
Identify:  depend,  dtype:  int64

Jetzt können Sie diese Zeilen mithilfe des folgenden Codes entfernen.

knowledge = knowledge((knowledge("loc1") != "S") & (knowledge("loc1") != "T"))

Wir müssen jedoch sicherstellen, dass die andere Spalte, loc2, keine Zeichenfolgenwerte enthält. Verwenden wir den folgenden Code, um sicherzustellen, dass alle Werte numerisch sind.

knowledge("loc2") = pd.to_numeric(knowledge("loc2"), errors="coerce")
knowledge("loc1") = pd.to_numeric(knowledge("loc1"), errors="coerce")
knowledge.dropna(inplace=True)

Am Ende des obigen Codes verwenden wir die Funktion dropna(), da die Konvertierungsfunktion von Pandas „na“ in nicht numerische Werte umwandelt.

Ausgezeichnet. Wir können dieses Drawback lösen. Lassen Sie uns die Wochentagsspalten in Zahlen umwandeln. Hier ist der Code dafür:

# Assuming knowledge is already loaded and 'dow' column incorporates day names
# Map 'dow' to numeric codes
days_of_week = {'Mon': 1, 'Tue': 2, 'Wed': 3, 'Thu': 4, 'Fri': 5, 'Sat': 6, 'Solar': 7}
knowledge('dow') = knowledge('dow').map(days_of_week)

# Invert the days_of_week dictionary
week_days = {v: ok for ok, v in days_of_week.objects()}

# Convert dummy variable columns to integer kind
dow_dummies = pd.get_dummies(knowledge('dow')).rename(columns=week_days).astype(int)

# Drop the unique 'dow' column
knowledge.drop('dow', axis=1, inplace=True)

# Concatenate the dummy variables
knowledge = pd.concat((knowledge, dow_dummies), axis=1)

knowledge.head()

In diesem Code definieren wir Wochentage, indem wir für jeden Tag im Wörterbuch eine Nummer definieren und dann einfach die Tagesnamen durch diese Nummern ersetzen. Hier ist die Ausgabe.

Maschinelles Lernen mit PythonMaschinelles Lernen mit Python

Jetzt sind wir quick da.

Practice-Take a look at-Aufteilung

Bevor Sie ein maschinelles Lernmodell anwenden, müssen Sie Ihre Daten in Trainings- und Testdatensätze aufteilen. Auf diese Weise können Sie die Effizienz Ihres Modells objektiv beurteilen, indem Sie es mit dem Trainingsdatensatz trainieren und dann seine Leistung mit dem Testdatensatz bewerten, den das Modell noch nicht gesehen hat.

X = knowledge.drop('value', axis=1)  # Assuming 'value' is the goal variable
y = knowledge('value')
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Erstellen eines Modells für maschinelles Lernen

Jetzt ist alles bereit. In dieser Section wenden wir die folgenden Algorithmen gleichzeitig an.

  • A number of lineare Regression
  • Entscheidungsbaum-Regression
  • Assist-Vektor-Regression

Wenn Sie Anfänger sind, erscheint Ihnen dieser Code möglicherweise kompliziert, aber seien Sie versichert, das ist er nicht. Im Code weisen wir zunächst Modellnamen und ihre entsprechenden Funktionen aus scikit-learn dem Wörterbuch des Modells zu.

Als Nächstes erstellen wir ein leeres Wörterbuch namens „outcomes“, um diese Ergebnisse zu speichern. In der ersten Schleife wenden wir alle Machine-Studying-Modelle gleichzeitig an und bewerten sie mithilfe von Metriken wie R^2 und MSE, die die Leistung der Algorithmen bewerten.

In der letzten Schleife drucken wir die Ergebnisse aus, die wir gespeichert haben. Hier ist der Code

# Initialize the fashions
fashions = {
    "A number of Linear Regression": LinearRegression(),
    "Resolution Tree Regression": DecisionTreeRegressor(random_state=42),
    "Assist Vector Regression": SVR()
}

# Dictionary to retailer the outcomes
outcomes = {}

# Match the fashions and consider
for title, mannequin in fashions.objects():
    mannequin.match(X_train, y_train)  # Practice the mannequin
    y_pred = mannequin.predict(X_test)  # Predict on the check set
    
    # Calculate efficiency metrics
    mse = mean_squared_error(y_test, y_pred)
    r2 = r2_score(y_test, y_pred)
    
    # Retailer outcomes
    outcomes(title) = {'MSE': mse, 'R^2 Rating': r2}

# Print the outcomes
for model_name, metrics in outcomes.objects():
    print(f"{model_name} - MSE: {metrics('MSE')}, R^2 Rating: {metrics('R^2 Rating')}")

Hier ist die Ausgabe.

A number of Linear Regression - MSE: 35143.23011545407, R^2 Rating: 0.5825954700994046
Resolution Tree Regression - MSE: 44552.00644904675, R^2 Rating: 0.4708451884787034
Assist Vector Regression - MSE: 73965.02477382126, R^2 Rating: 0.12149975134965318

Datenvisualisierung

Um die Ergebnisse besser zu sehen, visualisieren wir die Ausgabe.

Hier ist der Code, in dem wir zuerst RMSE (Quadratwurzel von MSE) berechnen und die Ausgabe visualisieren.

import matplotlib.pyplot as plt
from math import sqrt

# Calculate RMSE for every mannequin from the saved MSE and put together for plotting
rmse_values = (sqrt(metrics('MSE')) for metrics in outcomes.values())
model_names = record(outcomes.keys())

# Create a horizontal bar graph for RMSE
plt.determine(figsize=(10, 5))
plt.barh(model_names, rmse_values, colour="skyblue")
plt.xlabel('Root Imply Squared Error (RMSE)')
plt.title('Comparability of RMSE Throughout Regression Fashions')
plt.present()

Hier ist die Ausgabe.

Maschinelles Lernen mit PythonMaschinelles Lernen mit Python

Datenprojekte

Bevor wir zum Abschluss kommen, hier ein paar Datenprojekte, mit denen Sie beginnen können.

Wenn Sie Datenprojekte zu interessanten Datensätzen durchführen möchten, finden Sie hier einige Datensätze, die für Sie interessant sein könnten:

Abschluss

Unsere Ergebnisse könnten besser sein, da zu viele Schritte erforderlich sind, um die Effizienz des Modells zu verbessern, aber wir haben hier einen guten Begin hingelegt. Schauen Sie sich an Offizielles Dokument von Sci-kit Be taught um zu sehen, was Sie noch tun können.

Natürlich müssen Sie nach dem Lernen immer wieder Datenprojekte durchführen, um Ihre Fähigkeiten zu verbessern und noch ein paar weitere Dinge zu lernen.

Nate Rosidi ist Datenwissenschaftler und arbeitet in der Produktstrategie. Er ist außerdem außerordentlicher Professor für Analytik und Gründer von StrataScratch, einer Plattform, die Datenwissenschaftlern mit echten Interviewfragen von High-Unternehmen bei der Vorbereitung auf ihre Vorstellungsgespräche hilft. Nate schreibt über die neuesten Traits auf dem Arbeitsmarkt, gibt Interviewtipps, teilt Datenwissenschaftsprojekte und deckt alles ab, was mit SQL zu tun hat.



Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert