天天看點

基于遺傳算法GA算法優化BP神經網絡(Python代碼實作)

💥1 概述

    BP-GA算法的設計︰基于遺傳算法的BP神經網絡算法(以下簡稱BP-GA)就是在BP神經網絡的學習過程中,将權重和閥值描述為染色體,并選取适宜的适應函數,然後進行GA疊代,直到某種意義上的收斂.與普通BP學習算法相比,算法 BP一GA的優勢在于可以處理一些傳統方法不能處理的例子,例如不可導的特性函數(傳遞函數)或者沒有梯度資訊存在的節點.該算法涉及到兩個關鍵問題,分别是染色體位串與權系值的編碼映射和評價函數。

基于遺傳算法GA算法優化BP神經網絡(Python代碼實作)
基于遺傳算法GA算法優化BP神經網絡(Python代碼實作)
基于遺傳算法GA算法優化BP神經網絡(Python代碼實作)
基于遺傳算法GA算法優化BP神經網絡(Python代碼實作)

📚2 運作結果

基于遺傳算法GA算法優化BP神經網絡(Python代碼實作)
基于遺傳算法GA算法優化BP神經網絡(Python代碼實作)

部分代碼:

def load_data_wrapper(filename):
    lineData = []
    with open(filename) as txtData:
        lines = txtData.readlines()
        for line in lines:
            linedata = line.strip().split(',')
            lineData.append(linedata)
    return lineData
# 提出特征和标簽,特征做輸入,标簽為輸出
def splitData(dataset):
    Character= []
    Label = []
    for i in range(len(dataset)):
        Character.append([float(tk) for tk in dataset[i][1:-1]])
        Label.append(float(dataset[i][-1]))
    return Character, Label
#輸入特征資料歸一化
def max_min_norm_x(dataset):
    min_data = []
    for i in range(len(dataset)):
        min_data.append(min(dataset[i]))
    new_min = min(min_data)
    max_data = []
    for i in range(len(dataset)):
        max_data.append(max(dataset[i]))
    new_max = max(max_data)
    data = np.array(dataset)
    data_x =[]
    for x in np.nditer(data, op_flags=['readwrite']):
        #x[...] = 2 * (x -new_min)/(new_max-new_min)-1
        x[...] = (x - new_min) / (new_max - new_min)
        #print('x[...]:',x[...])
        data_x.append(x[...])
    data_x3 = []
    for index in range(0, len(data_x), 3):
        data_x3.append([data_x[index], data_x[index+1], data_x[index+2]])
    #print("data_x3:",data_x3)
    return data_x3      

🎉3 參考文獻

​​🌈​​4 Python代碼實作