丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能 正文
發(fā)私信給廖宇環(huán)
發(fā)送

2

神經(jīng)網(wǎng)絡(luò)初學(xué)者指南:基于Scikit-Learn的Python模塊

本文作者: 廖宇環(huán) 2016-11-07 10:18
導(dǎo)語(yǔ):我們將了解神經(jīng)網(wǎng)絡(luò)如何工作,以及如何使用Python編程語(yǔ)言和最新版本的 SciKit-Learn 實(shí)現(xiàn)它們。

編者按:這個(gè)帖子概述了使用 Scikit-learn 在 Python 中設(shè)置神經(jīng)網(wǎng)絡(luò)的方法,其最新版本現(xiàn)在已經(jīng)內(nèi)置支持神經(jīng)網(wǎng)絡(luò)模型。作者 Jose Portilla 是一名數(shù)據(jù)科學(xué)顧問(wèn)和培訓(xùn)師,目前在 Udemy 上教授在線課程。 他也是Pierian Data Inc.數(shù)據(jù)科學(xué)部門(mén)的主管。雷鋒網(wǎng)編譯,未經(jīng)許可不得轉(zhuǎn)載。

對(duì)于 Python 來(lái)說(shuō),最受歡迎的機(jī)器學(xué)習(xí)圖書(shū)館是 SciKit Learn。 前幾天最新版本(0.18)剛剛發(fā)布,現(xiàn)在已內(nèi)置支持神經(jīng)網(wǎng)絡(luò)模型。 對(duì) Python 的基本理解對(duì)于弄明白這篇文章是必要的,有一些關(guān)于Sci-Kit Learn 的使用經(jīng)驗(yàn)也是十分有幫助的(但不是必要)。

另外,作為一個(gè)快速附注,我寫(xiě)了一篇詳解版的姐妹文章,不過(guò)是以 R 語(yǔ)言編寫(xiě)的(可點(diǎn)擊此處查看)。

| 神經(jīng)網(wǎng)絡(luò)

神經(jīng)網(wǎng)絡(luò)是一個(gè)試圖模仿自然生物神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)模式的機(jī)器學(xué)習(xí)框架。 生物神經(jīng)網(wǎng)絡(luò)具有相互連接的神經(jīng)元,神經(jīng)元帶有接受輸入信號(hào)的樹(shù)突,然后基于這些輸入,它們通過(guò)軸突向另一個(gè)神經(jīng)元產(chǎn)生輸出信號(hào)。 我們將嘗試通過(guò)使用人工神經(jīng)網(wǎng)絡(luò)(ANN)來(lái)模擬這個(gè)過(guò)程,我們現(xiàn)在將其稱(chēng)為神經(jīng)網(wǎng)絡(luò)。 創(chuàng)建神經(jīng)網(wǎng)絡(luò)的過(guò)程從最基本的形式單個(gè)感知器開(kāi)始。

| 感知器

讓我們通過(guò)探討感知器開(kāi)始我們的討論吧。 感知器具有一個(gè)或多個(gè)輸入、偏置、激活函數(shù)和單個(gè)輸出。 感知器接收輸入,將它們乘以一些權(quán)重,然后將它們傳遞到激活函數(shù)以產(chǎn)生輸出。 有許多激活函數(shù)可供選擇,例如邏輯函數(shù),三角函數(shù),階躍函數(shù)等。我們還確保向感知器添加偏差,這避免了所有輸入可能等于零的問(wèn)題(意味著沒(méi)有乘權(quán)重會(huì)有影響)。 檢查下面的圖表感知器的可視化: 神經(jīng)網(wǎng)絡(luò)初學(xué)者指南:基于Scikit-Learn的Python模塊

一旦我們有輸出,我們可以將其與已知標(biāo)簽進(jìn)行比較,并相應(yīng)地調(diào)整權(quán)重(權(quán)重通常以隨機(jī)初始化值開(kāi)始)。 我們繼續(xù)重復(fù)此過(guò)程,直到我們達(dá)到允許迭代的最大數(shù)量或可接受的錯(cuò)誤率。

