Python中的神經網路演算法實例
神經網路是一種模擬人類神經系統的人工智慧模型,其可以透過學習資料樣本,自動識別模式並進行分類、回歸、聚類等任務。 Python作為一種簡單易學且擁有強大的科學計算庫的程式語言在開發神經網路演算法中表現出色。本文將介紹Python中神經網路演算法的實例。
Python中常用的神經網路庫有Keras、Tensorflow、PyTorch等,其中Keras庫是基於Tensorflow,能夠簡化神經網路的建構過程,因此本文將選擇Keras函式庫作為神經網路演算法的開發工具。在使用Keras庫前,需要先安裝Tensorflow庫作為後端。在命令列中執行以下指令即可安裝依賴函式庫:
pip install tensorflow pip install keras
在進行神經網路的訓練之前,需要對資料進行預處理。常見的資料預處理包括資料歸一化、資料缺失值處理、資料特徵提取等。在本文中,我們將使用鳶尾花資料集進行實例演示,該資料集包含150筆記錄,每筆記錄有四個特徵:花萼長度、花萼寬度、花瓣長度、花瓣寬度,以及對應的分類標籤:Iris Setosa、Iris Versicolour、Iris Virginica。在該資料集中,每筆記錄都是數字類型,因此我們只需要將資料歸一化。
from sklearn.datasets import load_iris from sklearn.preprocessing import MinMaxScaler import numpy as np # 导入数据集 data = load_iris().data labels = load_iris().target # 归一化数据 scaler = MinMaxScaler() data = scaler.fit_transform(data) # 将标签转化为 one-hot 向量 one_hot_labels = np.zeros((len(labels), 3)) for i in range(len(labels)): one_hot_labels[i, labels[i]] = 1
在Keras中,可以使用Sequential模型建立神經網路模型。在這個模型中,我們可以新增多個層,每個層都有一個特定的作用,例如全連接層、激活函數層、Dropout層等。在這個實例中,我們使用兩個全連接層和一個輸出層來建構神經網路模型,其中隱藏層的神經元數量為4個。
from keras.models import Sequential from keras.layers import Dense, Dropout from keras.optimizers import Adam # 构建神经网络模型 model = Sequential() model.add(Dense(4, activation='relu')) model.add(Dense(4, activation='relu')) model.add(Dense(3, activation='softmax')) # 配置优化器和损失函数 optimizer = Adam(lr=0.001) model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy'])
在訓練模型之前,我們需要將資料集分為訓練集和測試集,以便評估模型的準確率。在本實例中,我們將80%的資料用作訓練集,20%的資料用作測試集。在進行訓練時,我們需要指定批量大小、迭代次數等參數,以控制訓練速度和模型的準確度。
from sklearn.model_selection import train_test_split # 将数据集分为训练集和测试集 train_data, test_data, train_labels, test_labels = train_test_split(data, one_hot_labels, test_size=0.2) # 训练神经网络 model.fit(train_data, train_labels, batch_size=5, epochs=100) # 评估模型 accuracy = model.evaluate(test_data, test_labels)[1] print('准确率:%.2f' % accuracy)
本實例的完整程式碼如下:
from sklearn.datasets import load_iris from sklearn.preprocessing import MinMaxScaler from sklearn.model_selection import train_test_split import numpy as np from keras.models import Sequential from keras.layers import Dense, Dropout from keras.optimizers import Adam # 导入数据集 data = load_iris().data labels = load_iris().target # 归一化数据 scaler = MinMaxScaler() data = scaler.fit_transform(data) # 将标签转化为 one-hot 向量 one_hot_labels = np.zeros((len(labels), 3)) for i in range(len(labels)): one_hot_labels[i, labels[i]] = 1 # 将数据集分为训练集和测试集 train_data, test_data, train_labels, test_labels = train_test_split(data, one_hot_labels, test_size=0.2) # 构建神经网络模型 model = Sequential() model.add(Dense(4, activation='relu')) model.add(Dense(4, activation='relu')) model.add(Dense(3, activation='softmax')) # 配置优化器和损失函数 optimizer = Adam(lr=0.001) model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy']) # 训练神经网络 model.fit(train_data, train_labels, batch_size=5, epochs=100) # 评估模型 accuracy = model.evaluate(test_data, test_labels)[1] print('准确率:%.2f' % accuracy)
本文介紹了Python中神經網路演算法的實例,並以鳶尾花資料集為例進行演示。在實作過程中,我們使用了Keras函式庫和Tensorflow庫作為神經網路的開發工具,並使用了MinMaxScaler函式庫對資料進行歸一化處理。本實例的結果表明,我們的神經網路模型在準確率上達到了97.22%,證明了神經網路的有效性和應用性。
以上是Python是中的神經網路演算法實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!