版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
人工智能與Python–入門概念人工智能與Python——入門人工智能與Python——機(jī)器學(xué)習(xí)人工智能與Python–數(shù)據(jù)準(zhǔn)備監(jiān)督學(xué)習(xí):分類監(jiān)督學(xué)習(xí):回歸人工智能與Python–邏輯編程無監(jiān)督學(xué)習(xí):聚類自然語言處理人工智能與Python——NLTK包分析時(shí)間序列數(shù)據(jù)人工智能與Python——語音識別人工智能與Python——啟發(fā)式搜索人工智能與Python–游戲人工智能與Python——神經(jīng)網(wǎng)絡(luò)強(qiáng)化學(xué)習(xí)人工智能與Python——遺傳算法人工智能與Python——計(jì)算機(jī)視覺人工智能與Python——深度學(xué)習(xí)人工智能與Python–入門概念自計(jì)算機(jī)或機(jī)器發(fā)明以來,它們執(zhí)行各種任務(wù)的能力經(jīng)歷了指數(shù)級增長。人類在不同的工作領(lǐng)域、不斷提高的速度和相對于時(shí)間的縮小尺寸方面開發(fā)了計(jì)算機(jī)系統(tǒng)的功能。名為人工智能的計(jì)算機(jī)科學(xué)的一個(gè)分支追求創(chuàng)造像人類一樣智能的計(jì)算機(jī)或機(jī)器。人工智能(AI)的基本概念按照人工智能之父約翰麥卡錫的說法,它是“制造智能機(jī)器,尤其是智能計(jì)算機(jī)程序的科學(xué)與工程”。人工智能是一種讓計(jì)算機(jī)、計(jì)算機(jī)控制的機(jī)器人或軟件以智能人類思考的方式進(jìn)行智能思考的方法。人工智能是通過研究人腦如何思考以及人類在嘗試解決問題時(shí)如何學(xué)習(xí)、決策和工作,然后將這項(xiàng)研究的結(jié)果作為開發(fā)智能軟件和系統(tǒng)的基礎(chǔ)來實(shí)現(xiàn)的。在利用計(jì)算機(jī)系統(tǒng)的力量時(shí),人類的好奇心使他想知道,“機(jī)器能像人類一樣思考和行動嗎?”因此,人工智能的發(fā)展始于在機(jī)器中創(chuàng)造我們發(fā)現(xiàn)并認(rèn)為人類具有很高智能的類似智能。學(xué)習(xí)人工智能的必要性眾所周知,人工智能追求的是創(chuàng)造像人類一樣智能的機(jī)器。我們研究人工智能的原因有很多。原因如下-人工智能可以通過數(shù)據(jù)學(xué)習(xí)在我們的日常生活中,我們處理大量數(shù)據(jù),而人腦無法跟蹤這么多數(shù)據(jù)。這就是為什么我們需要自動化的原因。做自動化,我們需要研究人工智能,因?yàn)樗梢詮臄?shù)據(jù)中學(xué)習(xí),可以準(zhǔn)確無誤地完成重復(fù)性的工作,而且不會感到疲倦。人工智能可以自學(xué)系統(tǒng)自學(xué)是非常必要的,因?yàn)閿?shù)據(jù)本身不斷變化,從這些數(shù)據(jù)中衍生出來的知識也必須不斷更新。我們可以使用AI來實(shí)現(xiàn)這一目的,因?yàn)橹С諥I的系統(tǒng)可以自學(xué)。AI可以實(shí)時(shí)響應(yīng)借助神經(jīng)網(wǎng)絡(luò)的人工智能可以更深入地分析數(shù)據(jù)。由于這種能力,人工智能可以實(shí)時(shí)思考和響應(yīng)基于條件的情況。人工智能實(shí)現(xiàn)準(zhǔn)確性在深度神經(jīng)網(wǎng)絡(luò)的幫助下,人工智能可以達(dá)到極高的準(zhǔn)確性。人工智能在醫(yī)學(xué)領(lǐng)域有助于通過患者的MRI診斷癌癥等疾病。人工智能可以組織數(shù)據(jù)以充分利用它數(shù)據(jù)是使用自學(xué)習(xí)算法的系統(tǒng)的知識產(chǎn)權(quán)。我們需要AI以始終提供最佳結(jié)果的方式對數(shù)據(jù)進(jìn)行索引和組織。了解情報(bào)高級編號情報(bào)與描述例子1個(gè)語言智能說話、識別和使用音系(語音)、句法(語法)和語義(意義)機(jī)制的能力。敘述者、演說者2個(gè)音樂智能創(chuàng)造、交流和理解聲音意義的能力,對音調(diào)和節(jié)奏的理解。音樂家、歌手、作曲家3個(gè)邏輯數(shù)理智能在沒有動作或?qū)ο蟮那闆r下使用和理解關(guān)系的能力。這也是理解復(fù)雜和抽象思想的能力。數(shù)學(xué)家、科學(xué)家4個(gè)空間智能感知視覺或空間信息,改變它,并在不參考對象的情況下重新創(chuàng)建視覺圖像,構(gòu)建3D圖像以及移動和旋轉(zhuǎn)它們的能力。地圖閱讀器、宇航員、物理學(xué)家5個(gè)身體運(yùn)動智能能夠使用完整或部分身體來解決問題或時(shí)尚產(chǎn)品,控制精細(xì)和粗略的運(yùn)動技能,以及操縱物體。球員、舞者6個(gè)個(gè)人內(nèi)部智能區(qū)分自己的感受、意圖和動機(jī)的能力。釋迦牟尼佛7人際智能識別和區(qū)分他人的感受、信念和意圖的能力。大眾傳播者、采訪者有了人工智能,就可以構(gòu)建智能系統(tǒng)。我們需要理解智能的概念,這樣我們的大腦才能構(gòu)建另一個(gè)像它自己一樣的智能系統(tǒng)。什么是情報(bào)?系統(tǒng)計(jì)算、推理、感知關(guān)系和類比、從經(jīng)驗(yàn)中學(xué)習(xí)、從記憶中存儲和檢索信息、解決問題、理解復(fù)雜思想、流利地使用自然語言、分類、概括和適應(yīng)新情況的能力。智力類型正如美國發(fā)展心理學(xué)家霍華德加德納所描述的那樣,智力來自多方面-當(dāng)一臺機(jī)器或系統(tǒng)配備了至少一種或所有智能時(shí),你可以說它是人工智能。什么是情報(bào)?智慧是無形的。它由-推理學(xué)習(xí)解決問題洞察力語言智能讓我們簡要介紹一下所有組件-推理它是使我們能夠?yàn)榕袛?、決策和預(yù)測提供基礎(chǔ)的一組過程。大致有兩種類型-歸納推理演繹推理它進(jìn)行具體觀察以做出廣泛的一般性陳述。它從一般性陳述開始,并檢查得出特定、合乎邏輯的結(jié)論的可能性。即使陳述中的所有前提都為真,歸納推理也允許結(jié)論為假。如果某件事對一類事物普遍適用,那么它也適用于該類的所有成員。示例-“Nita是一位老師。Nita很勤奮。因此,所有老師都很勤奮?!笔纠?“所有60歲以上的女性都是祖母。Shalini是65歲。因此,Shalini是祖母?!睂W(xué)習(xí)人類、特定種類的動物和支持AI的系統(tǒng)都具有學(xué)習(xí)能力。學(xué)習(xí)分類如下-聽覺學(xué)習(xí)它是通過聽和聽來學(xué)習(xí)的。例如,學(xué)生收聽錄制的音頻講座。情景學(xué)習(xí)通過記住親眼目睹或經(jīng)歷過的一系列事件來學(xué)習(xí)。這是線性和有序的。運(yùn)動學(xué)習(xí)它是通過肌肉的精確運(yùn)動來學(xué)習(xí)的。比如撿東西,寫字等等。觀察學(xué)習(xí)通過觀察和模仿他人來學(xué)習(xí)。例如,孩子試圖通過模仿父母來學(xué)習(xí)。感性學(xué)習(xí)它正在學(xué)習(xí)識別以前見過的刺激。例如,識別和分類對象和情況。關(guān)系學(xué)習(xí)它涉及學(xué)習(xí)根據(jù)相關(guān)屬性而不是絕對屬性來區(qū)分各種刺激。例如,在烹飪上次變咸的土豆時(shí)添加“少一點(diǎn)”鹽,當(dāng)烹飪時(shí)添加一湯匙鹽??臻g學(xué)習(xí)-它是通過圖像、顏色、地圖等視覺刺激進(jìn)行學(xué)習(xí)。例如,一個(gè)人可以在真正沿著道路行駛之前在腦海中創(chuàng)建路線圖。Stimulus-ResponseLearning
-它正在學(xué)習(xí)在存在特定刺激時(shí)執(zhí)行特定行為。例如,一只狗在聽到門鈴時(shí)會豎起耳朵。解決問題這是一個(gè)過程,在這個(gè)過程中,一個(gè)人通過采取一些被已知或未知障礙阻擋的路徑來感知并試圖從當(dāng)前情況中得出所需的解決方案。解決問題還包括決策,這是從多個(gè)備選方案中選擇最合適的備選方案以達(dá)到預(yù)期目標(biāo)的過程。洞察力它是獲取、解釋、選擇和組織感官信息的過程。感知假定感知。在人類中,感覺器官有助于感知。在人工智能領(lǐng)域,感知機(jī)制將傳感器獲取的數(shù)據(jù)以有意義的方式組合在一起。語言智能它是一個(gè)人使用、理解、說和寫口頭和書面語言的能力。在人際交往中很重要。人工智能涉及什么人工智能是一個(gè)廣闊的研究領(lǐng)域。該研究領(lǐng)域有助于找到解決現(xiàn)實(shí)世界問題的方法。現(xiàn)在讓我們看看人工智能的不同研究領(lǐng)域-機(jī)器學(xué)習(xí)它是人工智能最受歡迎的領(lǐng)域之一。本申請的基本概念是讓機(jī)器從數(shù)據(jù)中學(xué)習(xí),就像人類可以從他/她的經(jīng)驗(yàn)中學(xué)習(xí)一樣。它包含學(xué)習(xí)模型,在此基礎(chǔ)上可以對未知數(shù)據(jù)進(jìn)行預(yù)測。邏輯這是另一個(gè)重要的研究領(lǐng)域,其中使用數(shù)理邏輯來執(zhí)行計(jì)算機(jī)程序。它包含執(zhí)行模式匹配、語義分析等的規(guī)則和事實(shí)。搜索中這一研究領(lǐng)域基本上用于象棋、井字游戲等游戲。搜索算法在搜索整個(gè)搜索空間后給出最優(yōu)解。人工神經(jīng)網(wǎng)絡(luò)這是一個(gè)高效計(jì)算系統(tǒng)網(wǎng)絡(luò),其中心主題借鑒了生物神經(jīng)網(wǎng)絡(luò)的類比。人工神經(jīng)網(wǎng)絡(luò)可用于機(jī)器人、語音識別、語音處理等。遺傳算法遺傳算法有助于在多個(gè)程序的幫助下解決問題。結(jié)果將基于選擇最適者。知識表示在研究領(lǐng)域的幫助下,我們可以用機(jī)器可以理解的方式來表示事實(shí)。知識的表達(dá)效率越高;系統(tǒng)越智能。人工智能的應(yīng)用在本節(jié)中,我們將看到AI支持的不同領(lǐng)域-賭博人工智能在國際象棋、撲克、井字游戲等戰(zhàn)略游戲中起著至關(guān)重要的作用,機(jī)器可以根據(jù)啟發(fā)式知識思考大量可能的位置。自然語言處理可以與理解人類所說的自然語言的計(jì)算機(jī)進(jìn)行交互。專家系統(tǒng)有些應(yīng)用程序集成了機(jī)器、軟件和特殊信息以提供推理和建議。他們向用戶提供解釋和建議。視覺系統(tǒng)這些系統(tǒng)理解、解釋和理解計(jì)算機(jī)上的視覺輸入。例如,間諜飛機(jī)拍攝照片,這些照片用于計(jì)算空間信息或區(qū)域地圖。醫(yī)生使用臨床專家系統(tǒng)對患者進(jìn)行診斷。警察使用計(jì)算機(jī)軟件,可以通過法醫(yī)藝術(shù)家制作的存儲肖像識別罪犯的面孔。語音識別一些智能系統(tǒng)能夠在人類與之交談時(shí)根據(jù)句子及其含義來聽取和理解語言。它可以處理不同的口音、俚語、背景噪音、因寒冷引起的人聲變化等。手寫識別手寫識別軟件讀取用筆寫在紙上或用手寫筆寫在屏幕上的文本。它可以識別字母的形狀并將其轉(zhuǎn)換為可編輯的文本。智能機(jī)器人機(jī)器人能夠執(zhí)行人類賦予的任務(wù)。他們有傳感器來檢測來自現(xiàn)實(shí)世界的物理數(shù)據(jù),例如光、熱、溫度、運(yùn)動、聲音、碰撞和壓力。它們擁有高效的處理器、多個(gè)傳感器和巨大的內(nèi)存,以展現(xiàn)智能。此外,他們能夠從錯誤中吸取教訓(xùn),能夠適應(yīng)新環(huán)境。認(rèn)知建模:模擬人類思維過程認(rèn)知建?;旧鲜怯?jì)算機(jī)科學(xué)中的研究領(lǐng)域,涉及研究和模擬人類的思維過程。人工智能的主要任務(wù)是讓機(jī)器像人一樣思考。人類思維過程的最重要特征是解決問題。這就是為什么或多或少的認(rèn)知建模試圖理解人類如何解決問題的原因。之后,該模型可用于各種人工智能應(yīng)用,如機(jī)器學(xué)習(xí)、機(jī)器人技術(shù)、自然語言處理等。以下是人腦不同思維層次的圖表-代理與環(huán)境在本節(jié)中,我們將重點(diǎn)關(guān)注代理和環(huán)境以及它們?nèi)绾螏椭斯ぶ悄?。代理人代理是任何可以通過傳感器感知其環(huán)境并通過效應(yīng)器作用于該環(huán)境的事物。人類主體具有與傳感器平行的眼睛、耳朵、鼻子、舌頭和皮膚等感覺器官,以及用于效應(yīng)器的其他器官,例如手、腿、嘴。機(jī)器人代理取代了傳感器的相機(jī)和紅外測距儀,以及效應(yīng)器的各種電機(jī)和執(zhí)行器。軟件代理將位串編碼為它的程序和動作。環(huán)境一些程序在完全人工的環(huán)境中運(yùn)行,僅限于鍵盤輸入、數(shù)據(jù)庫、計(jì)算機(jī)文件系統(tǒng)和屏幕上的字符輸出。相比之下,一些軟件代理(軟件機(jī)器人或軟件機(jī)器人)存在于豐富的、無限的軟件機(jī)器人域中。模擬器有一個(gè)非常詳細(xì)、復(fù)雜的環(huán)境。軟件代理需要從一長串實(shí)時(shí)操作中進(jìn)行選擇。softbot旨在掃描客戶的在線偏好,并向客戶展示有趣的項(xiàng)目,在真實(shí)和人工環(huán)境中工作。人工智能與Python——入門在本章中,我們將學(xué)習(xí)如何開始使用Python。我們還將了解Python如何幫助人工智能。為什么Python用于AI人工智能被認(rèn)為是未來的趨勢技術(shù)。已經(jīng)有許多應(yīng)用程序在上面進(jìn)行。因此,許多公司和研究人員都對此感興趣。但這里出現(xiàn)的主要問題是,可以使用哪種編程語言開發(fā)這些AI應(yīng)用程序?有多種編程語言,如Lisp、Prolog、C++、Java和Python,可用于開發(fā)AI應(yīng)用程序。其中,Python編程語言大受歡迎,原因如下:簡單的語法和更少的編碼與其他可用于開發(fā)AI應(yīng)用程序的編程語言相比,Python涉及的代碼非常少,語法簡單。由于這個(gè)特性,測試可以更容易,我們可以更專注于編程。人工智能項(xiàng)目的內(nèi)置庫將Python用于AI的一個(gè)主要優(yōu)勢是它帶有內(nèi)置庫。Python擁有適用于幾乎所有類型AI項(xiàng)目的庫。例如,NumPy、SciPy、matplotlib、nltk、SimpleAI是Python的一些重要內(nèi)置庫。開源-Python是一種開源編程語言。這使其在社區(qū)中廣受歡迎??捎糜趶V泛的編程——Python可用于廣泛的編程任務(wù),如小型shell腳本到企業(yè)Web應(yīng)用程序。這也是Python適合AI項(xiàng)目的另一個(gè)原因。Python的特點(diǎn)Python是一種高級、解釋型、交互式和面向?qū)ο蟮哪_本語言。Python被設(shè)計(jì)成具有高度可讀性。它經(jīng)常使用英語關(guān)鍵字,而其他語言使用標(biāo)點(diǎn)符號,并且它的句法結(jié)構(gòu)比其他語言少。Python的功能包括以下-Easy-to-learn
-Python關(guān)鍵字少,結(jié)構(gòu)簡單,語法定義明確。這使學(xué)生能夠快速掌握語言。Easy-to-read
-Python代碼定義更清晰,更清晰可見。Easy-to-maintain
-Python的源代碼相當(dāng)易于維護(hù)。廣泛的標(biāo)準(zhǔn)庫——Python的大部分庫在UNIX、Windows和Macintosh上都非常便攜且跨平臺兼容。交互模式-Python支持交互模式,允許交互測試和調(diào)試代碼片段。便攜-Python可以在多種硬件平臺上運(yùn)行,并且在所有平臺上都具有相同的界面。可擴(kuò)展-我們可以向Python解釋器添加低級模塊。這些模塊使程序員能夠添加或自定義他們的工具以提高效率。數(shù)據(jù)庫-Python提供所有主要商業(yè)數(shù)據(jù)庫的接口。GUI編程-Python支持可以創(chuàng)建和移植到許多系統(tǒng)調(diào)用、庫和Windows系統(tǒng)(例如WindowsMFC、Macintosh和Unix的XWindow系統(tǒng))的GUI應(yīng)用程序??蓴U(kuò)展-Python為大型程序提供了比shell腳本更好的結(jié)構(gòu)和支持。Python的重要特性現(xiàn)在讓我們考慮Python的以下重要特性-它支持函數(shù)式和結(jié)構(gòu)化編程方法以及OOP。它可以用作腳本語言,也可以編譯為字節(jié)碼以構(gòu)建大型應(yīng)用程序。它提供非常高級的動態(tài)數(shù)據(jù)類型并支持動態(tài)類型檢查。它支持自動垃圾收集。它可以輕松地與C、C++、COM、ActiveX、CORBA和Java集成。安裝PythonPython發(fā)行版可用于大量平臺。您只需下載適用于您的平臺的二進(jìn)制代碼并安裝Python。如果您的平臺的二進(jìn)制代碼不可用,您需要一個(gè)C編譯器來手動編譯源代碼。編譯源代碼在選擇安裝中所需的功能方面提供了更大的靈活性。這是在各種平臺上安裝Python的快速概述-Unix和Linux安裝按照以下步驟在Unix/Linux機(jī)器上安裝Python。打開Web瀏覽器并轉(zhuǎn)到Python按照鏈接下載適用于Unix/Linux的壓縮源代碼。下載并提取文件。如果要自定義某些選項(xiàng),請編輯模塊/設(shè)置文件。運(yùn)行./configure腳本制作安裝這會將Python安裝在標(biāo)準(zhǔn)位置/usr/local/bin,并將其庫安裝在/usr/local/lib/pythonXX,其中XX是Python的版本。Windows安裝按照以下步驟在Windows機(jī)器上安裝Python。打開Web瀏覽器并轉(zhuǎn)到Python點(diǎn)擊Windows安裝程序python-XYZ
.msi文件的鏈接,其中XYZ是您需要安裝的版本。要使用此安裝程序python-XYZ
.msi,Windows系統(tǒng)必須支持MicrosoftInstaller2.0。將安裝程序文件保存到您的本地計(jì)算機(jī),然后運(yùn)行它以查看您的計(jì)算機(jī)是否支持MSI。運(yùn)行下載的文件。這將打開Python安裝向?qū)?,它非常易于使用。只需接受默認(rèn)設(shè)置并等待安裝完成即可。蘋果機(jī)安裝如果您使用的是MacOSX,建議您使用Homebrew安裝Python3。它是一個(gè)很棒的MacOSX軟件包安裝程序,而且非常易于使用。如果您沒有Homebrew,您可以使用以下命令安裝它-$ruby-e"$(curl-fsSL/Homebrew/install/master/install)"我們可以使用以下命令更新包管理器-$brewupdate現(xiàn)在運(yùn)行以下命令在您的系統(tǒng)上安裝Python3-$brewinstallpython3設(shè)置路徑程序和其他可執(zhí)行文件可以位于許多目錄中,因此操作系統(tǒng)提供了一個(gè)搜索路徑,其中列出了操作系統(tǒng)搜索可執(zhí)行文件的目錄。路徑存儲在環(huán)境變量中,這是操作系統(tǒng)維護(hù)的命名字符串。此變量包含可用于命令shell和其他程序的信息。路徑變量在Unix中命名為PATH,在Windows中命名為Path(Unix區(qū)分大小寫;Windows不區(qū)分大小寫)。在MacOS中,安裝程序會處理路徑詳細(xì)信息。要從任何特定目錄調(diào)用Python解釋器,您必須將Python目錄添加到您的路徑中。在Unix/Linux下設(shè)置路徑將Python目錄添加到Unix中特定會話的路徑-在csh外殼中輸入setenvPATH"$PATH:/usr/local/bin/python"并按Enter。在bashshell(Linux)中鍵入exportATH="$PATH:/usr/local/bin/python"并按Enter。在sh或kshshell中鍵入PATH="$PATH:/usr/local/bin/python"并按Enter。注意-/usr/local/bin/python是Python目錄的路徑。在Windows中設(shè)置路徑將Python目錄添加到Windows中特定會話的路徑-在命令提示符下-鍵入path%path%;C:\Python并按Enter鍵。注意-C:\Python是Python目錄的路徑。運(yùn)行Python現(xiàn)在讓我們看看運(yùn)行Python的不同方式。這些方法如下所述-交互式口譯員我們可以從Unix、DOS或任何其他為您提供命令行解釋器或shell窗口的系統(tǒng)啟動Python。在命令行輸入python。立即在交互式解釋器中開始編碼。$python#Unix/Linux或者python%#Unix/Linux或者C:>python#Windows/DOS編號選項(xiàng)和描述1個(gè)-d它提供調(diào)試輸出。2個(gè)-o它生成優(yōu)化的字節(jié)碼(生成.pyo文件)。3個(gè)-S不要在啟動時(shí)運(yùn)行importsite來查找Python路徑。4個(gè)-v詳細(xì)輸出(導(dǎo)入語句的詳細(xì)跟蹤)。5個(gè)-X禁用基于類的內(nèi)置異常(僅使用字符串);從1.6版開始已過時(shí)。6個(gè)-c命令運(yùn)行作為cmd字符串發(fā)送的Python腳本。7文件從給定文件運(yùn)行Python腳本。以下是所有可用命令行選項(xiàng)的列表-來自命令行的腳本可以通過在應(yīng)用程序上調(diào)用解釋器在命令行執(zhí)行Python腳本,如下所示-$pythonscript.py#Unix/Linux或者,python%script.py#Unix/Linux或者,C:>pythonscript.py#Windows/DOS注意-確保文件權(quán)限模式允許執(zhí)行。集成開發(fā)環(huán)境如果您的系統(tǒng)上有支持Python的GUI應(yīng)用程序,您也可以從圖形用戶界面(GUI)環(huán)境運(yùn)行Python。Unix
-IDLE是第一個(gè)用于Python的UnixIDE。Windows
-PythonWin是Python的第一個(gè)Windows界面,是一個(gè)帶有GUI的IDE。Macintosh
-Macintosh版本的Python以及IDLEIDE可從主網(wǎng)站獲得,可下載為MacBinary或BinHex'd文件。如果您無法正確設(shè)置環(huán)境,則可以向系統(tǒng)管理員尋求幫助。確保Python環(huán)境設(shè)置正確并且運(yùn)行良好。我們還可以使用另一個(gè)名為Anaconda的Python平臺。它包括數(shù)百個(gè)流行的數(shù)據(jù)科學(xué)包和適用于Windows、Linux和MacOS的conda包和虛擬環(huán)境管理器。您可以根據(jù)您的操作系統(tǒng)從鏈接下載它。對于本教程,我們在MSWindows上使用Python3.6.3版本。人工智能與Python——機(jī)器學(xué)習(xí)學(xué)習(xí)是指通過學(xué)習(xí)或經(jīng)驗(yàn)獲得知識或技能?;诖?,我們可以定義機(jī)器學(xué)習(xí)(ML)如下-它可以定義為計(jì)算機(jī)科學(xué)領(lǐng)域,更具體地說是人工智能的應(yīng)用,它為計(jì)算機(jī)系統(tǒng)提供了利用數(shù)據(jù)進(jìn)行學(xué)習(xí)并根據(jù)經(jīng)驗(yàn)進(jìn)行改進(jìn)的能力,而無需明確編程。基本上,機(jī)器學(xué)習(xí)的主要重點(diǎn)是讓計(jì)算機(jī)在沒有人為干預(yù)的情況下自動學(xué)習(xí)?,F(xiàn)在的問題是,如何開始和完成這樣的學(xué)習(xí)?它可以從數(shù)據(jù)觀察開始。數(shù)據(jù)也可以是一些示例、說明或一些直接經(jīng)驗(yàn)。然后在這個(gè)輸入的基礎(chǔ)上,機(jī)器通過尋找數(shù)據(jù)中的一些模式來做出更好的決策。機(jī)器學(xué)習(xí)(ML)的類型機(jī)器學(xué)習(xí)算法幫助計(jì)算機(jī)系統(tǒng)在沒有明確編程的情況下進(jìn)行學(xué)習(xí)。這些算法分為有監(jiān)督的或無監(jiān)督的。現(xiàn)在讓我們看看一些算法-監(jiān)督機(jī)器學(xué)習(xí)算法這是最常用的機(jī)器學(xué)習(xí)算法。之所以稱為有監(jiān)督的,是因?yàn)閺挠?xùn)練數(shù)據(jù)集學(xué)習(xí)算法的過程可以被認(rèn)為是老師監(jiān)督學(xué)習(xí)過程。在這種ML算法中,可能的結(jié)果是已知的,訓(xùn)練數(shù)據(jù)也標(biāo)有正確答案??梢岳斫馊缦?假設(shè)我們有輸入變量x和輸出變量y,我們應(yīng)用了一種算法來學(xué)習(xí)從輸入到輸出的映射函數(shù),例如-Y=f(x)現(xiàn)在,主要目標(biāo)是很好地近似映射函數(shù),以便當(dāng)我們有新的輸入數(shù)據(jù)(x)時(shí),我們可以預(yù)測該數(shù)據(jù)的輸出變量(Y)。主要有監(jiān)督的學(xué)習(xí)問題可以分為以下兩種問題-分類-當(dāng)我們有分類輸出如“黑色”,“教學(xué)”,“非教學(xué)”等時(shí),一個(gè)問題稱為分類問題。回歸-當(dāng)我們有諸如“距離”、“千克”等真實(shí)值輸出時(shí),一個(gè)問題稱為回歸問題。決策樹、隨機(jī)森林、knn、邏輯回歸是監(jiān)督機(jī)器學(xué)習(xí)算法的例子。無監(jiān)督機(jī)器學(xué)習(xí)算法顧名思義,這類機(jī)器學(xué)習(xí)算法沒有任何主管提供任何指導(dǎo)。這就是為什么無監(jiān)督機(jī)器學(xué)習(xí)算法與某些人所謂的真正人工智能密切相關(guān)的原因??梢岳斫馊缦?假設(shè)我們有輸入變量x,那么就沒有監(jiān)督學(xué)習(xí)算法中相應(yīng)的輸出變量。簡單來說,我們可以說,在無監(jiān)督學(xué)習(xí)中,沒有正確答案,也沒有老師指導(dǎo)。算法有助于發(fā)現(xiàn)數(shù)據(jù)中有趣的模式。無監(jiān)督學(xué)習(xí)問題可分為以下兩種問題-聚類-在聚類問題中,我們需要發(fā)現(xiàn)數(shù)據(jù)中的固有分組。例如,按購買行為對客戶進(jìn)行分組。Association
-一個(gè)問題被稱為關(guān)聯(lián)問題,因?yàn)檫@類問題需要發(fā)現(xiàn)描述我們大部分?jǐn)?shù)據(jù)的規(guī)則。例如,查找同時(shí)購買x和y的客戶。用于聚類的K-means、用于關(guān)聯(lián)的Apriori算法是無監(jiān)督機(jī)器學(xué)習(xí)算法的示例。強(qiáng)化機(jī)器學(xué)習(xí)算法這類機(jī)器學(xué)習(xí)算法用得很少。這些算法訓(xùn)練系統(tǒng)做出特定的決定?;旧希瑱C(jī)器暴露在一個(gè)環(huán)境中,在這個(gè)環(huán)境中,它使用試錯法不斷地自我訓(xùn)練。這些算法從過去的經(jīng)驗(yàn)中學(xué)習(xí),并試圖捕捉最好的知識來做出準(zhǔn)確的決策。馬爾可夫決策過程是強(qiáng)化機(jī)器學(xué)習(xí)算法的一個(gè)例子。最常見的機(jī)器學(xué)習(xí)算法在本節(jié)中,我們將了解最常見的機(jī)器學(xué)習(xí)算法。算法描述如下-線性回歸它是統(tǒng)計(jì)和機(jī)器學(xué)習(xí)中最著名的算法之一?;靖拍?主要是線性回歸是一種線性模型,它假設(shè)輸入變量x和單個(gè)輸出變量y之間存在線性關(guān)系。換句話說,我們可以說y可以從輸入變量x的線性組合中計(jì)算出來??梢酝ㄟ^擬合最佳線來建立變量之間的關(guān)系。線性回歸的類型線性回歸有以下兩種類型-簡單線性回歸-如果線性回歸算法只有一個(gè)自變量,則稱為簡單線性回歸。多元線性回歸-如果線性回歸算法具有多個(gè)自變量,則稱為多元線性回歸。線性回歸主要用于根據(jù)連續(xù)變量估計(jì)實(shí)際值。例如,可以通過線性回歸估算基于實(shí)際值的商店一天的總銷售額。邏輯回歸它是一種分類算法,也稱為邏輯回歸。主要是邏輯回歸是一種分類算法,用于根據(jù)給定的自變量集估計(jì)離散值,如0或1、真或假、是或否。基本上,它預(yù)測概率,因此其輸出介于0和1之間。決策樹決策樹是一種監(jiān)督學(xué)習(xí)算法,主要用于分類問題?;旧纤且粋€(gè)分類器,表示為基于自變量的遞歸分區(qū)。決策樹具有形成有根樹的節(jié)點(diǎn)。有根樹是有向樹,其節(jié)點(diǎn)稱為“根”。Root沒有任何入邊,所有其他節(jié)點(diǎn)都有一個(gè)入邊。這些節(jié)點(diǎn)稱為葉節(jié)點(diǎn)或決策節(jié)點(diǎn)。例如,考慮以下決策樹來查看一個(gè)人是否適合。支持向量機(jī)(SVM)它用于分類和回歸問題。但主要用于分類問題。SVM的主要概念是將每個(gè)數(shù)據(jù)項(xiàng)繪制為n維空間中的一個(gè)點(diǎn),每個(gè)特征的值是特定坐標(biāo)的值。這里n是我們將擁有的特征。以下是理解SVM概念的簡單圖形表示-在上圖中,我們有兩個(gè)特征,因此我們首先需要在二維空間中繪制這兩個(gè)變量,其中每個(gè)點(diǎn)都有兩個(gè)坐標(biāo),稱為支持向量。該線將數(shù)據(jù)分成兩個(gè)不同的分類組。這條線就是分類器。樸素貝葉斯這也是一種分類技術(shù)。這種分類技術(shù)背后的邏輯是使用貝葉斯定理來構(gòu)建分類器。假設(shè)預(yù)測變量是獨(dú)立的。簡而言之,它假設(shè)類中特定特征的存在與任何其他特征的存在無關(guān)。以下是貝葉斯定理的等式-$$P\left(\frac{A}{B}\right)=\frac{P\left(\frac{B}{A}\right)P\left(A\right)}{P\left(B\右)}$$樸素貝葉斯模型易于構(gòu)建,對大型數(shù)據(jù)集特別有用。K最近鄰(KNN)它用于問題的分類和回歸。它被廣泛用于解決分類問題。該算法的主要概念是它用于存儲所有可用的案例,并根據(jù)其k個(gè)鄰居的多數(shù)票對新案例進(jìn)行分類。然后將案例分配給在其K近鄰中最常見的類,通過距離函數(shù)測量。距離函數(shù)可以是歐氏距離、閔可夫斯基距離和漢明距離??紤]以下使用KNN-在計(jì)算上,KNN比用于分類問題的其他算法昂貴。需要對變量進(jìn)行歸一化,否則更高范圍的變量會使它產(chǎn)生偏差。在KNN中,我們需要在去噪等預(yù)處理階段進(jìn)行工作。K-均值聚類顧名思義,就是用來解決聚類問題的。它基本上是一種無監(jiān)督學(xué)習(xí)。K-Means聚類算法的主要邏輯是通過多個(gè)簇對數(shù)據(jù)集進(jìn)行分類。按照以下步驟通過K-means形成集群-K-means為每個(gè)簇選擇k個(gè)點(diǎn),稱為質(zhì)心。現(xiàn)在每個(gè)數(shù)據(jù)點(diǎn)形成一個(gè)具有最接近質(zhì)心的簇,即k個(gè)簇。現(xiàn)在,它將根據(jù)現(xiàn)有的集群成員找到每個(gè)集群的質(zhì)心。我們需要重復(fù)這些步驟,直到出現(xiàn)收斂。隨機(jī)森林它是一種監(jiān)督分類算法。隨機(jī)森林算法的優(yōu)點(diǎn)是它可以用于分類和回歸類問題?;旧纤菦Q策樹(即森林)的集合,或者你可以說是決策樹的集合。隨機(jī)森林的基本概念是每棵樹給出一個(gè)分類,森林從中選擇最好的分類。以下是隨機(jī)森林算法的優(yōu)點(diǎn)-隨機(jī)森林分類器可用于分類和回歸任務(wù)。他們可以處理缺失值。即使我們在森林中有更多的樹木,它也不會過度擬合模型。人工智能與Python–數(shù)據(jù)準(zhǔn)備我們已經(jīng)研究了有監(jiān)督和無監(jiān)督的機(jī)器學(xué)習(xí)算法。這些算法需要格式化數(shù)據(jù)才能開始訓(xùn)練過程。我們必須以某種方式準(zhǔn)備或格式化數(shù)據(jù),以便它可以作為ML算法的輸入提供。本章重點(diǎn)介紹機(jī)器學(xué)習(xí)算法的數(shù)據(jù)準(zhǔn)備。預(yù)處理數(shù)據(jù)在我們的日常生活中,我們處理大量數(shù)據(jù),但這些數(shù)據(jù)都是原始形式。為了提供數(shù)據(jù)作為機(jī)器學(xué)習(xí)算法的輸入,我們需要將其轉(zhuǎn)換為有意義的數(shù)據(jù)。這就是數(shù)據(jù)預(yù)處理的用武之地。換句話說,我們可以說,在將數(shù)據(jù)提供給機(jī)器學(xué)習(xí)算法之前,我們需要對數(shù)據(jù)進(jìn)行預(yù)處理。數(shù)據(jù)預(yù)處理步驟按照以下步驟在Python中預(yù)處理數(shù)據(jù)-第1步-導(dǎo)入有用的包-如果我們使用Python,那么這將是將數(shù)據(jù)轉(zhuǎn)換為特定格式的第一步,即預(yù)處理??梢园慈缦路绞酵瓿?importnumpyasnpimportsklearn.preprocessing在這里,我們使用了以下兩個(gè)包-NumPy
-基本上,NumPy是一個(gè)通用的數(shù)組處理包,旨在有效地操作任意記錄的大型多維數(shù)組,而不會為小型多維數(shù)組犧牲太多速度。Sklearn.preprocessing
-該包提供了許多常用的實(shí)用函數(shù)和轉(zhuǎn)換器類,用于將原始特征向量更改為更適合機(jī)器學(xué)習(xí)算法的表示。第2步-定義樣本數(shù)據(jù)-導(dǎo)入包后,我們需要定義一些樣本數(shù)據(jù),以便我們可以對該數(shù)據(jù)應(yīng)用預(yù)處理技術(shù)。我們現(xiàn)在將定義以下示例數(shù)據(jù)-input_data=np.array([2.1,-1.9,5.5],[-1.5,2.4,3.5],[0.5,-7.9,5.6],[5.9,2.3,-5.8])Step3-Applyingpreprocessingtechnique
-在此步驟中,我們需要應(yīng)用任何預(yù)處理技術(shù)。以下部分描述了數(shù)據(jù)預(yù)處理技術(shù)。數(shù)據(jù)預(yù)處理技術(shù)數(shù)據(jù)預(yù)處理技術(shù)如下所述-二值化這是我們需要將數(shù)值轉(zhuǎn)換為布爾值時(shí)使用的預(yù)處理技術(shù)。我們可以使用內(nèi)置方法對輸入數(shù)據(jù)進(jìn)行二值化,例如通過以下方式使用0.5作為閾值-data_binarized=preprocessing.Binarizer(threshold=0.5).transform(input_data)print("\nBinarizeddata:\n",data_binarized)現(xiàn)在,運(yùn)行上面的代碼后,我們將得到以下輸出,所有高于0.5(閾值)的值將被轉(zhuǎn)換為1,所有低于0.5的值將被轉(zhuǎn)換為0。二值化數(shù)據(jù)[[1.0.1.][0.1.1.][0.0.1.][1.1.0.]]均值去除這是機(jī)器學(xué)習(xí)中使用的另一種非常常見的預(yù)處理技術(shù)?;旧纤糜趶奶卣飨蛄恐邢?,以便每個(gè)特征都以零為中心。我們還可以去除特征向量中特征的偏差。為了對樣本數(shù)據(jù)應(yīng)用均值去除預(yù)處理技術(shù),我們可以編寫如下所示的Python代碼。該代碼將顯示輸入數(shù)據(jù)的均值和標(biāo)準(zhǔn)差-print("Mean=",input_data.mean(axis=0))print("Stddeviation=",input_data.std(axis=0))運(yùn)行以上代碼行后,我們將得到以下輸出-Mean=[1.75-1.2752.2]Stddeviation=[2.714313914.200223214.69414529]現(xiàn)在,下面的代碼將刪除輸入數(shù)據(jù)的均值和標(biāo)準(zhǔn)差-data_scaled=preprocessing.scale(input_data)print("Mean=",data_scaled.mean(axis=0))print("Stddeviation=",data_scaled.std(axis=0))運(yùn)行以上代碼行后,我們將得到以下輸出-Mean=[1.11022302e-160.00000000e+000.00000000e+00]Stddeviation=[1.1.1.]縮放這是另一種用于縮放特征向量的數(shù)據(jù)預(yù)處理技術(shù)。需要對特征向量進(jìn)行縮放,因?yàn)槊總€(gè)特征的值都可以在許多隨機(jī)值之間變化。換句話說,我們可以說縮放很重要,因?yàn)槲覀儾幌M魏翁卣骶C合變大或變小。借助以下Python代碼,我們可以縮放輸入數(shù)據(jù),即特征向量-#最小最大縮放data_scaler_minmax=preprocessing.MinMaxScaler(feature_range=(0,1))data_scaled_minmax=data_scaler_minmax.fit_transform(input_data)print("\nMinmaxscaleddata:\n",data_scaled_minmax)運(yùn)行以上代碼行后,我們將得到以下輸出-最小最大縮放數(shù)據(jù)[[0.486486490.582524270.99122807][0.1.0.81578947][0.270270270.1.][1.0.990291260.]]正?;@是另一種用于修改特征向量的數(shù)據(jù)預(yù)處理技術(shù)。這種修改對于在通用尺度上測量特征向量是必要的。以下是可用于機(jī)器學(xué)習(xí)的兩種歸一化類型-L1歸一化它也被稱為最小絕對偏差。這種歸一化會修改值,使每行中的絕對值總和始終為1。它可以在以下Python代碼的幫助下在輸入數(shù)據(jù)上實(shí)現(xiàn)-#Normalizedatadata_normalized_l1=preprocessing.normalize(input_data,norm='l1')print("\nL1normalizeddata:\n",data_normalized_l1)上面的代碼行生成以下輸出&miuns;L1normalizeddata:[[0.22105263-0.20.57894737][-0.20270270.324324320.47297297][0.03571429-0.564285710.4][0.421428570.16428571-0.41428571]]L2歸一化它也稱為最小二乘法。這種歸一化會修改值,使每行的平方和始終等于1。它可以在以下Python代碼的幫助下在輸入數(shù)據(jù)上實(shí)現(xiàn)-#Normalizedatadata_normalized_l2=preprocessing.normalize(input_data,norm='l2')print("\nL2normalizeddata:\n",data_normalized_l2)上面的代碼行將生成以下輸出-L2normalizeddata:[[0.33946114-0.307131510.88906489][-0.333251060.533201690.7775858][0.05156558-0.814736120.57753446][0.687069140.26784051-0.6754239]]標(biāo)記數(shù)據(jù)我們已經(jīng)知道,某種格式的數(shù)據(jù)對于機(jī)器學(xué)習(xí)算法是必需的。另一個(gè)重要要求是,在將數(shù)據(jù)作為機(jī)器學(xué)習(xí)算法的輸入發(fā)送之前,必須正確標(biāo)記數(shù)據(jù)。例如,如果我們談?wù)摲诸?,?shù)據(jù)上有很多標(biāo)簽。那些標(biāo)簽的形式是文字,數(shù)字等。sklearn中機(jī)器學(xué)習(xí)相關(guān)的功能要求數(shù)據(jù)必須有數(shù)字標(biāo)簽。因此,如果數(shù)據(jù)是其他形式,則必須將其轉(zhuǎn)換為數(shù)字。這種將單詞標(biāo)簽轉(zhuǎn)換為數(shù)字形式的過程稱為標(biāo)簽編碼。標(biāo)簽編碼步驟按照以下步驟在Python中編碼數(shù)據(jù)標(biāo)簽-Step1-導(dǎo)入有用的包如果我們使用Python,那么這將是將數(shù)據(jù)轉(zhuǎn)換為特定格式的第一步,即預(yù)處理。可以按如下方式完成-importnumpyasnpfromsklearnimportpreprocessing第2步-定義樣本標(biāo)簽導(dǎo)入包后,我們需要定義一些樣本標(biāo)簽,以便我們可以創(chuàng)建和訓(xùn)練標(biāo)簽編碼器。我們現(xiàn)在將定義以下樣本標(biāo)簽-#Sampleinputlabelsinput_labels=['red','black','red','green','black','yellow','white']第3步-創(chuàng)建和訓(xùn)練標(biāo)簽編碼器對象在這一步中,我們需要創(chuàng)建標(biāo)簽編碼器并對其進(jìn)行訓(xùn)練。以下Python代碼將有助于做到這一點(diǎn)-#Creatingthelabelencoderencoder=preprocessing.LabelEncoder()encoder.fit(input_labels)以下是運(yùn)行上述Python代碼后的輸出-LabelEncoder()Step4-通過編碼隨機(jī)有序列表來檢查性能此步驟可用于通過對隨機(jī)有序列表進(jìn)行編碼來檢查性能。可以編寫以下Python代碼來執(zhí)行相同的操作-#encodingasetoflabelstest_labels=['green','red','black']encoded_values=encoder.transform(test_labels)print("\nLabels=",test_labels)標(biāo)簽將打印如下-Labels=['green','red','black']現(xiàn)在,我們可以獲得編碼值列表,即轉(zhuǎn)換為數(shù)字的單詞標(biāo)簽如下-print("Encodedvalues=",list(encoded_values))編碼值將打印如下-Encodedvalues=[1,2,0]第5步-通過解碼一組隨機(jī)數(shù)字來檢查性能-此步驟可用于通過解碼隨機(jī)數(shù)字集來檢查性能??梢跃帉懸韵翽ython代碼來執(zhí)行相同的操作-#decodingasetofvaluesencoded_values=[3,0,4,1]decoded_list=encoder.inverse_transform(encoded_values)print("\nEncodedvalues=",encoded_values)現(xiàn)在,編碼值將打印如下-Encodedvalues=[3,0,4,1]print("\nDecodedlabels=",list(decoded_list))現(xiàn)在,解碼值將打印如下-Decodedlabels=['white','black','yellow','green']標(biāo)記數(shù)據(jù)與未標(biāo)記數(shù)據(jù)未標(biāo)記數(shù)據(jù)主要包括可以從世界上輕松獲得的自然或人造物體的樣本。它們包括音頻、視頻、照片、新聞文章等。另一方面,標(biāo)記數(shù)據(jù)采用一組未標(biāo)記數(shù)據(jù),并使用一些有意義的標(biāo)記或標(biāo)簽或類來擴(kuò)充每個(gè)未標(biāo)記數(shù)據(jù)。例如,如果我們有一張照片,那么標(biāo)簽可以根據(jù)照片的內(nèi)容來放置,即它是男孩或女孩或動物或其他任何東西的照片。標(biāo)記數(shù)據(jù)需要人類的專業(yè)知識或?qū)o定的未標(biāo)記數(shù)據(jù)的判斷。在許多情況下,未標(biāo)記的數(shù)據(jù)很豐富且易于獲取,但標(biāo)記的數(shù)據(jù)通常需要人工/專家進(jìn)行注釋。半監(jiān)督學(xué)習(xí)試圖結(jié)合標(biāo)記和未標(biāo)記的數(shù)據(jù)來構(gòu)建更好的模型。人工智能與Python——監(jiān)督學(xué)習(xí):分類在本章中,我們將重點(diǎn)關(guān)注實(shí)施監(jiān)督學(xué)習(xí)——分類。分類技術(shù)或模型試圖從觀察值中得出一些結(jié)論。在分類問題中,我們有分類輸出,例如“黑色”或“白色”或“教學(xué)”和“非教學(xué)”。在構(gòu)建分類模型時(shí),我們需要有包含數(shù)據(jù)點(diǎn)和相應(yīng)標(biāo)簽的訓(xùn)練數(shù)據(jù)集。例如,如果我們想檢查圖像是否是汽車。為了檢查這一點(diǎn),我們將構(gòu)建一個(gè)包含與“汽車”和“無汽車”相關(guān)的兩個(gè)類別的訓(xùn)練數(shù)據(jù)集。然后我們需要使用訓(xùn)練樣本來訓(xùn)練模型。分類模型主要用于人臉識別、垃圾郵件識別等。在Python中構(gòu)建分類器的步驟為了在Python中構(gòu)建分類器,我們將使用Python3和機(jī)器學(xué)習(xí)工具Scikit-learn。按照以下步驟在Python中構(gòu)建分類器-第1步-導(dǎo)入Scikit-learn這將是在Python中構(gòu)建分類器的第一步。在這一步中,我們將安裝一個(gè)名為Scikit-learn的Python包,它是Python中最好的機(jī)器學(xué)習(xí)模塊之一。以下命令將幫助我們導(dǎo)入包-ImportSklearn第2步-導(dǎo)入Scikit-learn的數(shù)據(jù)集在此步驟中,我們可以開始使用機(jī)器學(xué)習(xí)模型的數(shù)據(jù)集。在這里,我們將使用乳腺癌威斯康星診斷數(shù)據(jù)庫。該數(shù)據(jù)集包括有關(guān)乳腺癌腫瘤的各種信息,以及惡性或良性的分類標(biāo)簽。該數(shù)據(jù)集包含569個(gè)腫瘤的569個(gè)實(shí)例或數(shù)據(jù),并包含有關(guān)30個(gè)屬性或特征的信息,例如腫瘤的半徑、紋理、平滑度和面積。借助以下命令,我們可以導(dǎo)入Scikit-learn的乳腺癌數(shù)據(jù)集-fromsklearn.datasetsimportload_breast_cancer現(xiàn)在,以下命令將加載數(shù)據(jù)集。data=load_breast_cancer()以下是重要字典鍵的列表-分類標(biāo)簽名稱(target_names)實(shí)際標(biāo)簽(目標(biāo))屬性/特征名稱(feature_names)屬性(數(shù)據(jù))現(xiàn)在,借助以下命令,我們可以為每組重要信息創(chuàng)建新變量并分配數(shù)據(jù)。換句話說,我們可以使用以下命令組織數(shù)據(jù)-label_names=data['target_names']labels=data['target']feature_names=data['feature_names']features=data['data']現(xiàn)在,為了更清楚,我們可以在以下命令的幫助下打印類標(biāo)簽、第一個(gè)數(shù)據(jù)實(shí)例的標(biāo)簽、我們的特征名稱和特征值-print(label_names)上面的命令將分別打印出惡性和良性的類名。它顯示為下面的輸出-['malignant''benign']現(xiàn)在,下面的命令將顯示它們被映射到二進(jìn)制值0和1。這里0代表惡性癌癥,1代表良性癌癥。您將收到以下輸出-print(labels[0])0下面給出的兩個(gè)命令將生成特征名稱和特征值。print(feature_names[0])meanradiusprint(features[0])[1.79900000e+011.03800000e+011.22800000e+021.00100000e+031.18400000e-012.77600000e-013.00100000e-011.47100000e-012.41900000e-017.87100000e-021.09500000e+009.05300000e-018.58900000e+001.53400000e+026.39900000e-034.90400000e-025.37300000e-021.58700000e-023.00300000e-026.19300000e-032.53800000e+011.73300000e+011.84600000e+022.01900000e+031.62200000e-016.65600000e-017.11900000e-012.65400000e-014.60100000e-011.18900000e-01]從上面的輸出可以看出,第一個(gè)數(shù)據(jù)實(shí)例是一個(gè)惡性腫瘤,其半徑為1.7990000e+01。第3步-將數(shù)據(jù)組織成集合在這一步中,我們將把數(shù)據(jù)分成兩部分,即訓(xùn)練集和測試集。將數(shù)據(jù)分成這些集合非常重要,因?yàn)槲覀儽仨氃诳床灰姷臄?shù)據(jù)上測試我們的模型。為了將數(shù)據(jù)拆分成集合,sklearn有一個(gè)名為train_test_split()的函數(shù)。在以下命令的幫助下,我們可以拆分這些集中的數(shù)據(jù)-fromsklearn.model_selectionimporttrain_test_split上面的命令將從sklearn導(dǎo)入train_test_split函數(shù),下面的命令將數(shù)據(jù)拆分為訓(xùn)練和測試數(shù)據(jù)。在下面給出的示例中,我們使用40%的數(shù)據(jù)進(jìn)行測試,其余數(shù)據(jù)將用于訓(xùn)練模型。train,test,train_labels,test_labels=train_test_split(features,labels,test_size=0.40,random_state=42)第4步-構(gòu)建模型在這一步中,我們將構(gòu)建我們的模型。我們將使用樸素貝葉斯算法來構(gòu)建模型。以下命令可用于構(gòu)建模型-fromsklearn.naive_bayesimportGaussianNB上面的命令將導(dǎo)入GaussianNB模塊。現(xiàn)在,以下命令將幫助您初始化模型。gnb=GaussianNB()我們將通過使用gnb.fit()將模型擬合到數(shù)據(jù)來訓(xùn)練模型。model=gnb.fit(train,train_labels)第5步-評估模型及其準(zhǔn)確性在這一步中,我們將通過對測試數(shù)據(jù)進(jìn)行預(yù)測來評估模型。然后我們也會發(fā)現(xiàn)它的準(zhǔn)確性。為了進(jìn)行預(yù)測,我們將使用predict()函數(shù)。以下命令將幫助您執(zhí)行此操作-preds=gnb.predict(test)print(preds)[100110001110101011101101111110111111010110111111110011111001100111001100101111110110000011111111001001001110110110001110011010011000111011001011010011111110011111111111101110110111111000110101111011011101001111111101111101001101]上面的一系列0和1是腫瘤類別(惡性和良性)的預(yù)測值。現(xiàn)在,通過比較兩個(gè)數(shù)組,即test_labels和preds,我們可以找出模型的準(zhǔn)確性。我們將使用accuracy_score()函數(shù)來確定準(zhǔn)確性。為此考慮以下命令-fromsklearn.metricsimportaccuracy_scoreprint(accuracy_score(test_labels,preds))0.951754385965結(jié)果表明,Na?veBayes分類器的準(zhǔn)確率為95.17%。這樣,借助上述步驟,我們就可以在Python中構(gòu)建我們的分類器了。在Python中構(gòu)建分類器在本節(jié)中,我們將學(xué)習(xí)如何在Python中構(gòu)建分類器。樸素貝葉斯分類器樸素貝葉斯是一種分類技術(shù),用于使用貝葉斯定理構(gòu)建分類器。假設(shè)預(yù)測變量是獨(dú)立的。簡而言之,它假設(shè)類中特定特征的存在與任何其他特征的存在無關(guān)。為了構(gòu)建樸素貝葉斯分類器,我們需要使用名為scikitlearn的python庫。scikit學(xué)習(xí)包下有三種樸素貝葉斯模型,分別是高斯模型、多項(xiàng)式模型和伯努利模型。要構(gòu)建樸素貝葉斯機(jī)器學(xué)習(xí)分類器模型,我們需要以下&minus數(shù)據(jù)集我們將使用名為BreastCancerWisconsinDiagnosticDatabase的數(shù)據(jù)集。該數(shù)據(jù)集包括有關(guān)乳腺癌腫瘤的各種信息,以及惡性或良性的分類標(biāo)簽。該數(shù)據(jù)集包含569個(gè)腫瘤的569個(gè)實(shí)例或數(shù)據(jù),并包含有關(guān)30個(gè)屬性或特征的信息,例如腫瘤的半徑、紋理、平滑度和面積。我們可以從sklearn包導(dǎo)入這個(gè)數(shù)據(jù)集。樸素貝葉斯模型為了構(gòu)建樸素貝葉斯分類器,我們需要一個(gè)樸素貝葉斯模型。如前所述,scikit學(xué)習(xí)包下有三種類型的樸素貝葉斯模型,分別是高斯模型、多項(xiàng)式模型和伯努利模型。在這里,在下面的示例中,我們將使用高斯樸素貝葉斯模型。通過以上內(nèi)容,我們將構(gòu)建一個(gè)樸素貝葉斯機(jī)器學(xué)習(xí)模型,以使用腫瘤信息來預(yù)測腫瘤是惡性還是良性。首先,我們需要安裝sklearn模塊。它可以在以下命令的幫助下完成-ImportSklearn現(xiàn)在,我們需要導(dǎo)入名為BreastCancerWisconsinDiagnosticDatabase的數(shù)據(jù)集。fromsklearn.datasetsimportload_breast_cancer現(xiàn)在,以下命令將加載數(shù)據(jù)集。data=load_breast_cancer()數(shù)據(jù)可以組織如下-label_names=data['target_names']labels=data['target']feature_names=data['feature_names']features=data['data']現(xiàn)在,為了更清楚,我們可以在以下命令的幫助下打印類標(biāo)簽、第一個(gè)數(shù)據(jù)實(shí)例的標(biāo)簽、我們的特征名稱和特征值-print(label_names)上面的命令將分別打印出惡性和良性的類名。它顯示為下面的輸出-['malignant''benign']現(xiàn)在,下面給出的命令將顯示它們被映射到二進(jìn)制值0和1。這里0代表惡性癌癥,1代表良性癌癥。它顯示為下面的輸出-print(labels[0])0以下兩個(gè)命令將生成特征名稱和特征值。print(feature_names[0])meanradiusprint(features[0])[1.79900000e+011.03800000e+011.22800000e+021.00100000e+031.18400000e-012.77600000e-013.00100000e-011.47100000e-012.41900000e-017.87100000e-021.09500000e+009.05300000e-018.58900000e+001.53400000e+026.39900000e-034.90400000e-025.37300000e-021.58700000e-023.00300000e-026.19300000e-032.53800000e+011.73300000e+011.84600000e+022.01900000e+031.62200000e-016.65600000e-017.11900000e-012.65400000e-014.60100000e-011.18900000e-01]從上面的輸出可以看出,第一個(gè)數(shù)據(jù)實(shí)例是一個(gè)惡性腫瘤,其主要半徑為1.7990000e+01。為了在看不見的數(shù)據(jù)上測試我們的模型,我們需要將數(shù)據(jù)拆分為訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)。它可以在以下代碼的幫助下完成-fromsklearn.model_selectionimporttrain_test_split上面的命令將從sklearn導(dǎo)入train_test_split函數(shù),下面的命令將數(shù)據(jù)拆分為訓(xùn)練和測試數(shù)據(jù)。在下面的示例中,我們使用40%的數(shù)據(jù)進(jìn)行測試,而重新挖掘的數(shù)據(jù)將用于訓(xùn)練模型。train,test,train_labels,test_labels=train_test_split(features,labels,test_size=0.40,random_state=42)現(xiàn)在,我們正在使用以下命令構(gòu)建模型-fromsklearn.naive_bayesimportGaussianNB上面的命令將導(dǎo)入GaussianNB模塊?,F(xiàn)在,使用下面給出的命令,我們需要初始化模型。gnb=GaussianNB()我們將通過使用gnb.fit()將模型擬合到數(shù)據(jù)來訓(xùn)練模型。model=gnb.fit(train,train_labels)現(xiàn)在,通過對測試數(shù)據(jù)進(jìn)行預(yù)測來評估模型,可以按如下方式完成-preds=gnb.predict(test)print(preds)[100110001110101011101101111110111111010110111111110011111001100111001100101111110110000011111111001001001110110110001110011010011000111011001011010011111110011111111111101110110111111000110101111011011101001111111101111101001101]上面的一系列0和1是腫瘤類別(即惡性和良性)的預(yù)測值?,F(xiàn)在,通過比較兩個(gè)數(shù)組,即test_labels和preds,我們可以找出模型的準(zhǔn)確性。我們將使用accuracy_score()函數(shù)來確定準(zhǔn)確性??紤]以下命令-fromsklearn.metricsimportaccuracy_scoreprint(accuracy_score(test_labels,preds))0.951754385965結(jié)果表明,Na?veBayes分類器的準(zhǔn)確率為95.17%。那是基于樸素貝斯高斯模型的機(jī)器學(xué)習(xí)分類器。支持向量機(jī)(SVM)基本上,支持向量機(jī)(SVM)是一種有監(jiān)督的機(jī)器學(xué)習(xí)算法,可用于回歸和分類。SVM的主要概念是將每個(gè)數(shù)據(jù)項(xiàng)繪制為n維空間中的一個(gè)點(diǎn),每個(gè)特征的值是特定坐標(biāo)的值。這里n是我們將擁有的特征。以下是理解SVM概念的簡單圖形表示-在上圖中,我們有兩個(gè)特征。因此,我們首先需要在二維空間中繪制這兩個(gè)變量,其中每個(gè)點(diǎn)都有兩個(gè)坐標(biāo),稱為支持向量。該線將數(shù)據(jù)分成兩個(gè)不同的分類組。這條線就是分類器。在這里,我們將使用scikit-learn和iris數(shù)據(jù)集構(gòu)建一個(gè)SVM分類器。Scikitlearn庫有sklearn.svm模塊,并提供sklearn.svm.svc用于分類?;?個(gè)特征預(yù)測鳶尾植物類別的SVM分類器如下所示。數(shù)據(jù)集我們將使用鳶尾花數(shù)據(jù)集,其中包含3個(gè)類,每個(gè)類有50個(gè)實(shí)例,其中每個(gè)類指的是一種鳶尾植物。每個(gè)實(shí)例都有四個(gè)特征,即萼片長度、萼片寬度、花瓣長度和花瓣寬度?;?個(gè)特征預(yù)測鳶尾植物類別的SVM分類器如下所示。核心它是SVM使用的一種技術(shù)。基本上這些是采用低維輸入空間并將其轉(zhuǎn)換為高維空間的函數(shù)。它將不可分離的問題轉(zhuǎn)化為可分離的問題。核函數(shù)可以是線性、多項(xiàng)式、rbf和sigmoid中的任意一種。在這個(gè)例子中,我們將使用線性內(nèi)核?,F(xiàn)在讓我們導(dǎo)入以下包-importpandasaspdimportnumpyasnpfromsklearnimportsvm,datasetsimportmatplotlib.pyplotasplt現(xiàn)在,加載輸入數(shù)據(jù)-iris=datasets.load_iris()我們正在采用前兩個(gè)功能-X=iris.data[:,:2]y=iris.target我們將用原始數(shù)據(jù)繪制支持向量機(jī)邊界。我們正在創(chuàng)建一個(gè)網(wǎng)格來繪制。x_min,x_max=X[:,0].min()-1,X[:,0].max()+1y_min,y_max=X[:,1].min()-1,X[:,1].max()+1h=(x_max/x_min)/100xx,yy=np.meshgrid(np.arange(x_min,x_max,h),np.arange(y_min,y_max,h))X_plot=np.c_[xx.ravel(),yy.ravel()]我們需要給出正則化參數(shù)的值。C=1.0我們需要創(chuàng)建SVM分類器對象。Svc_classifier=svm_classifier.SVC(kernel='linear',C=C,decision_function_shape='ovr').fit(X,y)Z=svc_classifier.predict(X_plot)Z=Z.reshape(xx.shape)plt.figure(figsize=(15,5))plt.subplot(121)plt.contourf(xx,yy,Z,cmap=plt.cm.tab10,alpha=0.3)plt.scatter(X[:,0],X[:,1],c=y,cmap=plt.cm.Set1)plt.xlabel('Sepallength')plt.ylabel('Sepalwidth')plt.xlim(xx.min(),xx.max())plt.title('SVCwithlinearkernel')邏輯回歸基本上,邏輯回歸模型是監(jiān)督分類算法家族的成員之一。邏輯回歸通過使用邏輯函數(shù)估計(jì)概率來衡量因變量和自變量之間的關(guān)系。在這里,如果我們談?wù)撘蜃兞亢妥宰兞?,那么因變量就是我們要預(yù)測的目標(biāo)類變量,而另一方面,自變量是我們要用來預(yù)測目標(biāo)類的特征。在邏輯回歸中,估計(jì)概率意味著預(yù)測事件發(fā)生的可能性。例如,店主想預(yù)測進(jìn)入商店的顧客是否會購買游戲站(例如)。顧客會有很多特征——性別、年齡等,店主會觀察這些特征來預(yù)測發(fā)生的可能性,即是否購買游戲機(jī)。邏輯函數(shù)是用于構(gòu)建具有各種參數(shù)的函數(shù)的S型曲線。先決條件在使用邏輯回歸構(gòu)建分類器之前,我們需要在我們的系統(tǒng)上安裝Tkinter包。它可以從pthong安裝?,F(xiàn)在,借助下面給出的代碼,我們可以使用邏輯回歸創(chuàng)建分類器-首先,我們將導(dǎo)入一些包-importnumpyasnpfromsklearnimportlinear_modelimportmatplotlib.pyplotasplt現(xiàn)在,我們需要定義樣本數(shù)據(jù),可以按如下方式完成-X=np.array([[2,4.8],[2.9,4.7],[2.5,5],[3.2,5.5],[6,5],[7.6,4],[3.2,0.9],[2.9,1.9],[2.4,3.5],[0.5,3.4],[1,4],[0.9,5.9]])y=np.array([0,0,0,1,1,1,2,2,2,3,3,3])接下來,我們需要創(chuàng)建邏輯回歸分類器,可以按如下方式完成-Classifier_LR=linear_model.LogisticRegression(solver='liblinear',C=75)最后但并非最不重要的是,我們需要訓(xùn)練這個(gè)分類器-Classifier_LR.fit(X,y)現(xiàn)在,我們?nèi)绾慰梢暬敵觯窟@可以通過創(chuàng)建一個(gè)名為Logistic_visualize()的函數(shù)來完成-DefLogistic_visualize(Classifier_LR,X,y):min_x,max_x=X[:,0].min()-1.0,X[:,0].max()+1.0min_y,max_y=X[:,1].min()-1.0,X[:,1].max()+1.0在上面的行中,我們定義了要在網(wǎng)格中使用的最小值和最大值X和Y。此外,我們將定義繪制網(wǎng)格的步長。mesh_step_size=0.02讓我們定義X和Y值的網(wǎng)格如下-x_vals,y_vals=np.meshgrid(np.arange(min_x,max_x,mesh_step_size),np.arange(min_y,max_y,mesh_step_size))借助以下代碼,我們可以在網(wǎng)格上運(yùn)行分類器-output=classifier.predict(np.c_[x_vals.ravel(),y_vals.ravel()])output=output.reshape(x_vals.shape)plt.figure()plt.pcolormesh(x_vals,y_vals,output,cmap=plt.cm.gray)plt.scatter(X[:,0],X[:,1],c=y,s=75,edgecolors='black',linewidth=1,cmap=plt.cm.Paired)以下代碼行將指定繪圖的邊界plt.xlim(x_vals.min(),x_vals.max())plt.ylim(y_vals.min(),y_vals.max())plt.xticks((np.arange(int(X[:,0].min()-1),int(X[:,0].max()+1),1.0)))plt.yticks((np.arange(int(X[:,1].min()-1),int(X[:,1].max()+1),1.0)))plt.show()現(xiàn)在,運(yùn)行代碼后我們將得到以下輸出,邏輯回歸分類器-決策樹分類器決策樹基本上是一個(gè)二叉樹流程圖,其中每個(gè)節(jié)點(diǎn)根據(jù)某個(gè)特征變量拆分一組觀察值。在這里,我們正在構(gòu)建一個(gè)決策樹分類器來預(yù)測男性或女性。我們將采用一個(gè)包含19個(gè)樣本的非常小的數(shù)據(jù)集。這些樣本將包含兩個(gè)特征——“身高”和“頭發(fā)長度”。先決條件為了構(gòu)建以下分類器,我們需要安裝pydotplus和graphviz?;旧?,graphviz是一個(gè)使用點(diǎn)文件繪制圖形的工具,而pydotplus是Graphviz的點(diǎn)語言的一個(gè)模塊。它可以使用包管理器或pip安裝?,F(xiàn)在,我們可以在以下Python代碼的幫助下構(gòu)建決策樹分類器-首先,讓我們按如下方式導(dǎo)入一些重要的庫-importpydotplusfromsklearnimporttreefromsklearn.datasetsimportload_irisfromsklearn.metricsimportclassification_reportfromsklearnimportcross_validationimportcollections現(xiàn)在,我們需要提供如下數(shù)據(jù)集-X=[[165,19],[175,32],[136,35],[174,65],[141,28],[176,15],[131,32],[166,6],[128,32],[179,10],[136,34],[186,2],[126,25],[176,28],[112,38],[169,9],[171,36],[116,25],[196,25]]Y=['Man','Woman','Woman','Man','Woman','Man','Woman','Man','Woman','Man','Woman','Man','Woman','Woman','Woman','Man','Woman','Woman','Man']data_feature_names=['height','lengthofhair']X_train,X_test,Y_train,Y_test=cross_validation.train_test_split(X,Y,test_size=0.40,random_state=5)提供數(shù)據(jù)集后,我們需要擬合模型,可以按如下方式完成-clf=tree.DecisionTreeClassifier()clf=clf.fit(X,Y)可以借助以下Python代碼進(jìn)行預(yù)測-prediction=clf.predict([[133,37]])print(prediction)我們可以借助以下Python代碼可視化決策樹-dot_data=tree.export_graphviz(clf,feature_names=data_feature_names,out_file=None,filled=True,rounded=True)graph=pydotplus.graph_from_dot_data(dot_data)colors=('orange','yellow')edges=collections.defaultdict(list)foredgeingraph.get_edge_list():edges[edge.get_source()].append(int(edge.get_destination()))foredgeinedges:edges[edge].sort()foriinrange(2):dest=graph.get_node(str(edges[edge][i]))[0]dest.set_fillcolor(colors[i])graph.write_png('Decisiontree16.png')它將對上述代碼的預(yù)測作為['Woman']并創(chuàng)建以下決策樹-我們可以改變預(yù)測中的特征值來測試它。隨機(jī)森林分類器眾所周知,集成方法是將機(jī)器學(xué)習(xí)模型組合成更強(qiáng)大的機(jī)器學(xué)習(xí)模型的方法。決策樹的集合隨機(jī)森林就是其中之一。它比單個(gè)決策樹更好,因?yàn)樵诒A纛A(yù)測能力的同時(shí),它可以通
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025農(nóng)村信用合作社聘用合同樣本
- 二零二五年度國際貨物出口合同范文:非洲新興市場合作項(xiàng)目
- 2025年度公廁工程承包合同書(含社區(qū)共建)3篇
- 二零二五年度公司施工隊(duì)鋼結(jié)構(gòu)工程施工合作協(xié)議3篇
- 二零二五年度全新高空橋梁施工意外事故免責(zé)責(zé)任書3篇
- 二零二五年度智能倉儲物流系統(tǒng)采購合同模板2篇
- 二零二五年度消防隊(duì)伍后勤保障服務(wù)合同3篇
- 2025年度農(nóng)村出租房租賃與農(nóng)村電子商務(wù)運(yùn)營服務(wù)合同
- 2025年度智慧城市建設(shè)項(xiàng)目合同2篇
- 二零二五年度農(nóng)村集體土地房屋產(chǎn)權(quán)轉(zhuǎn)讓合同下載
- 肺脹病(慢性阻塞性肺疾病)中醫(yī)臨床路徑
- 壓鑄機(jī)作業(yè)流程優(yōu)化案例分析課件
- 教師課堂提問的有效性觀察量表
- 手寫數(shù)字識別
- 中醫(yī)臨床路徑眼科
- 甲狀腺細(xì)針穿刺細(xì)胞學(xué)檢查
- 一年級上數(shù)學(xué)教案解決問題復(fù)習(xí)課_人教版
- 行進(jìn)間單手低手上籃教案
- 簡約中國風(fēng)蘭花信紙背景模板
- 安利培訓(xùn)體系介紹
- 推薦-挖掘機(jī)檢驗(yàn)報(bào)告精品
評論
0/150
提交評論