為了創(chuàng)建神經(jīng)網(wǎng)絡(luò),從疊加感知器層開(kāi)始即可創(chuàng)建神經(jīng)網(wǎng)絡(luò)的多層感知器模型。 將產(chǎn)生直接接收要素輸入的一個(gè)輸入層,一個(gè)將創(chuàng)建結(jié)果輸出的輸出層。 之間的任何圖層都稱(chēng)為隱藏圖層,因?yàn)樗鼈儾恢苯印安榭础币剌斎牖蜉敵觥?對(duì)于可視化可查看下面的圖表(來(lái)源:維基百科)。 


神經(jīng)網(wǎng)絡(luò)初學(xué)者指南:基于Scikit-Learn的Python模塊

下面,讓我們開(kāi)始實(shí)操,用 python 創(chuàng)建神經(jīng)網(wǎng)絡(luò)吧!

| SciKit-Learn

為了跟得上這個(gè)教程的節(jié)奏,您需要安裝最新版本的 SciKit Learn。雖然通過(guò) pip 或 conda 很容易安裝,但你可以參考官方的安裝文檔來(lái)了解完整的細(xì)節(jié)。 

| 數(shù)據(jù)

我們將使用 SciKit Learn 內(nèi)置的乳腺癌數(shù)據(jù)集,如果具有腫瘤特征的樣本均會(huì)被標(biāo)記,并顯示腫瘤為惡性還是良性。 我們將嘗試創(chuàng)建一個(gè)神經(jīng)網(wǎng)絡(luò)模型,它可以理解腫瘤的特點(diǎn),并嘗試預(yù)測(cè)。讓我們繼續(xù)進(jìn)行,從獲取數(shù)據(jù)開(kāi)始吧!

這個(gè)對(duì)象就像字典一樣,包含著數(shù)據(jù)的描述信息,特點(diǎn)及目標(biāo):  

神經(jīng)網(wǎng)絡(luò)初學(xué)者指南:基于Scikit-Learn的Python模塊

| 訓(xùn)練測(cè)試分裂

讓我們把數(shù)據(jù)分成訓(xùn)練和測(cè)試集,通過(guò)來(lái)自模式選擇中的  SciKit Learn's 的訓(xùn)練測(cè)試分裂函數(shù),這點(diǎn)便可以輕松做到。 

| 數(shù)據(jù)預(yù)處理

如果數(shù)據(jù)未被歸一化,則在最大迭代次數(shù)被準(zhǔn)許之前,神經(jīng)網(wǎng)絡(luò)可能難以聚集。 多層感知器對(duì)特征縮放非常敏感,因此強(qiáng)烈建議您縮放數(shù)據(jù)。 請(qǐng)注意,必須對(duì)測(cè)試集應(yīng)用相同的縮放以獲得有意義的結(jié)果。 目前有很多不同的數(shù)據(jù)標(biāo)準(zhǔn)化方法,我們將使用內(nèi)置的 StandardScaler 進(jìn)行標(biāo)準(zhǔn)化。 

神經(jīng)網(wǎng)絡(luò)初學(xué)者指南:基于Scikit-Learn的Python模塊

| 訓(xùn)練模型

現(xiàn)在該訓(xùn)練我們的模型了。 通過(guò)估計(jì)對(duì)象, SciKit Learn 使這一切變得極其容易。 在這種情況下,我們將從 SciKit-Learn 的 neural_network 庫(kù)導(dǎo)入我們的估計(jì)器(多層感知器分類(lèi)器模型)。

我們接下來(lái)將創(chuàng)建一個(gè)模型的實(shí)例,你可以定義很多參數(shù)和自定義,我們將只定義 hidden_layer_sizes。 對(duì)于此參數(shù),您傳遞一個(gè)元組,其中在每一層包含你想要的神經(jīng)元數(shù)量,其中元組中的第 n 個(gè)條目表示 MLP 模型的第 n 層中的神經(jīng)元的數(shù)量。 有很多方法來(lái)選擇這些數(shù)字,但為了簡(jiǎn)單起見(jiàn),我們將選擇與我們的數(shù)據(jù)集中的特征相同數(shù)量的神經(jīng)元的三層:

現(xiàn)在已經(jīng)建立了模型,我們可以將訓(xùn)練數(shù)據(jù)放入其中,記住這個(gè)數(shù)據(jù)已經(jīng)被處理和縮放: 

MLPClassifier(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9,
      beta_2=0.999, early_stopping=False, epsilon=1e-08,
      hidden_layer_sizes=(30, 30, 30), learning_rate='constant',
      learning_rate_init=0.001, max_iter=200, momentum=0.9,
      nesterovs_momentum=True, power_t=0.5, random_state=None,
      shuffle=True, solver='adam', tol=0.0001, validation_fraction=0.1,
      verbose=False, warm_start=False)

我們可以在其中看到顯示模型中其他參數(shù)的默認(rèn)值輸出。 嘗試用不同的數(shù)值多次操作,就能看到數(shù)據(jù)對(duì)模型的影響。

| 預(yù)測(cè)與評(píng)估

現(xiàn)在我們有一個(gè)模型,是時(shí)候使用它來(lái)獲得預(yù)測(cè)! 我們可以簡(jiǎn)單地使用我們的擬合模型中的 predict()方法:

現(xiàn)在我們可以使用 SciKit-Learn 內(nèi)置的指標(biāo),如分類(lèi)報(bào)告和混淆矩陣來(lái)評(píng)估我們的模型執(zhí)行得如何:

神經(jīng)網(wǎng)絡(luò)初學(xué)者指南:基于Scikit-Learn的Python模塊


看上去只有三個(gè)案例被錯(cuò)誤分類(lèi)了,準(zhǔn)確率達(dá)到 98 %(以及 98% 的精度和召回)。考慮到我們才寫(xiě)了這么少的代碼,效果還是相當(dāng)不錯(cuò)的。 然而,使用多層感知器模型的缺點(diǎn)在于,解釋模型本身存在著很多困難,而特征的權(quán)重和偏差很難輕易解釋。

然而,如果希望在訓(xùn)練模型后提取MLP權(quán)重和偏差,則需要使用其公共屬性 coefs_ 和 intercepts_。

coefs_ 是權(quán)重矩陣的列表,其中索引i 處的權(quán)重矩陣表示層 i 和層 i + 1 之間的權(quán)重。

intercepts_ 是偏差向量的列表,其中索引i 處的向量表示添加到層 i + 1 的偏差值。 

| 結(jié)論

希望你喜歡這個(gè)關(guān)于神經(jīng)網(wǎng)絡(luò)的簡(jiǎn)短討論,我們可以在學(xué)習(xí)中嘗試玩轉(zhuǎn)隱藏層和神經(jīng)元的數(shù)量,看看它們?nèi)绾斡绊懡Y(jié)果。

想了解更多? 你可以在 Udemy 上查看我的 Python 數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)欄目。

via python

推薦閱讀:

大牛講堂 | 山世光博士:自動(dòng)駕駛系統(tǒng)中的目標(biāo)檢測(cè)技術(shù)

中國(guó)工程院院士李德毅:智能車(chē)產(chǎn)業(yè)化實(shí)踐與展望

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。

神經(jīng)網(wǎng)絡(luò)初學(xué)者指南:基于Scikit-Learn的Python模塊

分享:
相關(guān)文章
當(dāng)月熱門(mén)文章
最新文章
請(qǐng)?zhí)顚?xiě)申請(qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶(hù)安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)