主頁(yè) > 知識(shí)庫(kù) > python機(jī)器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)

python機(jī)器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)

熱門標(biāo)簽:315電話機(jī)器人廣告 浙江電銷卡外呼系統(tǒng)好用嗎 地圖標(biāo)注的意義點(diǎn) 房產(chǎn)電銷外呼系統(tǒng) 南京銷售外呼系統(tǒng)軟件 蓋州市地圖標(biāo)注 地圖制圖標(biāo)注位置改變是移位嗎 上海機(jī)器人外呼系統(tǒng)哪家好 地圖標(biāo)注微信發(fā)送位置不顯示

手寫數(shù)字識(shí)別算法

import pandas as pd
import numpy as np
from sklearn.neural_network import MLPRegressor  #從sklearn的神經(jīng)網(wǎng)絡(luò)中引入多層感知器

data_tr = pd.read_csv('BPdata_tr.txt')  # 訓(xùn)練集樣本
data_te = pd.read_csv('BPdata_te.txt')  # 測(cè)試集樣本
X=np.array([[0.568928884039633],[0.379569493792951]]).reshape(1, -1)#預(yù)測(cè)單個(gè)樣本

#參數(shù):hidden_layer_sizes中間層的個(gè)數(shù)  activation激活函數(shù)默認(rèn)relu  f(x)= max(0,x)負(fù)值全部舍去,信號(hào)相應(yīng)正向傳播效果好
#random_state隨機(jī)種子,max_iter最大迭代次數(shù),即結(jié)束,learning_rate_init學(xué)習(xí)率,學(xué)習(xí)速度,步長(zhǎng)
model = MLPRegressor(hidden_layer_sizes=(10,), activation='relu',random_state=10, max_iter=8000, learning_rate_init=0.3)  # 構(gòu)建模型,調(diào)用sklearn實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)算法
model.fit(data_tr.iloc[:, :2], data_tr.iloc[:, 2])    # 模型訓(xùn)練(將輸入數(shù)據(jù)x,結(jié)果y放入多層感知器擬合建立模型) .iloc是按位置取數(shù)據(jù)
pre = model.predict(data_te.iloc[:, :2])              # 模型預(yù)測(cè)(測(cè)試集數(shù)據(jù)預(yù)測(cè),將實(shí)際結(jié)果與預(yù)測(cè)結(jié)果對(duì)比)

pre1 = model.predict(X)#預(yù)測(cè)單個(gè)樣本,實(shí)際值0.467753075712819
err = np.abs(pre - data_te.iloc[:, 2]).mean()# 模型預(yù)測(cè)誤差(|預(yù)測(cè)值-實(shí)際值|再求平均)

print("模型預(yù)測(cè)值:",pre,end='\n______________________________\n')
print('模型預(yù)測(cè)誤差:',err,end='\n++++++++++++++++++++++++++++++++\n')
print("單個(gè)樣本預(yù)測(cè)值:",pre1,end='\n++++++++++++++++++++++++++++++++\n')

#查看相關(guān)參數(shù)。
print('權(quán)重矩陣:','\n',model.coefs_) #list,length n_layers - 1,列表中的第i個(gè)元素表示對(duì)應(yīng)于層i的權(quán)重矩陣。
print('偏置矩陣:','\n',model.intercepts_) #list,length n_layers - 1,列表中的第i個(gè)元素表示對(duì)應(yīng)于層i + 1的偏置矢量。

數(shù)字手寫識(shí)別系統(tǒng)

#數(shù)字手寫識(shí)別系統(tǒng),DBRHD和MNIST是數(shù)字手寫識(shí)別的數(shù)據(jù)集
import numpy as np  # 導(dǎo)入numpy工具包
from os import listdir  # 使用listdir模塊,用于訪問(wèn)本地文件
from sklearn.neural_network import MLPClassifier #從sklearn的神經(jīng)網(wǎng)絡(luò)中引入多層感知器

#自定義函數(shù),將圖片轉(zhuǎn)換成向量
def img2vector(fileName):
    retMat = np.zeros([1024], int)  # 定義返回的矩陣,大小為1*1024
    fr = open(fileName)  # 打開包含32*32大小的數(shù)字文件
    lines = fr.readlines()  # 讀取文件的所有行
    for i in range(32):  # 遍歷文件所有行
        for j in range(32):  # 并將01數(shù)字存放在retMat中
            retMat[i * 32 + j] = lines[i][j]
    return retMat

#自定義函數(shù),獲取數(shù)據(jù)集
def readDataSet(path):
    fileList = listdir(path)  # 獲取文件夾下的所有文件
    numFiles = len(fileList)  # 統(tǒng)計(jì)需要讀取的文件的數(shù)目
    dataSet = np.zeros([numFiles, 1024], int)  # 用于存放所有的數(shù)字文件juzheng
    hwLabels = np.zeros([numFiles, 10])  # 用于存放對(duì)應(yīng)的one-hot標(biāo)簽(每個(gè)文件都對(duì)應(yīng)一個(gè)10列的矩陣)
    for i in range(numFiles):  # 遍歷所有的文件
        filePath = fileList[i]  # 獲取文件名稱/路徑
        digit = int(filePath.split('_')[0])  # 通過(guò)文件名獲取標(biāo)簽,split返回分割后的字符串列表
        hwLabels[i][digit] = 1.0  # 將對(duì)應(yīng)的one-hot標(biāo)簽置1 .one-hot編碼,又稱獨(dú)熱編碼、一位有效編碼.one-hot向量將類別變量轉(zhuǎn)換為機(jī)器學(xué)習(xí)算法易于利用的一種形式的過(guò)程,這個(gè)向量的表示為一項(xiàng)屬性的特征向量,也就是同一時(shí)間只有一個(gè)激活點(diǎn)(不為0),這個(gè)向量只有一個(gè)特征是不為0的,其他都是0,特別稀疏。
        dataSet[i] = img2vector(path + '/' + filePath)  # 讀取文件內(nèi)容
    return dataSet, hwLabels


#讀取訓(xùn)練數(shù)據(jù),并訓(xùn)練模型
train_dataSet, train_hwLabels = readDataSet('trainingDigits')

#參數(shù):hidden_layer_sizes中間層的個(gè)數(shù),activation激活函數(shù) logistic:f(x)=1/(1+exp(-x))將值映射在一個(gè)0~1的范圍內(nèi)。
#solver權(quán)重優(yōu)化的求解器adam默認(rèn),用于較大的數(shù)據(jù)集,lbfgs用于小型的數(shù)據(jù)集收斂的更快效果更好。max_iter迭代次數(shù)越多越準(zhǔn)確
clf = MLPClassifier(hidden_layer_sizes=(50,),activation='logistic', solver='adam',learning_rate_init=0.001, max_iter=700)
clf.fit(train_dataSet, train_hwLabels)#數(shù)據(jù)集,標(biāo)簽,擬合

# 讀取測(cè)試數(shù)據(jù)對(duì)測(cè)試集進(jìn)行預(yù)測(cè)
dataSet, hwLabels = readDataSet('testDigits')
res = clf.predict(dataSet) #預(yù)測(cè)結(jié)果是標(biāo)簽([numFiles, 10]的矩陣) 
print("測(cè)試數(shù)據(jù)",dataSet,'\n___________________________________\n')
print("測(cè)試標(biāo)簽",hwLabels,'\n++++++++++++++++++++++++++++++++++++++++\n')
print("測(cè)試結(jié)果",res)


error_num = 0  # 統(tǒng)計(jì)預(yù)測(cè)錯(cuò)誤的數(shù)目
num = len(dataSet)  # 測(cè)試集的數(shù)目
for i in range(num):  # 遍歷預(yù)測(cè)結(jié)果
    # 比較長(zhǎng)度為10的數(shù)組,返回包含01的數(shù)組,0為不同,1為相同
    # 若預(yù)測(cè)結(jié)果與真實(shí)結(jié)果相同,則10個(gè)數(shù)字全為1,否則不全為1
    if np.sum(res[i] == hwLabels[i])  10:
        error_num += 1
print("Total num:", num, " Wrong num:",error_num, "  WrongRate:", error_num / float(num))

可視化MNIST是數(shù)字手寫識(shí)別的數(shù)據(jù)集

from keras.datasets import mnist#導(dǎo)入數(shù)字手寫識(shí)別系統(tǒng)的數(shù)據(jù)集
import matplotlib.pyplot as plt

(X_train, y_train), (X_test, y_test) = mnist.load_data()
#以2*2(2行2列)圖的方式展現(xiàn)
plt.subplot(221)
plt.imshow(X_train[1], cmap=plt.get_cmap('gray_r'))#白底黑字
plt.subplot(222)
plt.imshow(X_train[2], cmap=plt.get_cmap('gray'))#黑底白字
plt.subplot(223)
plt.imshow(X_train[3], cmap=plt.get_cmap('gray'))
plt.subplot(224)
plt.imshow(X_train[4], cmap=plt.get_cmap('gray'))
# show the plot
plt.show()

到此這篇關(guān)于python機(jī)器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)的文章就介紹到這了,更多相關(guān)python神經(jīng)網(wǎng)絡(luò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • numpy創(chuàng)建神經(jīng)網(wǎng)絡(luò)框架
  • 教你使用Python建立任意層數(shù)的深度神經(jīng)網(wǎng)絡(luò)
  • python神經(jīng)網(wǎng)絡(luò)編程之手寫數(shù)字識(shí)別
  • pytorch動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò)(擬合)實(shí)現(xiàn)
  • Python如何使用神經(jīng)網(wǎng)絡(luò)進(jìn)行簡(jiǎn)單文本分類
  • pytorch之深度神經(jīng)網(wǎng)絡(luò)概念全面整理

標(biāo)簽:日照 臨汾 貴州 克拉瑪依 陽(yáng)泉 赤峰 金華 雙鴨山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python機(jī)器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)》,本文關(guān)鍵詞  python,機(jī)器,學(xué),習(xí)之,神經(jīng)網(wǎng)絡(luò),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python機(jī)器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于python機(jī)器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章