91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 8KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-05-13
  • 語言: Python
  • 標簽: Python??

資源簡介

python實現(xiàn)BP神經(jīng)網(wǎng)絡(luò)的源代碼,以及使用的馬疝病數(shù)據(jù)集。

資源截圖

代碼片段和文件信息

import?numpy?as?np

def?loaddataset(filename):
fp?=?open(filename)

#存放數(shù)據(jù)
dataset?=?[]

#存放標簽
labelset?=?[]
for?i?in?fp.readlines():
a?=?i.strip().split()

#每個數(shù)據(jù)行的最后一個是標簽
dataset.append([float(j)?for?j?in?a[:len(a)-1]])
labelset.append(int(float(a[-1])))
return?dataset?labelset


#x為輸入層神經(jīng)元個數(shù),y為隱層神經(jīng)元個數(shù),z輸出層神經(jīng)元個數(shù)
def?parameter_initialization(x?y?z):

#隱層閾值
value1?=?np.random.randint(-5?5?(1?y)).astype(np.float64)

#輸出層閾值
value2?=?np.random.randint(-5?5?(1?z)).astype(np.float64)

#輸入層與隱層的連接權(quán)重
weight1?=?np.random.randint(-5?5?(x?y)).astype(np.float64)

#隱層與輸出層的連接權(quán)重
weight2?=?np.random.randint(-5?5?(y?z)).astype(np.float64)

return?weight1?weight2?value1?value2

def?sigmoid(z):
return?1?/?(1?+?np.exp(-z))

‘‘‘
weight1:輸入層與隱層的連接權(quán)重
weight2:隱層與輸出層的連接權(quán)重
value1:隱層閾值
value2:輸出層閾值
‘‘‘
def?trainning(dataset?labelset?weight1?weight2?value1?value2):
#x為步長
x?=?0.01
for?i?in?range(len(dataset)):
#輸入數(shù)據(jù)
inputset?=?np.mat(dataset[i]).astype(np.float64)
#數(shù)據(jù)標簽
outputset?=?np.mat(labelset[i]).astype(np.float64)
#隱層輸入
input1?=?np.dot(inputset?weight1).astype(np.float64)
#隱層輸出
output2?=?sigmoid(input1?-?value1).astype(np.float64)
#輸出層輸入
input2?=?np.dot(output2?weight2).astype(np.float64)
#輸出層輸出
output3?=?sigmoid(input2?-?value2).astype(np.float64)

#更新公式由矩陣運算表示
a?=?np.multiply(output3?1?-?output3)
g?=?np.multiply(a?outputset?-?output3)
b?=?np.dot(g?np.transpose(weight2))
c?=?np.multiply(output2?1?-?output2)
e?=?np.multiply(b?c)

value1_change?=?-x?*?e
value2_change?=?-x?*?g
weight1_change?=?x?*?np.dot(np.transpose(inputset)?e)
weight2_change?=?x?*?np.dot(np.transpose(output2)?g)

#更新參數(shù)
value1?+=?value1_change
value2?+=?value2_change
weight1?+=?weight1_change
weight2?+=?weight2_change
return?weight1?weight2?value1?value2

def?testing(dataset?labelset?weight1?weight2?value1?value2):
#記錄預(yù)測正確的個數(shù)
rightcount?=?0
for?i?in?range(len(dataset)):
#計算每一個樣例通過該神經(jīng)網(wǎng)路后的預(yù)測值
inputset?=?np.mat(dataset[i]).astype(np.float64)
outputset?=?np.mat(labelset[i]).astype(np.float64)
output2?=?sigmoid(np.dot(inputset?weight1)?-?value1)
output3?=?sigmoid(np.dot(output2?weight2)?-?value2)

#確定其預(yù)測標簽
if?output3?>?0.5:
flag?=?1
else:
flag?=?0
if?labelset[i]?==?flag:
rightcount?+=?1
#輸出預(yù)測結(jié)果
print(“預(yù)測為%d???實際為%d“%(flag?labelset[i]))
#返回正確率
return?rightcount?/?len(dataset)

if?__name__?==?‘__main__‘:
dataset?labelset?=?loaddataset(‘horseColicTraining.txt‘)
weight1?weight2?value1?value2?=?parameter_initialization(len(dataset[0])?len(dataset[0])?1)
for?i?in?range(1500):
weight1?weight2?value1?value2?=?trainning(dataset?labelset?weight1?weight2?value1?value2)
rate?=?testing(dataset?labelset?weight1?weight2?value1?value2)
print(“正確率為%f“%(rate))

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????3342??2019-06-08?15:34??BP神經(jīng)網(wǎng)絡(luò)(馬疝病數(shù)據(jù)集)\BP神經(jīng)網(wǎng)絡(luò).py
?????文件????????3722??2019-05-30?20:41??BP神經(jīng)網(wǎng)絡(luò)(馬疝病數(shù)據(jù)集)\horseColicTest.txt
?????文件???????60357??2019-05-30?20:41??BP神經(jīng)網(wǎng)絡(luò)(馬疝病數(shù)據(jù)集)\horseColicTraining.txt
?????目錄???????????0??2019-06-08?15:35??BP神經(jīng)網(wǎng)絡(luò)(馬疝病數(shù)據(jù)集)\

評論

共有 條評論