Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Contoh algoritma rangkaian saraf dalam Python

Contoh algoritma rangkaian saraf dalam Python

王林
王林asal
2023-06-10 16:48:071863semak imbas

Contoh algoritma rangkaian saraf dalam Python

Rangkaian saraf ialah model kecerdasan buatan yang menyerupai sistem saraf manusia Ia boleh mengenal pasti corak secara automatik dan melaksanakan tugas seperti pengelasan, regresi dan pengelompokan dengan mempelajari sampel data. . Sebagai bahasa pengaturcaraan yang mudah dipelajari dan mempunyai perpustakaan pengkomputeran saintifik yang berkuasa, Python cemerlang dalam membangunkan algoritma rangkaian saraf. Artikel ini akan memperkenalkan contoh algoritma rangkaian saraf dalam Python.

  1. Pasang perpustakaan yang berkaitan

Pustaka rangkaian saraf yang biasa digunakan dalam Python termasuk Keras, Tensorflow, PyTorch, dll. Pustaka Keras adalah berdasarkan Tensorflow, yang boleh memudahkan proses membina rangkaian saraf , jadi artikel ini akan memilih perpustakaan Keras sebagai alat pembangunan untuk algoritma rangkaian saraf. Sebelum menggunakan perpustakaan Keras, anda perlu memasang perpustakaan Tensorflow sebagai bahagian belakang. Jalankan arahan berikut pada baris arahan untuk memasang perpustakaan bergantung:

pip install tensorflow
pip install keras
  1. Prapemprosesan Set Data

Sebelum melatih rangkaian saraf, data perlu dipraproses . Prapemprosesan data biasa termasuk normalisasi data, pemprosesan nilai data yang tiada, pengekstrakan ciri data, dsb. Dalam artikel ini, kami akan menggunakan set data iris sebagai contoh demonstrasi Set data mengandungi 150 rekod, setiap rekod mempunyai empat ciri: panjang sepal, lebar sepal, panjang kelopak, lebar kelopak, dan label klasifikasi yang sepadan: Iris Setosa, Iris. Versicolour, Iris Virgina. Dalam set data ini, setiap rekod adalah daripada jenis angka, jadi kami hanya perlu menormalkan data.

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
  1. Membina model rangkaian saraf

Di Keras, anda boleh menggunakan model Sequential untuk membina model rangkaian saraf. Dalam model ini, kita boleh menambah berbilang lapisan, setiap lapisan mempunyai peranan tertentu, seperti lapisan bersambung sepenuhnya, lapisan fungsi pengaktifan, lapisan Tercicir, dsb. Dalam contoh ini, kami menggunakan dua lapisan bersambung sepenuhnya dan satu lapisan keluaran untuk membina model rangkaian saraf, di mana bilangan neuron dalam lapisan tersembunyi ialah 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'])
  1. Melatih model

Sebelum melatih model, kita perlu membahagikan set data kepada set latihan dan set ujian untuk menilai ketepatan model. Dalam contoh ini, kami menggunakan 80% daripada data sebagai set latihan dan 20% daripada data sebagai set ujian. Semasa latihan, kita perlu menentukan parameter seperti saiz kelompok dan bilangan lelaran untuk mengawal kelajuan latihan dan ketepatan model.

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)
  1. Kod lengkap contoh

Kod lengkap contoh ini adalah seperti berikut:

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)
  1. Kesimpulan

Artikel ini memperkenalkan contoh algoritma rangkaian saraf dalam Python dan menggunakan set data iris sebagai contoh untuk demonstrasi. Semasa proses pelaksanaan, kami menggunakan perpustakaan Keras dan perpustakaan Tensorflow sebagai alat pembangunan rangkaian saraf dan menggunakan perpustakaan MinMaxScaler untuk menormalkan data. Keputusan contoh ini menunjukkan bahawa model rangkaian saraf kami mencapai ketepatan 97.22%, membuktikan keberkesanan dan kebolehgunaan rangkaian saraf.

Atas ialah kandungan terperinci Contoh algoritma rangkaian saraf dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn