本書(shū)的寫(xiě)作目的旨在幫助大量正走在、或即將走向?qū)W習(xí)機(jī)器學(xué)習(xí)路上的廣大讀者朋友。我們?cè)谌粘=虒W(xué)和培養(yǎng)研究生過(guò)程中發(fā)現(xiàn),很多同學(xué)一方面想學(xué)、愿意學(xué);另一方面又遇到入門(mén)難的問(wèn)題,希望能有一本書(shū)旨在幫助正走在或即將走向?qū)W習(xí)機(jī)器學(xué)習(xí)路上的廣大讀者朋友。我們?cè)谌粘=虒W(xué)和培養(yǎng)研究生過(guò)程中發(fā)現(xiàn),很多同學(xué)一方面想學(xué)、愿意學(xué); 另一方面又遇到入門(mén)難的問(wèn)題,希望能有一本書(shū)、一本教材講原理、給數(shù)據(jù)、給源碼、給實(shí)驗(yàn),帶著入門(mén)。本著這樣一個(gè)初衷,我們選擇了機(jī)器學(xué)習(xí)領(lǐng)域析十大經(jīng)典算法,把我們平常培養(yǎng)碩士研究生一年級(jí)剛?cè)胄W(xué)生的算法材料整理,開(kāi)放提供給廣大希望學(xué)習(xí)的讀者朋友,寫(xiě)一本機(jī)器學(xué)習(xí)入門(mén)級(jí)的學(xué)習(xí)材料。每章完整的源代碼掃描二維碼即可下載,每個(gè)算法一個(gè)Python工程,實(shí)驗(yàn)數(shù)據(jù)就在每個(gè)工程的data文件夾下。代碼風(fēng)格盡量保持一致,讓讀者更容易理解。 本書(shū)可作為高等學(xué)校各專業(yè)機(jī)器學(xué)習(xí)及相關(guān)課程的教學(xué)參考書(shū)。本書(shū)、一本教材講原理、給數(shù)據(jù)、給源碼、給實(shí)驗(yàn),帶著入門(mén)。
本書(shū)為《機(jī)器學(xué)習(xí)經(jīng)典算法實(shí)踐(JAVA版)》的姊妹篇。應(yīng)讀者要求,由于當(dāng)前Python語(yǔ)言在機(jī)器學(xué)習(xí)領(lǐng)域的廣泛使用,本次出版由書(shū)稿寫(xiě)作組李茜博士牽頭,將原書(shū)稿中全部算法使用Python語(yǔ)言實(shí)現(xiàn)。同時(shí),為了保證和原書(shū)Java版代碼風(fēng)格一致,在Python實(shí)現(xiàn)時(shí)盡量保證原有的類(lèi)設(shè)計(jì)、函數(shù)設(shè)計(jì)思想。爭(zhēng)取做到將原書(shū)的JAVA實(shí)現(xiàn)翻譯成Python實(shí)現(xiàn)。
當(dāng)前,大數(shù)據(jù)、社交網(wǎng)絡(luò)、計(jì)算智能、深度學(xué)習(xí)等詞匯都已經(jīng)成為我們?nèi)粘I钪薪?jīng)常看到的熱門(mén)專業(yè)名詞了。如果我們考慮一下這些領(lǐng)域的共性,那么機(jī)器學(xué)習(xí)一定是重要的交集部分。很多來(lái)自不同領(lǐng)域、承擔(dān)不同角色的學(xué)生、工作人員都在加入學(xué)習(xí)機(jī)器學(xué)習(xí)的隊(duì)伍。
本書(shū)旨在幫助正走在或即將走向?qū)W習(xí)機(jī)器學(xué)習(xí)路上的廣大讀者朋友。我們?cè)谌粘=虒W(xué)和培養(yǎng)研究生過(guò)程中發(fā)現(xiàn),很多同學(xué)一方面想學(xué)、愿意學(xué); 另一方面又遇到入門(mén)難的問(wèn)題,希望能有一本書(shū)、一本教材講原理、給數(shù)據(jù)、給源碼、給實(shí)驗(yàn),帶著入門(mén)。本著這樣一個(gè)初衷,我們選擇了機(jī)器學(xué)習(xí)領(lǐng)域的十大經(jīng)典算法,把我們平常培養(yǎng)研一剛?cè)胄W(xué)生的算法材料整理,開(kāi)放提供給廣大希望學(xué)習(xí)的讀者朋友,寫(xiě)一本機(jī)器學(xué)習(xí)入門(mén)級(jí)的學(xué)習(xí)材料。
在整體章節(jié)的安排上,按照: 監(jiān)督{KNN(分類(lèi)),Bayes(分類(lèi)),C4.5(分類(lèi)),SVM(分類(lèi)),AdaBoost(分類(lèi)),CART(回歸)},無(wú)監(jiān)督{KMeans(聚類(lèi)),Apriori(關(guān)聯(lián)規(guī)則),PageRank(排序),EM(參數(shù)估計(jì))}的順序組織章節(jié)。在每一章的講解中,我們以講故事開(kāi)始講解算法原理,接著分別從算法實(shí)現(xiàn)類(lèi)/方法流程圖、類(lèi)/方法說(shuō)明表、關(guān)鍵代碼講解算法實(shí)現(xiàn),然后給出實(shí)驗(yàn)數(shù)據(jù),后給出實(shí)驗(yàn)結(jié)果與分析,寫(xiě)作上盡量做到簡(jiǎn)單易懂。每章完整的源代碼掃描下面二維碼即可下載,每個(gè)算法一個(gè)Python工程,實(shí)驗(yàn)數(shù)據(jù)就在每個(gè)工程的data文件夾下。代碼風(fēng)格盡量保持一致,讓讀者更容易理解。
參與本書(shū)寫(xiě)作工作的幾位作者都是長(zhǎng)期在機(jī)器學(xué)習(xí)領(lǐng)域從事科學(xué)研究、工程實(shí)踐、項(xiàng)目合作的科研人員和高校工作者。我們的想法是通過(guò)我們的努力,以開(kāi)放的心態(tài),能夠幫助到更多的希望學(xué)習(xí)機(jī)器學(xué)習(xí)的讀者。
即使是作為一本入門(mén)級(jí)的學(xué)習(xí)讀物,整個(gè)書(shū)稿從開(kāi)始有這個(gè)想法到后出版前前后后也修改幾十稿。同時(shí)我們也參考學(xué)習(xí)了很多機(jī)器學(xué)習(xí)的書(shū)籍和網(wǎng)絡(luò)資源,真高興當(dāng)下國(guó)內(nèi)有許多學(xué)者、產(chǎn)業(yè)界人員和互聯(lián)網(wǎng)熱心人提供這么多優(yōu)秀的學(xué)習(xí)資源。誠(chéng)然,即便是我們非常努力完善書(shū)稿,由于我們水平有限和時(shí)間倉(cāng)促,可能還會(huì)有這樣或那樣的問(wèn)題,還請(qǐng)讀者海涵,并懇請(qǐng)批評(píng)指正。另外,我們算法自身也在更新迭代,凡是內(nèi)容有更新的地方都會(huì)體現(xiàn)在本書(shū)的后繼版本中,我們也希望本書(shū)的第二版、第三版等不僅僅是內(nèi)容的更誤,還會(huì)加入更多有趣的算法,從傳統(tǒng)機(jī)器學(xué)習(xí)到深度學(xué)習(xí)、增強(qiáng)學(xué)習(xí)。其實(shí),機(jī)器學(xué)習(xí)經(jīng)典算法又何止十大呢。
后,感謝所有直接或間接參與支持本書(shū)寫(xiě)作的同事朋友,感謝實(shí)驗(yàn)室學(xué)生在本書(shū)的寫(xiě)作過(guò)程中幫著收集材料、提意見(jiàn)、討論書(shū)稿,所有的過(guò)程都是美好回憶。
本書(shū)的完成得到國(guó)家重點(diǎn)研發(fā)計(jì)劃(2021YFF0704102)、國(guó)家自然科學(xué)基金(No. 62006032,62072066)、重慶市教育委重點(diǎn)合作項(xiàng)目(HZ2021008)、重慶市教育委科學(xué)技術(shù)研究項(xiàng)目(No.KJZDK201900603,KJQN201900629)、重慶市研究生教育教學(xué)改革項(xiàng)目(No.yjg183081)、重慶市高等教育教學(xué)改革項(xiàng)目(No.203398)、重慶郵電大學(xué)出版基金資助。
作者
2021年12月
●第1章KNN
1.1KNN算法原理
1.1.1算法引入
1.1.2科學(xué)問(wèn)題
1.1.3算法流程
1.1.4算法描述
1.1.5補(bǔ)充說(shuō)明
1.2KNN算法實(shí)現(xiàn)
1.2.1簡(jiǎn)介
1.2.2核心代碼
1.3實(shí)驗(yàn)數(shù)據(jù)
1.4實(shí)驗(yàn)結(jié)果
1.4.1結(jié)果展示
1.4.2結(jié)果分析
●第2章樸素貝葉斯
2.1樸素貝葉斯算法原理
2.1.1樸素貝葉斯算法引入
2.1.2科學(xué)問(wèn)題
2.1.3算法流程
2.1.4算法描述
2.1.5算法補(bǔ)充
2.2樸素貝葉斯算法實(shí)現(xiàn)
2.2.1簡(jiǎn)介
2.2.2核心代碼
2.3實(shí)驗(yàn)數(shù)據(jù)
2.4實(shí)驗(yàn)結(jié)果
2.4.1結(jié)果展示
2.4.2結(jié)果分析
●第3章C4.5
3.1C4.5算法原理
3.1.1C4.5算法引入
3.1.2科學(xué)問(wèn)題
3.1.3算法流程
3.1.4算法描述
3.1.5補(bǔ)充說(shuō)明
3.2C4.5算法實(shí)現(xiàn)
3.2.1簡(jiǎn)介
3.2.2核心代碼
3.3實(shí)驗(yàn)數(shù)據(jù)
3.4實(shí)驗(yàn)結(jié)果
3.4.1結(jié)果展示
3.4.2結(jié)果分析
●第4章SVM
4.1SVM算法原理
4.1.1算法引入
4.1.2科學(xué)問(wèn)題
4.1.3算法流程
4.1.4算法描述
4.1.5補(bǔ)充說(shuō)明
4.2SVM算法實(shí)現(xiàn)
4.2.1簡(jiǎn)介
4.2.2核心代碼
4.3實(shí)驗(yàn)數(shù)據(jù)
4.4實(shí)驗(yàn)結(jié)果
4.4.1結(jié)果展示
4.4.2結(jié)果分析
●第5章AdaBoost
5.1AdaBoost算法原理
5.1.1算法引入
5.1.2科學(xué)問(wèn)題
5.1.3算法流程
5.1.4算法描述
5.1.5補(bǔ)充說(shuō)明
5.2AdaBoost算法實(shí)現(xiàn)
5.2.1簡(jiǎn)介
5.2.2核心代碼
5.3實(shí)驗(yàn)數(shù)據(jù)
5.4實(shí)驗(yàn)結(jié)果
5.4.1結(jié)果展示
5.4.2結(jié)果分析
●第6章CART
6.1CART算法原理
6.1.1算法引入
6.1.2科學(xué)問(wèn)題
6.1.3算法流程
6.1.4算法描述
6.1.5補(bǔ)充說(shuō)明
6.2CART算法實(shí)現(xiàn)
6.2.1簡(jiǎn)介
6.2.2核心代碼
6.3實(shí)驗(yàn)數(shù)據(jù)
6.4實(shí)驗(yàn)結(jié)果
6.4.1結(jié)果展示
6.4.2結(jié)果分析
●第7章KMeans
7.1KMeans算法原理
7.1.1算法引入
7.1.2科學(xué)問(wèn)題
7.1.3算法流程
7.1.4算法描述
7.1.5補(bǔ)充說(shuō)明
7.2KMeans算法實(shí)現(xiàn)
7.2.1簡(jiǎn)介
7.2.2核心代碼
7.3實(shí)驗(yàn)數(shù)據(jù)
7.4實(shí)驗(yàn)結(jié)果
7.4.1結(jié)果展示
7.4.2結(jié)果分析
●第8章Apriori
8.1Apriori算法原理
8.1.1算法引入
8.1.2科學(xué)問(wèn)題
8.1.3算法流程
8.1.4算法描述
8.2Apriori算法實(shí)現(xiàn)
8.2.1簡(jiǎn)介
8.2.2核心代碼
8.3實(shí)驗(yàn)數(shù)據(jù)
8.4實(shí)驗(yàn)結(jié)果
8.4.1結(jié)果展示
8.4.2結(jié)果分析
●第9章PageRank
9.1PageRank算法原理
9.1.1PageRank算法引入
9.1.2科學(xué)問(wèn)題
9.1.3算法流程
9.1.4算法描述
9.2PageRank算法實(shí)現(xiàn)
9.2.1簡(jiǎn)介
9.2.2核心代碼
9.3實(shí)驗(yàn)數(shù)據(jù)
9.4實(shí)驗(yàn)結(jié)果
9.4.1結(jié)果展示
9.4.2結(jié)果分析
●第10章EM
10.1EM算法原理
10.1.1EM算法的引入
10.1.2科學(xué)問(wèn)題
10.1.3理論推導(dǎo)
10.1.4算法流程
10.1.5算法描述
10.2EMGMM實(shí)現(xiàn)
10.2.1簡(jiǎn)介
10.2.2核心代碼
10.3實(shí)驗(yàn)數(shù)據(jù)
10.4實(shí)驗(yàn)結(jié)果
10.4.1結(jié)果展示
10.4.2結(jié)果分析