首頁 >後端開發 >Python教學 >如何在Python中使用神經網路進行迴歸分析?

如何在Python中使用神經網路進行迴歸分析?

王林
王林原創
2023-06-05 12:21:182248瀏覽

隨著人工智慧的發展,神經網路已經在許多領域表現出了卓越的性能,其中包括回歸分析。 Python語言常被用於機器學習和資料分析任務,並提供了許多開源的機器學習函式庫,例如Tensorflow和Keras等。本文將介紹如何在Python中使用神經網路進行迴歸分析。

一、什麼是迴歸分析?

在統計學中,迴歸分析是一種分析因果關係的方法,透過使用連續變數的數學模型,來描述自變數和因變數之間的關係。在迴歸分析中,通常使用線性方程式來描述這種關係,例如:

y = a bx

#其中,y是因變量,x是自變量,a和b是圓括號中的常數,表示線性關係的截距和斜率。迴歸分析可以透過擬合線性方程,來預測因變數的值,對於具有複雜性或非線性關係的數據,可以使用更複雜的模型。

二、神經網路在迴歸分析中的應用

神經網路是一種由多個節點組成的複雜數學模型,透過學習輸入資料的模式和規律,來對新數據做出預測。神經網路在迴歸分析中的應用,是透過將因變數和自變數輸入至網路中,並透過訓練神經網路來找到它們之間的關係。

與傳統迴歸分析不同的是,神經網路在分析資料時,不需要先行定義一個線性或非線性的方程式。神經網路可以自動找到模式和規律,並在根據輸入資料集的細節來進行學習和分析。這使得神經網路在大規模資料集、模式複雜和非線性的資料上表現出了優異的效能。

三、使用Python進行迴歸分析

Python的Scikit-learn和Keras是兩個非常受歡迎的Python函式庫,它們提供了許多關於神經網路和迴歸分析的工具。在這裡,我們將使用Keras中的Sequential模型來建立一個簡單的神經網絡,並使用Scikit-learn的train_test_split方法,將已知資料集進行劃分,來評估我們的模型。

步驟1:資料預處理

在開始使用神經網路進行迴歸分析之前,需要先準備好資料。在本文中,我們將使用線上學習平台Kaggle上的燃油效率資料集。這個資料集包含了來自美國國家公路交通安全管理局的車輛經濟燃料資料。數據中包含了各種因素,例如碼數、汽缸數、排氣量、馬力和加速度等,這些因素都將影響燃料效率。

我們將使用Pandas函式庫來讀取和處理資料集:

import pandas as pd

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

步驟2:資料預處理

我們需要將資料集轉換為神經網路可以讀取的形式。我們將使用Pandas庫的get_dummies()方法將分類變數分解為可以使用的二進位欄位:

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

接下來,我們需要將資料集劃分為訓練集和測試集,以評估我們的模型。在這裡,我們選擇使用Scikit-learn的train_test_split方法:

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')

步驟3:建立神經網路模型

我們將使用Keras的Sequential模型來建立神經網路模型,該模型包含了兩個全連接的隱藏層,並使用具有啟動功能的ReLU層。最後,我們使用一個具有單一節點的輸出層來預測燃油效率。

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)
])

步驟4:編譯和訓練模型

在訓練模型之前,我們需要編譯模型。在這裡,我們將指定損失函數(loss function)和優化器(optimizer)以及評估指標(metrics)。

optimizer = keras.optimizers.RMSprop(0.001)

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

接下來,我們將使用fit()方法來訓練模型,並將其儲存到history物件中,以便後續分析。

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

步驟5:評估模型

最後,我們將使用測試資料集來評估我們的模型,並將結果儲存到y_pred變數中。

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

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

在這個例子中,我們使用的模型產生了一個平均誤差約為2.54的預測結果,並且我們可以在history物件中看到測試集和驗證集的損失情況。

四、總結

在本文中,我們介紹如何使用Python中的神經網路進行迴歸分析。我們從資料預處理開始,然後利用Keras和Scikit-learn庫來建立和訓練我們的模型,並評估了模型的性能。神經網路具有強大的效能,在處理大規模資料集和複雜非線性問題上表現出極高的效果。在您的下一個迴歸問題上,為什麼不試試使用神經網路來解決問題呢?

以上是如何在Python中使用神經網路進行迴歸分析?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn