Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verwende ich neuronale Netze für die Regressionsanalyse in Python?

Wie verwende ich neuronale Netze für die Regressionsanalyse in Python?

王林
王林Original
2023-06-05 12:21:182205Durchsuche

Mit der Entwicklung der künstlichen Intelligenz haben neuronale Netze in vielen Bereichen, einschließlich der Regressionsanalyse, hervorragende Leistungen gezeigt. Die Python-Sprache wird häufig für maschinelles Lernen und Datenanalyseaufgaben verwendet und bietet viele Open-Source-Bibliotheken für maschinelles Lernen, wie z. B. Tensorflow und Keras. In diesem Artikel wird die Verwendung neuronaler Netze für die Regressionsanalyse in Python vorgestellt.

1. Was ist eine Regressionsanalyse?

In der Statistik ist die Regressionsanalyse eine Methode zur Analyse kausaler Zusammenhänge, bei der mathematische Modelle kontinuierlicher Variablen verwendet werden, um die Beziehung zwischen unabhängigen Variablen und abhängigen Variablen zu beschreiben. In der Regressionsanalyse wird normalerweise eine lineare Gleichung verwendet, um diese Beziehung zu beschreiben, zum Beispiel:

y = a + bx

wobei y die abhängige Variable ist, x die unabhängige Variable, a und b Konstanten in Klammern, die Linearität angeben Der Achsenabschnitt und die Steigung der Beziehung. Die Regressionsanalyse kann den Wert einer abhängigen Variablen durch Anpassen einer linearen Gleichung vorhersagen. Für Daten mit komplexen oder nichtlinearen Beziehungen können komplexere Modelle verwendet werden.

2. Anwendung eines neuronalen Netzwerks in der Regressionsanalyse

Neuronales Netzwerk ist ein komplexes mathematisches Modell, das aus mehreren Knoten besteht. Es trifft Vorhersagen über neue Daten, indem es die Muster und Muster der Eingabedaten lernt. Die Anwendung neuronaler Netze in der Regressionsanalyse erfolgt durch die Eingabe abhängiger Variablen und unabhängiger Variablen in das Netzwerk und das Training des neuronalen Netzwerks, um die Beziehung zwischen ihnen zu finden.

Anders als bei der herkömmlichen Regressionsanalyse müssen neuronale Netze bei der Datenanalyse nicht im Voraus eine lineare oder nichtlineare Gleichung definieren. Neuronale Netze können automatisch Muster und Muster finden und basierend auf den Details des Eingabedatensatzes lernen und analysieren. Dadurch können neuronale Netze eine hervorragende Leistung bei großen Datensätzen, Daten mit komplexen Mustern und Nichtlinearität zeigen.

3. Verwenden Sie Python für die Regressionsanalyse

Pythons Scikit-learn und Keras sind zwei sehr beliebte Python-Bibliotheken, die viele Tools für neuronale Netze und Regressionsanalysen bereitstellen. Hier verwenden wir das sequentielle Modell in Keras, um ein einfaches neuronales Netzwerk aufzubauen, und verwenden die train_test_split-Methode von Scikit-learn, um den bekannten Datensatz zu teilen, um unser Modell auszuwerten.

Schritt 1: Datenvorverarbeitung

Bevor Sie neuronale Netze für die Regressionsanalyse verwenden, müssen Sie die Daten vorbereiten. In diesem Artikel verwenden wir den Kraftstoffeffizienzdatensatz auf der Online-Lernplattform Kaggle. Dieser Datensatz enthält Daten zum Kraftstoffverbrauch von Fahrzeugen der US-amerikanischen National Highway Traffic Safety Administration. In den Daten enthaltene Faktoren wie Laufleistung, Zylinderanzahl, Hubraum, PS und Beschleunigung wirken sich alle auf die Kraftstoffeffizienz aus.

Wir werden die Pandas-Bibliothek verwenden, um den Datensatz zu lesen und zu verarbeiten:

import pandas as pd

#导入数据
df = pd.read_csv('auto-mpg.csv')

Schritt 2: Datenvorverarbeitung

Wir müssen den Datensatz in eine Form konvertieren, die das neuronale Netzwerk lesen kann. Wir werden die Methode get_dummies() der Pandas-Bibliothek verwenden, um die kategorialen Variablen in verwendbare Binärfelder zu zerlegen:

dataset = df.copy()
dataset = pd.get_dummies(dataset, columns=['origin'])

Als nächstes müssen wir den Datensatz in einen Trainingssatz und einen Testsatz unterteilen, um unser Modell zu bewerten. Hier entscheiden wir uns für die Verwendung der train_test_split-Methode von Scikit-learn:

from sklearn.model_selection import train_test_split

train_dataset, test_dataset = train_test_split(dataset, test_size=0.2, random_state=42)

#获取训练集的目标变量
train_labels = train_dataset.pop('mpg')

#获取测试集的目标变量
test_labels = test_dataset.pop('mpg')

Schritt 3: Erstellen Sie ein neuronales Netzwerkmodell

Wir verwenden das sequentielle Modell von Keras, um ein neuronales Netzwerkmodell zu erstellen, das zwei vollständig verbundene verborgene Schichten enthält, und verwenden die ReLU-Schicht mit Aktivierungsfunktion. Schließlich verwenden wir eine Ausgabeschicht mit einem einzelnen Knoten, um die Kraftstoffeffizienz vorherzusagen.

from tensorflow import keras
from tensorflow.keras import layers

model = keras.Sequential([
    layers.Dense(64, activation='relu', input_shape=[len(train_dataset.keys())]),
    layers.Dense(64, activation='relu'),
    layers.Dense(1)
])

Schritt 4: Kompilieren und trainieren Sie das Modell

Bevor wir das Modell trainieren, müssen wir das Modell kompilieren. Hier werden wir die Verlustfunktion und den Optimierer sowie die Bewertungsmetriken spezifizieren.

optimizer = keras.optimizers.RMSprop(0.001)

model.compile(loss='mse',
            optimizer=optimizer,
            metrics=['mae', 'mse'])

Als nächstes werden wir die fit()-Methode verwenden, um das Modell zu trainieren und es zur späteren Analyse im Verlaufsobjekt zu speichern.

history = model.fit(
  train_dataset, train_labels,
  epochs=1000, validation_split=0.2, verbose=0,
  callbacks=[keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)])

Schritt 5: Bewerten Sie das Modell

Abschließend verwenden wir den Testdatensatz, um unser Modell auszuwerten und die Ergebnisse in der Variablen y_pred zu speichern.

test_predictions = model.predict(test_dataset).flatten()

print('测试集的平均误差: ', round(abs(test_predictions - test_labels).mean(), 2))

In diesem Beispiel lieferte das von uns verwendete Modell ein Vorhersageergebnis mit einem durchschnittlichen Fehler von etwa 2,54, und wir können den Verlust im Testsatz und im Validierungssatz im Verlaufsobjekt sehen.

4. Zusammenfassung

In diesem Artikel haben wir vorgestellt, wie man neuronale Netze in Python für die Regressionsanalyse verwendet. Wir begannen mit der Datenvorverarbeitung, nutzten dann Keras- und Scikit-Learn-Bibliotheken, um unser Modell zu erstellen und zu trainieren, und bewerteten die Leistung des Modells. Neuronale Netze verfügen über eine starke Leistung und zeigen extrem hohe Ergebnisse bei der Verarbeitung großer Datensätze und komplexer nichtlinearer Probleme. Warum versuchen Sie nicht, Ihr nächstes Regressionsproblem mithilfe eines neuronalen Netzwerks zu lösen?

Das obige ist der detaillierte Inhalt vonWie verwende ich neuronale Netze für die Regressionsanalyse in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn