BP演算法的python實現 男女生分類器

2021-10-10 08:09:25 字數 2486 閱讀 4293

模式識別課上學習了bp演算法,並用bp演算法實現了男女生分類器,之前因為時間匆忙只是簡單記錄了一下**實現,現在重溫一下發現**中還是存在著一些問題,於是修改了一下bug,也當做是複習吧。本文完整**和資料集可以到這裡:bp演算法的python實現獲得。

bp演算法是神經網路中十分經典的演算法之一,要把它解釋清楚實在需要很多時間,我只想重點講一下基於bp演算法的男女生分類器python實現,理論方面推薦看知乎大佬的講解:神經網路,bp演算法的理解與推導。

採用bp神經網路設計男女生分類器。採用的特徵包括身高、體重、鞋碼、50m成績、肺活量共五個特徵,bp神經網路包含乙個隱層,隱層結點數為5。要求:自行編寫**完成後向傳播演算法,採用交叉驗證的方式實現對於效能指標的評判(包含se,sp,acc和auc,auc的計算可以基於平台的軟體包)。

file

: dataset.py

***,birthplace,height,weight,shoesize,_50m,pulmonary

1,湖北,

163,51,

41,7.5,

2500

1,河南,

171,64,

41,7.5,

3500

1,雲南,

182,68,

45,7.8,

4900

1,廣西,

172,66,

42,8.2,

4800

1,四川,

185,80,

44,8.5,

5100

0,河北,

164,47,

38,9,

2500

0,河南,

160,46,

38,9,

2500..

.

資料處理

資料處理定義了兩個函maxminnormloaddataset,分別用於資料讀取和資料集歸一化。資料集檔案放在同級目錄dataset.csv檔案中,利用pandas庫讀取,並選出需要的特徵列,此處不需要籍貫特徵。返回dataset,dataset[0]為資料標籤,0代表女生,1代表男生。

# 歸一化函式

defmaxminnorm

(array)

: maxcols=array.

max(axis=0)

mincols=array.

min(axis=0)

data_shape = array.shape

data_rows = data_shape[0]

data_cols = data_shape[1]

t=np.empty(

(data_rows,data_cols)

)for i in

range

(data_cols)

: t[

:,i]

=(array[

:,i]

-mincols[i])/

(maxcols[i]

-mincols[i]

)return t

# 資料集讀取與處理

defloaddataset

(filepath)

:"""

載入資料集,對資料進行預處理,並打亂資料集

filepath: 資料集檔案存放路徑

"""pydata = pd.read_csv(filepath)

# 填充預設值--用各列平均數補全

pydata[

'shoesize'

]= pydata[

'shoesize'

].fillna(pydata[

'shoesize'

].mean())

pydata[

'_50m'

]= pydata[

'_50m'

].fillna(pydata[

'_50m'

].mean())

pydata[

'pulmonary'

]= pydata[

'pulmonary'

].fillna(pydata[

'pulmonary'

].mean())

data = pydata.dropna(

) data = data.iloc[:,

[0,1

,2,3

,4,5

,6]]

.values

dataset = data[:,

[0,2

,3,4

,5,6

]]dataset = np.array(dataset)

dataset = maxminnorm(dataset)

return dataset

兩個部落格維護起來實在太麻煩了,需要完整**的請倉庫自取:bp演算法的python實現。完整內容見個人部落格:修行小生

Python簡單實現BP演算法

啟用函式為relu函式 import numpy as np n 64 樣本數 d in 1000 輸入維度 h 100 隱藏層維度 d out 10 輸出維度 隨機建立一些訓練資料 x np.random.randn n,d in y np.random.randn n,d out 隨機初始權重 ...

BP 演算法手動實現

github部落格傳送門 csdn部落格傳送門 numpy matplotlib 深度學習基礎網路模型 mnist手寫體識別資料集 import numpy as np import matplotlib.pyplot as plt x np.linspace 1,100,100 造出一些100個偽...

標準BP演算法用Python程式設計實現

1.需要匯入兩個模組 import pandas as pd import numpy as np 2.定於啟用函式 def sigmoid x return1 1 np.exp x 3.標準bp演算法 def bp x train,y train,numb,inta x train,y train...