自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

人工智能教程(六):Keras 和第一個數(shù)據(jù)集

人工智能
在本文中我們將繼續(xù)學(xué)習(xí)概率論的知識。

在本系列的 上一篇文章中,我們學(xué)習(xí)了使用 Anaconda,加強(qiáng)了概率論的知識。在本文中我們將繼續(xù)學(xué)習(xí)概率論的知識,學(xué)習(xí)使用 seaborn 和 Pandas 進(jìn)行數(shù)據(jù)可視化,并進(jìn)一步介紹 TensorFlow 和 Keras 的使用。

讓我們從增長人工智能和機(jī)器學(xué)習(xí)的理論知識開始。眾所周知人工智能、機(jī)器學(xué)習(xí)、數(shù)據(jù)科學(xué)、深度學(xué)習(xí)等是當(dāng)今計算機(jī)科學(xué)的熱門話題。然而,計算機(jī)科學(xué)還其他熱門的話題,比如 區(qū)塊鏈blockchain、物聯(lián)網(wǎng)Internet of Things(IoT)、量子計算quantum computing等。那么,人工智能領(lǐng)域的發(fā)展是否會對這些技術(shù)產(chǎn)生積極的影響呢?

首先,讓我們討論一下區(qū)塊鏈。根據(jù)維基百科的定義,“區(qū)塊鏈?zhǔn)且环N分布式賬本,它由不斷增長的記錄(稱為 區(qū)塊block)組成,這些記錄使用加密技術(shù)安全地連接在一起。”乍一看,人工智能和區(qū)塊鏈似乎是兩個高速發(fā)展的獨(dú)立技術(shù)。但令人驚訝的是,事實(shí)并非如此。區(qū)塊鏈相關(guān)的行話是 完整性integrity,人工智能相關(guān)的行話是數(shù)據(jù)。我們將大量數(shù)據(jù)交給人工智能程序去處理。雖然這些應(yīng)用程序產(chǎn)生了驚人的結(jié)果,但我們?nèi)绾涡湃嗡鼈兡??這就提出了對可解釋的人工智能的需求。它可以提供一定的保證,以便最終用戶可以信任人工智能程序提供的結(jié)果。許多專家認(rèn)為,區(qū)塊鏈技術(shù)可以用來提高人工智能軟件做出的決策的可信度。另一方面,智能合約smart contract(區(qū)塊鏈技術(shù)的一部分)可以從人工智能的驗證中受益。從本質(zhì)上講,智能合約和人工智能通常都是做決策。因此,人工智能的進(jìn)步將對區(qū)塊鏈技術(shù)產(chǎn)生積極影響,反之亦然。

下面讓我們討論一下人工智能和物聯(lián)網(wǎng)之間的影響。早期的物聯(lián)網(wǎng)設(shè)備通常沒有強(qiáng)大的處理能力或備用電池。這使得需要大量處理能力的機(jī)器學(xué)習(xí)的軟件無法部署在物聯(lián)網(wǎng)設(shè)備上。當(dāng)時,大多數(shù)物聯(lián)網(wǎng)設(shè)備中只部署了基于規(guī)則的人工智能軟件。基于規(guī)則的人工智能的優(yōu)勢在于它很簡單,需要相對較少的處理能力。如今的物聯(lián)網(wǎng)設(shè)備具備更強(qiáng)大的處理能力,可以運(yùn)行更強(qiáng)大的機(jī)器學(xué)習(xí)軟件。特斯拉開發(fā)的高級駕駛輔助系統(tǒng) 特斯拉自動駕駛儀Tesla Autopilo

最后,讓我們討論人工智能和量子計算是如何相互影響的。盡管量子計算仍處于起步階段,但 量子機(jī)器學(xué)習(xí)quantum machine learning(QML)是其中非常重要的課題。量子機(jī)器學(xué)習(xí)基于兩個概念:量子數(shù)據(jù)和量子-經(jīng)典混合模型。量子數(shù)據(jù)是由量子計算機(jī)產(chǎn)生的數(shù)據(jù)。量子神經(jīng)網(wǎng)絡(luò)quantum neural network(QNN)用于模擬量子計算模型。TensorFlow Quantum 是一個用于量子-經(jīng)典混合機(jī)器學(xué)習(xí)的強(qiáng)大工具。這類工具的存在表明,在不久的將來將會有越來越多的基于量子計算的人工智能解決方案。

seaborn 入門

seaborn 是一個基于 Matplotlib 的數(shù)據(jù)可視化 Python 庫。用它能夠繪制美觀且信息豐富的統(tǒng)計圖形。通過 Anaconda Navigator 可以輕松安裝 seaborn。我用 ESPNcricinfo 網(wǎng)站上 T20 國際板球賽的擊球記錄,創(chuàng)建了一個名為 T20.csv 的 CSV(逗號分隔值comma-separated value)文件,其中包含以下 15 列:球員姓名、職業(yè)生涯跨度、比賽場次、局?jǐn)?shù)、未出局次數(shù)、總得分、最高得分、平均得分、面對球數(shù)、擊球率、百分次數(shù)、五十分次數(shù)、零分次數(shù)、四分次數(shù)和六分次數(shù)。圖 1 是使用 Pandas 庫讀取這個 CSV 文件的程序代碼。我們已經(jīng)在前面介紹過 Pandas 了。

圖 1:使用 seaborn 的簡單例子圖 1:使用 seaborn 的簡單例子

下面逐行解釋程序代碼的作用。第 1 行和第 2 行導(dǎo)入 Pandas 和 seaborn 包。第 3 行從 JupyterLab 的工作目錄中讀取文件 T20.csv。第 4 行打印元數(shù)據(jù)和第一行數(shù)據(jù)。圖 1 顯示了這行數(shù)據(jù),它顯示了 T20 國際板球賽中得分最高的 Virat Kohli 的擊球記錄。第 5 行將元數(shù)據(jù)和 T20.csv 中的前五行數(shù)據(jù)保存到 Best5.csv 中。在執(zhí)行該行代碼時會在 JupyterLab 的工作目錄中創(chuàng)建這個文件。第 6 行根據(jù)列百分次數(shù)按升序?qū)?CSV 文件進(jìn)行排序,并將前 10 名世紀(jì)得分手的詳細(xì)信息存儲到 Highest100.csv 中。該文件也將存儲在 JupyterLab 的工作目錄中。最后,第7行代碼提取了第 5 列(總得分)和第 7 列(平均得分)的數(shù)據(jù)信息,并生成散點(diǎn)圖。圖 2 顯示了程序在執(zhí)行時生成的散點(diǎn)圖。

圖 2:seaborn 繪制的散點(diǎn)圖圖 2:seaborn 繪制的散點(diǎn)圖

在程序末尾添加如下代碼行并再次運(yùn)行。

sns.kdeplot(data=df.iloc[:, [5, 7]].head(50), x=’Ave’, y=’Runs’)

圖 3:使用 seaborn 繪制的核密度估計圖圖 3:使用 seaborn 繪制的核密度估計圖

這行代碼調(diào)用 kdeplot() 函數(shù)繪制第 5 列和第 7 列數(shù)據(jù)的 核密度估計Kernel Distribution Estimation(KDE)圖。KDE 圖可以描述連續(xù)或非參數(shù)數(shù)據(jù)變量的概率密度函數(shù)。這個定義可能無法讓您了解函數(shù) kdeploy() 將要執(zhí)行的實(shí)際操作。圖 3 是在單個圖像上繪制的 KDE 圖和散點(diǎn)圖。從圖中我們可以看到,散點(diǎn)圖繪制的數(shù)據(jù)點(diǎn)被 KDE 圖分組成簇。seaborn 還提供了許多其他繪圖功能。在圖 1 中程序的第 7 行分別替換為下面的的代碼行(一次一行),并再次執(zhí)行該程序,你會看到不同風(fēng)格的繪圖顯示。探索 seaborn 提供的其他繪圖功能,并選擇最適合你需求的功能。

sns.histplot(data=df.iloc[:, [5, 7]].head(50), x=’Ave’, y=’Runs’)
sns.rugplot(data=df.iloc[:, [5, 7]].head(50), x=’Ave’, y=’Runs’)

更多概率論

在本系列之前的一篇文章中,我們看到可以用正態(tài)分布來對現(xiàn)實(shí)場景進(jìn)行建模。但正態(tài)分布只是眾多重要概率分布中的一種。圖 4 中的程序繪制了三種概率分布。

圖 4:繪制多種概率分布的程序圖 4:繪制多種概率分布的程序

下面我來解釋這個程序。第 1 行導(dǎo)入 NumPy 的 random 模塊。第 2 行和第 3 行導(dǎo)入用于繪圖的 Matplotlib 和 seaborn。第 5 行生成帶有參數(shù) n(試驗次數(shù))和 p(成功概率)的 二項分布binomial distribution數(shù)據(jù)。

二項分布是一種離散概率分布,它給出了在一系列 n 次獨(dú)立實(shí)驗中成功的數(shù)量。第三個參數(shù) size 決定了輸出的形狀。第 6 行繪制生成的數(shù)據(jù)的直方圖。由于參數(shù) kde=True,它還會繪制 KDE 圖。第三個參數(shù) color='r' 表示繪圖時使用紅色。第 7 行生成一個泊松分布。泊松分布是一種離散概率分布,它給出了二項分布的極限。參數(shù) lam 表示在固定時間間隔內(nèi)發(fā)生預(yù)期事件的次數(shù)。這里的參數(shù) size 也決定了輸出的形狀。第 8 行將生成的數(shù)據(jù)繪制為綠色的直方圖。第 9 行生成大小為 1000 的指數(shù)分布。第 10 行將生成的數(shù)據(jù)繪制為藍(lán)色的直方圖。最后,第 11 繪制三個概率分布的所有圖像(見圖 5)。NumPy 的 random 模塊提供了大量的其他概率分布,如 Dirichlet 分布、Gamma 分布、幾何分布、拉普拉斯分布等。學(xué)習(xí)和熟悉它們將是非常值得的。

圖 5:概率分布的圖像圖 5:概率分布的圖像

現(xiàn)在,讓我們學(xué)習(xí)線性回歸。使用線性回歸分析可以根據(jù)一個變量來預(yù)測一個變量的值。線性回歸的一個重要應(yīng)用是數(shù)據(jù)擬合。線性回歸非常重要,因為它很簡單。機(jī)器學(xué)習(xí)中的監(jiān)督學(xué)習(xí)范式實(shí)際上就是回歸建模。因此,線性回歸可以被認(rèn)為是一種重要的機(jī)器學(xué)習(xí)策略。這種學(xué)習(xí)范式通常被統(tǒng)計學(xué)家稱為統(tǒng)計學(xué)習(xí)。線性回歸是機(jī)器學(xué)習(xí)中的重要操作。NumPy 和 SciPy 都提供了線性回歸的函數(shù)。下面我們展示使用 NumPy 和 SciPy 進(jìn)行線性回歸的示例。

圖 6:使用 NumPy 進(jìn)行線性回歸圖 6:使用 NumPy 進(jìn)行線性回歸

圖 6 是使用 NumPy 進(jìn)行線性回歸的程序。第 1 行和第 2 行導(dǎo)入 NumPy 和 Matplotlib。第 4 行和第 5 行初始化變量 a和 b。第 6 行使用函數(shù) linspace() 在 0 和 1 之間等間隔地生成 100 個數(shù)字。第 7 行使用變量 a、b 和數(shù)組 x 生成數(shù)組 y 中的值。函數(shù) randn() 返回標(biāo)準(zhǔn)正態(tài)分布的數(shù)據(jù)。第 8 行將數(shù)組 x 和 y 中的值繪制成散點(diǎn)圖(見圖 7),圖中的 100 個數(shù)據(jù)點(diǎn)用紅色標(biāo)記。第 9 行使用函數(shù) polyfit() 執(zhí)行稱為 最小二乘多項式擬合least squares polynomial fit 的線性回歸技術(shù)。函數(shù) polyfit() 的輸入?yún)?shù)包括數(shù)組 x 和 y,以及第三個表示擬合多項式的階數(shù)的參數(shù),在本例中為 1,表示擬合一條直線。該函數(shù)的返回值是多項式的系數(shù),代碼中將其存儲在數(shù)組 p 中。第 10 行使用函數(shù) polyval() 對多項式求值,并將這些值存儲在數(shù)組y_l中。第 11 行用藍(lán)色繪制擬合得到的直線(見圖 7)。最后,第 12 行顯示所有的圖像。可以用這條回歸直線預(yù)測可能的 (x, y) 數(shù)據(jù)對。

圖 7:線性回歸散點(diǎn)圖 1圖 7:線性回歸散點(diǎn)圖 1

圖 8 是使用 SciPy 進(jìn)行線性回歸的程序代碼。

圖 8:使用 SciPy 進(jìn)行線性回歸圖 8:使用 SciPy 進(jìn)行線性回歸

下面我解釋一下這個程序的工作原理。第 1 行和第 2 行導(dǎo)入庫 NumPy 和 Matplotlib。第 3 行從庫 SciPy 導(dǎo)入 stats 模塊。第 4 到 8 行與前面的程序執(zhí)行類似的任務(wù)。第 9 行使用 SciPy 的 stats 模塊的 linregression() 函數(shù)計算兩組測量值的線性最小二乘回歸——在本例中是數(shù)組 x 和 y 中的值。該函數(shù)返回值中的 m 和 c 分別表示回歸直線的 斜率slope和截距intercept。第 10 行使用斜率和截距的值生成回歸線。第 11 行用綠色繪制回歸線。最后,第 12 行顯示所有的圖像(見圖 9),其中數(shù)據(jù)點(diǎn)以黃色顯示,回歸線以綠色顯示。

圖 9:線性回歸散點(diǎn)圖 2圖 9:線性回歸散點(diǎn)圖 2

在本系列的前面幾篇文章中,我們學(xué)習(xí)了概率和統(tǒng)計學(xué)的一些概念。盡管還不夠全面的,但我認(rèn)為這已經(jīng)打下了一個良好的基礎(chǔ),現(xiàn)在是時候?qū)⒆⒁饬D(zhuǎn)移到其他同樣重要的問題上了。

Keras 簡介

Keras 一般與 TensorFlow 一起使用。因此,我們先從使用 TensorFlow 開始。圖 10 所示的程序雖然只包含四行代碼,但確實(shí)構(gòu)建了在本系列中的第一個神經(jīng)網(wǎng)絡(luò)。下面我來介紹它的工作原理。第 1 行導(dǎo)入庫 TensorFlow。第 2 行創(chuàng)建了一個名為 x 的張量。第 3 行和第 4 行分別在張量 x 上應(yīng)用 ReLU(整流線性單元Rectified Linear Unit)和 Leaky ReLU 激活函數(shù)。在神經(jīng)網(wǎng)絡(luò)中,激活函數(shù)定義了節(jié)點(diǎn)的輸出由輸入計算出的規(guī)則。ReLU 激活函數(shù)是定義為 Relu(x) = max(0,x)。第 3 行代碼的輸出如圖 10 所示。可以觀察到,在應(yīng)用 ReLU 激活函數(shù)后,張量 x 中的負(fù)值被替換為零。Leaky ReLU 是 ReLU 激活函數(shù)的改進(jìn)版本。從圖 10 中的第 4 行代碼的輸出可以看出 Leaky ReLU 激活函數(shù)保留了全量的正值和 20% 的負(fù)值。在后面我們將會繼續(xù)討論 Keras,同時學(xué)習(xí)更多神經(jīng)網(wǎng)絡(luò)和激活函數(shù)的知識。

圖 10:使用 TensorFlow 實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò)圖 10:使用 TensorFlow 實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò)

下面我們開始使用 Keras。Keras 的安裝也可以通過 Anaconda Navigator 輕松完成。圖 11 所示的程序?qū)肓宋覀兊牡谝粋€數(shù)據(jù)集并顯示了其中的一個數(shù)據(jù)樣本。在下一篇文章中,我們將使用這個數(shù)據(jù)集來訓(xùn)練和測試模型,從而開啟我們開發(fā)人工智能和機(jī)器學(xué)習(xí)程序的下一個階段。

圖 11:第一個數(shù)據(jù)集圖 11:第一個數(shù)據(jù)集

下面介紹這個程序的工作原理。第 1 行導(dǎo)入 Keras。第 2 行從 Keras 導(dǎo)入手寫數(shù)字?jǐn)?shù)據(jù)集 MNIST。它包含 6 萬個訓(xùn)練樣本和 1 萬個測試樣本。第 3 行導(dǎo)入 Matplotlib。第 5 行加載 MNIST 數(shù)據(jù)集。第 6 到 9 行打印訓(xùn)練集和測試集的維數(shù)和維度。圖 12 顯示了這些代碼行的輸出??梢钥闯?,訓(xùn)練集和測試集都是三維的,所有數(shù)據(jù)樣本的分辨率都是 28 × 28。第 10 行加載了第 1234 個訓(xùn)練圖像。第 11 行和第 12 行顯示這個圖像。從圖 12 可以看到它是數(shù)字 3 的手寫圖像。

圖 12:數(shù)據(jù)樣例圖 12:數(shù)據(jù)樣例

本文中我們開始涉及到神經(jīng)網(wǎng)絡(luò),并通過 Keras 接觸到了第一個數(shù)據(jù)集。在下一篇文章中,我們將繼續(xù)講解神經(jīng)網(wǎng)絡(luò)和 Keras,并通過使用該數(shù)據(jù)集訓(xùn)練自己的模型。我們還會遇到 scikit-learn, 它是另一個強(qiáng)大的機(jī)器學(xué)習(xí) Python 庫 。

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2024-02-01 09:43:32

模型人工智能

2010-12-07 16:53:43

商業(yè)智能

2023-02-28 15:21:37

人工智能AGI

2022-03-30 14:30:34

人工智能機(jī)器學(xué)習(xí)模型

2021-12-07 14:08:45

人工智能AI深度學(xué)習(xí)

2015-11-23 16:27:35

人工智能

2021-10-09 10:26:14

人工智能IT自動化AI

2023-05-06 12:47:41

2023-10-30 08:00:24

2018-08-17 15:17:56

人工智能層次極端

2021-01-31 08:30:46

人工智能AI

2021-11-05 09:56:36

人工智能AI指數(shù)

2021-04-03 12:31:48

Python開發(fā)數(shù)據(jù)科學(xué)

2020-07-09 07:39:59

人工智能

2021-03-23 14:32:24

數(shù)據(jù)分析人工智能AI

2009-06-25 15:11:28

Struts2教程Struts2程序

2018-04-23 14:27:03

2018-04-24 09:31:08

2020-11-20 14:57:37

人工智能Gartner學(xué)習(xí)

2023-06-12 10:42:39

人工智能機(jī)器學(xué)習(xí)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號