




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
理解機(jī)器學(xué)習(xí)的概念和目標(biāo)了解機(jī)器學(xué)習(xí)的四個(gè)發(fā)展階段了解機(jī)器學(xué)習(xí)涉及的行業(yè)領(lǐng)域機(jī)器學(xué)習(xí)常用方法了解常用的機(jī)器學(xué)習(xí)方法參考書目《機(jī)器學(xué)習(xí)技術(shù)任務(wù)驅(qū)動式教程》了解機(jī)器學(xué)習(xí)模塊1機(jī)器學(xué)習(xí)技術(shù)考核方式1.平時(shí)表現(xiàn)(70%)
-考勤
-課堂提問
-課堂作業(yè)
-課后作業(yè)2.考試(30%)過程考核目錄機(jī)器學(xué)習(xí)技術(shù)簡介機(jī)器學(xué)習(xí)發(fā)展史機(jī)器學(xué)習(xí)應(yīng)用領(lǐng)域機(jī)器學(xué)習(xí)常用方法Sklearn機(jī)器學(xué)習(xí)庫小結(jié)習(xí)題一了解機(jī)器學(xué)習(xí)模塊1機(jī)器學(xué)習(xí)技術(shù)機(jī)器學(xué)習(xí)簡介機(jī)器學(xué)習(xí)(MachineLearning,ML)專門研究機(jī)器模擬或?qū)崿F(xiàn)人類的行為,以獲得新的知識或技能,并且能夠優(yōu)化現(xiàn)有的知識結(jié)果使之適應(yīng)新的環(huán)境。模擬機(jī)器學(xué)習(xí)簡介機(jī)器學(xué)習(xí)是將現(xiàn)實(shí)中的問題抽象為數(shù)學(xué)模型,利用歷史數(shù)據(jù)對數(shù)據(jù)模型進(jìn)行訓(xùn)練,然后基于數(shù)據(jù)模型對新數(shù)據(jù)進(jìn)行求解,并將結(jié)果再轉(zhuǎn)為現(xiàn)實(shí)問題的答案的過程。(1)現(xiàn)實(shí)問題抽象為數(shù)學(xué)問題;1機(jī)器學(xué)習(xí)的實(shí)現(xiàn)步驟(2)數(shù)據(jù)處理為要求的格式;(3)選擇或創(chuàng)建模型;(4)模型訓(xùn)練及評估;(5)預(yù)測新的數(shù)據(jù)。機(jī)器學(xué)習(xí)簡介主要步驟2機(jī)器學(xué)習(xí)的處理流程機(jī)器學(xué)習(xí)發(fā)展史探索期:20世紀(jì)50年代~60年代中葉1
第1/4階段側(cè)重于非符號的神經(jīng)元模型探索,研究目標(biāo)是自組織系統(tǒng)和自適應(yīng)系統(tǒng)。主要研究方法是不斷修改系統(tǒng)的控制參數(shù)以改進(jìn)系統(tǒng)的執(zhí)行能力,不涉及與具體任務(wù)有關(guān)的知識。塞繆爾的跳棋程序就是本階段的典型例子。這個(gè)時(shí)期的機(jī)器學(xué)習(xí)方法取得的學(xué)習(xí)結(jié)果都很有限,遠(yuǎn)不能滿足人們對機(jī)器學(xué)習(xí)系統(tǒng)的期望。我國研制出了數(shù)字識別學(xué)習(xí)機(jī)。機(jī)器學(xué)習(xí)發(fā)展史發(fā)展期:20世紀(jì)60年代中葉~70年代中葉2
第2/4階段側(cè)重于符號學(xué)習(xí),研究目標(biāo)是模擬人類的概念學(xué)習(xí)過程,并采用邏輯結(jié)構(gòu)和圖結(jié)構(gòu)作為機(jī)器內(nèi)部描述。機(jī)器學(xué)習(xí)采用符號來描述概念,并提出了關(guān)于學(xué)習(xí)概念的各種假設(shè)。代表性工作有溫斯頓(Winston)的結(jié)構(gòu)學(xué)習(xí)系統(tǒng)和海思(Hayes)等人的歸納學(xué)習(xí)系統(tǒng)。這類學(xué)習(xí)系統(tǒng)只能學(xué)習(xí)單一概念,不能投入實(shí)際應(yīng)用。我國機(jī)器學(xué)習(xí)研究陷于停滯。機(jī)器學(xué)習(xí)發(fā)展史復(fù)興期:20世紀(jì)70年代中葉~80年代中葉3
第3/4階段機(jī)器學(xué)習(xí)的概念從單個(gè)到多個(gè),機(jī)器學(xué)習(xí)過程建立在大規(guī)模的知識庫上,實(shí)現(xiàn)知識強(qiáng)化學(xué)習(xí)。1980年,美國卡內(nèi)基-梅隆大學(xué)(CMU)召開了第一屆機(jī)器學(xué)習(xí)國際研討會,標(biāo)志機(jī)器學(xué)習(xí)研究走向繁榮。本階段的代表性工作有莫斯托(Mostow)的指導(dǎo)性學(xué)習(xí)、萊納特(Lenat)的數(shù)字概念發(fā)現(xiàn)程序、蘭利(Langley)的BACON程序及其改進(jìn)版本。20世紀(jì)70年代末,中國科學(xué)院自動化研究所進(jìn)行質(zhì)譜分析和模式文法推斷研究,機(jī)器學(xué)習(xí)研究重新得到恢復(fù)。機(jī)器學(xué)習(xí)發(fā)展史最新階段:80年代中葉~至今4第4/4階段機(jī)器學(xué)習(xí)綜合多門學(xué)課,進(jìn)入最新階段。機(jī)器學(xué)習(xí)已成為新的學(xué)課并在許多高校開設(shè)課程。結(jié)合各種學(xué)習(xí)方法,取長補(bǔ)短的集成學(xué)習(xí)系統(tǒng)研究正在興起。機(jī)器學(xué)習(xí)與人工智能各種基礎(chǔ)問題的統(tǒng)一性觀點(diǎn)逐漸成型。機(jī)器學(xué)習(xí)方法的應(yīng)用范圍不斷擴(kuò)大,商業(yè)性應(yīng)用層出不窮。機(jī)器學(xué)習(xí)研究已形成熱潮,相關(guān)的學(xué)術(shù)活動空前活躍。機(jī)器學(xué)習(xí)應(yīng)用領(lǐng)域通過探索和與環(huán)境交互來學(xué)習(xí)1
自動駕駛機(jī)器學(xué)習(xí)應(yīng)用領(lǐng)域聲音、圖像經(jīng)過模型識別后轉(zhuǎn)換為文字、特征,推薦的商品也反映用戶的習(xí)慣和興趣。2
個(gè)性化推薦機(jī)器學(xué)習(xí)應(yīng)用領(lǐng)域從已分類郵件建立模型,識別未知郵件3
垃圾郵件分類機(jī)器學(xué)習(xí)應(yīng)用領(lǐng)域周期性識別課堂圖片中的學(xué)生,顯示實(shí)時(shí)考勤4
課堂考勤機(jī)器學(xué)習(xí)常見方法監(jiān)督學(xué)習(xí)是機(jī)器學(xué)習(xí)中一種常用的學(xué)習(xí)方法,其訓(xùn)練樣本中包含特征和標(biāo)簽。它利用一組已知標(biāo)簽的樣本調(diào)整模型參數(shù),使其達(dá)到所要求的性能,也稱為監(jiān)督訓(xùn)練或有教師學(xué)習(xí)。1
監(jiān)督學(xué)習(xí)決策樹K-最近鄰貝葉斯分類回歸支持向量機(jī)深度學(xué)習(xí)機(jī)器學(xué)習(xí)常見方法無監(jiān)督學(xué)習(xí)中的訓(xùn)練樣本沒有對應(yīng)的標(biāo)簽或目標(biāo)值。這意味著無法提供訓(xùn)練數(shù)據(jù),機(jī)器只能自行學(xué)習(xí),而無需事先提供任何有關(guān)標(biāo)簽或目標(biāo)的信息。預(yù)測結(jié)果是樣本的分類。2
無監(jiān)督學(xué)習(xí)K-均值最大期望機(jī)器學(xué)習(xí)常見方法強(qiáng)化學(xué)習(xí)的輸出標(biāo)簽不是直接的是或否,而是一種獎(jiǎng)懲機(jī)制。它描述和解決智能體(agent)在復(fù)雜不確定的環(huán)境(environment)下極大化獎(jiǎng)勵(lì)問題。3
強(qiáng)化學(xué)習(xí)策略優(yōu)化Q-LearningMBMF機(jī)器學(xué)習(xí)常見方法深度學(xué)習(xí)、機(jī)器學(xué)習(xí)和人工智能之間關(guān)系4
機(jī)器學(xué)習(xí)所處位置Sklearn機(jī)器學(xué)習(xí)庫2010年發(fā)布的Scikit-learn(又稱為Sklearn)是機(jī)器學(xué)習(xí)領(lǐng)域非常熱門的一個(gè)開源包,基本功能分為六大部分。Sklearn分類回歸數(shù)據(jù)降維聚類模型選擇數(shù)據(jù)預(yù)處理小結(jié)機(jī)器學(xué)習(xí)是人工智能的一個(gè)重要分支,也是機(jī)器獲取智能的重要途經(jīng)。機(jī)器學(xué)習(xí)處理對象既有類似二維表的結(jié)構(gòu)化數(shù)據(jù),也有文本、語音、圖像等非結(jié)構(gòu)化數(shù)據(jù)。監(jiān)督學(xué)習(xí)的訓(xùn)練樣本包含標(biāo)簽,而非監(jiān)督學(xué)習(xí)的樣本則沒有標(biāo)簽。深度學(xué)習(xí)屬于機(jī)器學(xué)習(xí)的一個(gè)分支,是通過深度網(wǎng)絡(luò)模型自動提取特征的一類學(xué)習(xí)算法。Sklearn提供目前常用的機(jī)器學(xué)習(xí)算法接口。習(xí)題一一選擇題1.下面()步驟不屬于監(jiān)督學(xué)習(xí)的流程。A.數(shù)據(jù)準(zhǔn)備 B.模型訓(xùn)練C.模型評估 D.數(shù)據(jù)展示2.K-均值算法屬于()。A.監(jiān)督學(xué)習(xí) B.無監(jiān)督學(xué)習(xí)C.強(qiáng)化學(xué)習(xí) D.深度學(xué)習(xí)3.下列表述中,不屬于神經(jīng)網(wǎng)絡(luò)的組成部分的是()。A.輸入層 B.輸出層C.隱藏層 D.特征層習(xí)題一一選擇題4.不屬于監(jiān)督學(xué)習(xí)的方法是()。A.K-最近鄰 B.邏輯回歸C.策略優(yōu)化 D.決策樹5.不屬于集成學(xué)習(xí)的方法是()。A.投票法 B.K-均值C.Bagging D.AdaBoost習(xí)題一二填空題1.深度學(xué)習(xí)是()的一種,而()是實(shí)現(xiàn)人工智能的重要途經(jīng)。2.在K-最近鄰、邏輯回歸、決策樹、K-均值、支持向量機(jī)中,()屬于無監(jiān)督的機(jī)器學(xué)習(xí)方法。3.決策樹模型容易產(chǎn)生一個(gè)過于復(fù)雜的模型。()、設(shè)置()或()是避免出現(xiàn)該問題的可行方法。習(xí)題一三思考題大數(shù)據(jù)的發(fā)展極大推動了深度學(xué)習(xí)的興起。與機(jī)器學(xué)習(xí)相比,深度學(xué)習(xí)更依賴大量的訓(xùn)練數(shù)據(jù),分析其內(nèi)在原因。安裝機(jī)器學(xué)習(xí)開發(fā)環(huán)境JupyterLab環(huán)境編程JupyterLab環(huán)境調(diào)試機(jī)器學(xué)習(xí)常用方法Markdown文件設(shè)計(jì)目錄機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝及使用參考書目《機(jī)器學(xué)習(xí)技術(shù)任務(wù)驅(qū)動式教程》模塊2機(jī)器學(xué)習(xí)技術(shù)目錄機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝JupyterLab環(huán)境編程JupyterLab代碼調(diào)試Markdown目錄制作小結(jié)習(xí)題二機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝及使用模塊2機(jī)器學(xué)習(xí)技術(shù)Anaconda是一個(gè)基于Python的數(shù)據(jù)處理和科學(xué)計(jì)算平臺,內(nèi)置了200多個(gè)預(yù)先選擇的軟件包。常用的有:1
安裝AnacondaCondaNumpyScipyPythonPandasMatplotlib機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝1
安裝Anaconda步驟1:進(jìn)入Anaconda下載網(wǎng)站:https:///anaconda/archive/,下載Windows版本的Anaconda安裝包,選擇Anaconda3-2023.07-2-Windows-x86_64.exe。機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝1
安裝Anaconda步驟2:雙擊安裝文件。機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝1
安裝Anaconda步驟3:點(diǎn)擊“Next”按鈕,進(jìn)入下一步。機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝1
安裝Anaconda步驟4:點(diǎn)擊“IAgree”按鈕,進(jìn)入下一步。機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝1
安裝Anaconda步驟5:選擇“JustMe(recommended)”,點(diǎn)擊“Next”按鈕,進(jìn)入下一步。選擇安裝路徑,在后面設(shè)置系統(tǒng)路徑時(shí)會用到安裝路徑。機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝1
安裝Anaconda步驟7:Anaconda程序開始安裝。機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝1
安裝Anaconda步驟8:安裝完成,點(diǎn)擊“Next”按鈕。機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝1
安裝Anaconda步驟9:提醒使用Anaconda云服務(wù),點(diǎn)擊“Next”按鈕。機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝1
安裝Anaconda步驟10:不選擇“LaunchAnacondaNavigator”和“GettingStartedwithAnacondaDistribution”選項(xiàng),點(diǎn)擊“Finish”按鈕,完成安裝。機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝1
安裝Anaconda步驟11:右鍵點(diǎn)擊“我的電腦”,選擇屬性,選擇高級系統(tǒng)設(shè)置,點(diǎn)擊“環(huán)境變量”選項(xiàng)。機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝1
安裝Anaconda步驟12:選擇系統(tǒng)變量里的“PATH”,點(diǎn)擊編輯。機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝1
安裝Anaconda步驟13:點(diǎn)擊新建按鈕,添加3個(gè)Anaconda路徑(%Anaconda安裝路徑%,%Anaconda安裝路徑%\Scripts,%Anaconda安裝路徑%\Library\bin)。2
安裝JupyterLabJupyterLab是Jupyter的一個(gè)拓展,但JupyterLab提供了更好的用戶體驗(yàn)。JupyterNotebookJupyterLab交互式模式編程1個(gè)瀏覽器窗口打開一個(gè)文件單元格(Cell)組織代碼和文本支持Python、Julia、R擴(kuò)展性較弱機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝功能最豐富的版本;增加了1個(gè)瀏覽器窗口打開多個(gè)文件集成控制臺、終端和其他的工具集連接GoogleDriver服務(wù)管理第三方插件機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝2安裝JupyterLab步驟1:打開Anaconda3->AnacondaPrompt。機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝2安裝JupyterLab步驟2:升級pip到最新版本。步驟3:創(chuàng)建Conda開發(fā)環(huán)境(比如jupyterlab)。步驟4:激活Conda開發(fā)環(huán)境。機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝2安裝JupyterLab步驟5:安裝JupyterLab庫。機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝3
安裝機(jī)器學(xué)習(xí)庫步驟1:安裝Scikit-learn庫。Scikit-learnScikit-learn(以前稱為Scikits.learn,也稱為Sklearn)是針對Python編程語言的免費(fèi)軟件機(jī)器學(xué)習(xí)庫。它具有各種分類,回歸和聚類算法,包括K-最近鄰、回歸、貝葉斯、支持向量機(jī),K-均值等。Scikit-learn基于Numpy和SciPy等Python數(shù)值計(jì)算庫,提供了高效的算法實(shí)現(xiàn),官方文檔齊全,更新及時(shí),具有接口易用、算法全面等優(yōu)點(diǎn)。機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝3
安裝機(jī)器學(xué)習(xí)庫步驟2:安裝Pandas庫。PandasPandas是“Pythondataanalysis”的簡寫,衍生自計(jì)量經(jīng)濟(jì)學(xué)術(shù)語“paneldata”。Pandas的主要數(shù)據(jù)結(jié)構(gòu)是Series(一維數(shù)據(jù))與DataFrame(二維數(shù)據(jù))。DataFrame是Series的容器,Series則是標(biāo)量的容器。使用這種方式,可以在容器中以字典的形式插入或刪除對象?;谶@2種數(shù)據(jù)結(jié)構(gòu),Pandas適用于處理以下類型的數(shù)據(jù):1)與SQL或Excel表類似的,含異構(gòu)列的表格數(shù)據(jù)。2)有序和無序(非固定頻率)的時(shí)間序列數(shù)據(jù)。3)帶行列標(biāo)簽的矩陣數(shù)據(jù),包括同構(gòu)或異構(gòu)型數(shù)據(jù)。4)任意其它形式的觀測、統(tǒng)計(jì)數(shù)據(jù)集。機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝3
安裝機(jī)器學(xué)習(xí)庫步驟3:安裝Matplotlib庫。MatplotlibMatplotlib是一個(gè)Python的繪圖庫,使用該工具可以將數(shù)據(jù)通過圖表的形式更直觀的呈現(xiàn)出來。通過Matplotlib,開發(fā)者僅需要幾行代碼,便可以生成線圖、散點(diǎn)圖、高線圖、條形圖、柱狀圖、3D圖形、甚至是圖形動畫等。機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝3
安裝機(jī)器學(xué)習(xí)庫步驟4:安裝Seaborn庫。SeabornSeaborn是基于Matplotlib的圖形可視化Python包。它提供了一種高度交互式界面,便于用戶做出各種有吸引力的統(tǒng)計(jì)圖表。Seaborn是Matplotlib的補(bǔ)充。它在Matplotlib的基礎(chǔ)上進(jìn)行了更高級的API封裝,從而使得作圖更加容易,并且在大多數(shù)情況下Seaborn能做出很具有吸引力的圖。同時(shí)它支持Numpy與Pandas數(shù)據(jù)結(jié)構(gòu),并兼容SciPy與Statsmodels等統(tǒng)計(jì)相關(guān)的庫。機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝3
安裝機(jī)器學(xué)習(xí)庫步驟5:安裝Jieba庫。JiebaJieba是優(yōu)秀的中文分詞第三方庫。它可以進(jìn)行簡單分詞、并行分詞和命令行分詞,還支持關(guān)鍵詞提取、詞性標(biāo)注、詞位置查詢等功能。由于中文文本之間每個(gè)漢字都是連續(xù)書寫的,自然語言處理(NaturalLanguageProcessing,NLP)需要通過特定的手段來獲得其中的每個(gè)詞組,這種手段叫做分詞。Jieba庫就是一款優(yōu)秀的Python第三方中文分詞庫。此外,雖然它立足于Python,但同樣支持其他語言和平臺,諸如:C++、Go、R、Rust、Node.js、PHP、iOS、Android等。目前Jieba是最好的中文分詞組件之一。機(jī)器學(xué)習(xí)開發(fā)環(huán)境安裝3
安裝機(jī)器學(xué)習(xí)庫步驟6:安裝PyTorch庫。PytorchPyTorch是一種用于構(gòu)建深度學(xué)習(xí)模型的功能完備框架,是一種通常用于圖像識別和語言處理等應(yīng)用程序的機(jī)器學(xué)習(xí)庫。它完全支持GPU,并且使用反向模式自動微分技術(shù),因此可以動態(tài)修改計(jì)算圖形。這使其成為快速實(shí)驗(yàn)和原型設(shè)計(jì)的常用選擇。PyTorch是FacebookAIResearch和其他幾個(gè)實(shí)驗(yàn)室團(tuán)隊(duì)的工作成果。該框架將Torch中高效而靈活的GPU加速后端庫與直觀的Python前端相結(jié)合,支持盡可能廣泛的深度學(xué)習(xí)模型。PyTorch支持開發(fā)者使用熟悉的命令式編程方法,但仍可以輸出到圖形。它于2017年以開源形式發(fā)布,其Python根源使其深受機(jī)器學(xué)習(xí)開發(fā)者的喜愛。JupyterLab環(huán)境編程1
進(jìn)入Jupyter環(huán)境步驟1:轉(zhuǎn)換到機(jī)器學(xué)習(xí)開發(fā)環(huán)境(比如juptyerlab)。步驟2:切換到工作目錄。步驟3:啟動JupyterLab。JupyterLab環(huán)境編程2
編寫程序步驟1:單擊“Python3(ipykernel)”圖標(biāo),新建一個(gè)Notebook。JupyterLab環(huán)境編程2
編寫程序步驟2:手工選擇單元類型“Markdown”,定義Markdown。這里的Markdown的作用類似于Python文件中的注釋,解釋下面代碼的作用。步驟3:定義Code。依賴庫導(dǎo)入importpandasaspdfromsklearnimportneighborsJupyterLab環(huán)境編程2
編寫程序步驟4:定義Markdown。步驟5:定義Code。步驟6:定義Markdown。從文件讀入數(shù)據(jù)到DataFrame對象url=“../data/film_stats.csv”data=pd.read_csv(url,header=0)查看頭5條記錄JupyterLab環(huán)境編程2
編寫程序步驟7:定義Code。步驟8:定義Markdown。步驟9:定義Code。data.head()轉(zhuǎn)換特征X和標(biāo)簽yX=data.iloc[:,0:2].valuesy=data.iloc[:,-1].valuesJupyterLab環(huán)境編程2
編寫程序步驟10:定義Markdown。步驟11:定義Code。步驟12:定義Markdown。創(chuàng)建K-最近鄰模型clf=neighbors.KNeighborsClassifier(3)訓(xùn)練模型JupyterLab環(huán)境編程2
編寫程序步驟13:定義Code。步驟14:定義Markdown。步驟15:定義Code。clf=clf.fit(X,y)預(yù)測新數(shù)據(jù)的標(biāo)簽clf.predict([[18,20]])JupyterLab環(huán)境編程3
保存及運(yùn)行程序步驟1:單擊“Save”按鈕,定義文件名字,然后單擊“Rename”按鈕,保存Notebook文件。JupyterLab環(huán)境編程3
保存及運(yùn)行程序步驟2:選擇Run->RunAllCells,最后一個(gè)Code單元輸出樣本[18,20]的預(yù)測結(jié)果。從上面的運(yùn)行結(jié)果看出,樣本[18,20]的預(yù)測標(biāo)簽為0。注意輸入是一個(gè)2維矩陣,每行對應(yīng)1個(gè)樣本,行的列代表樣本的特征。輸出也是一個(gè)列表,元素順序?qū)?yīng)行的順序。JupyterLab代碼調(diào)試程序調(diào)試是程序員主要工作之一,找到出錯(cuò)的位置和原因有時(shí)候并不容易。例如,步驟8中索引“-1”錯(cuò)誤的寫成“1”:那么最后一行Code單元的運(yùn)行結(jié)果是:輸出的標(biāo)簽既不是0也不是1,不在標(biāo)簽的取值范圍。在JupyterLab環(huán)境中,遇到運(yùn)行錯(cuò)誤時(shí),開發(fā)者需要找到錯(cuò)誤發(fā)生的位置以及原因。JupyterLab代碼調(diào)試1
打印變量值找到相關(guān)變量的引用位置,輸出變量值。比如輸出變量y的值。修改索引后,輸出合法的預(yù)測值。從輸出結(jié)果看出,變量y的值不合法。JupyterLab代碼調(diào)試2
JupyterLabDebugger調(diào)試步驟1:打開Debugger開關(guān)。JupyterLab代碼調(diào)試2
JupyterLabDebugger調(diào)試Debugger開關(guān)打開后,右邊側(cè)邊欄有變量列表,可以查看變量值。JupyterLab代碼調(diào)試2
JupyterLabDebugger調(diào)試步驟2:在相關(guān)變量引用位置的周圍設(shè)置斷點(diǎn)。比如在第5個(gè)Cell設(shè)置斷點(diǎn)。需要提醒的是,斷點(diǎn)只能設(shè)置在Code單元,不能設(shè)置在Markdown單元。JupyterLab代碼調(diào)試2
JupyterLabDebugger調(diào)試步驟3:選擇Run->RunAllCells,程序運(yùn)行到設(shè)置斷點(diǎn)的位置。JupyterLab代碼調(diào)試2
JupyterLabDebugger調(diào)試步驟4:在VARIABLES視圖選中變量y,點(diǎn)擊鼠標(biāo)右鍵選擇“RenderVariable”菜單,顯示變量y的值。JupyterLab代碼調(diào)試2
JupyterLabDebugger調(diào)試步驟4輸出結(jié)果:JupyterLab代碼調(diào)試2
JupyterLabDebugger調(diào)試從變量y的值就可以看出錯(cuò)誤原因,單擊停止按鈕,結(jié)束程序運(yùn)行。JupyterLab代碼調(diào)試2
JupyterLabDebugger調(diào)試步驟5:糾正錯(cuò)誤的代碼,刪除斷點(diǎn)。步驟6:重新選擇Run->RunAllCells,輸出正確的結(jié)果。Markdown目錄制作Markdown是一種可以使用普通文本編輯器編寫的標(biāo)記語言,通過簡單的標(biāo)記語法,它可以使普通文本內(nèi)容具有一定的格式。它由JohnGruber于2004年創(chuàng)建,如今已成為世界上最受歡迎的標(biāo)記語言之一。Markdown語言支持標(biāo)題、段落、列表、區(qū)塊、代碼、鏈接、圖片、表格等標(biāo)記,目標(biāo)是成為一種適用于網(wǎng)絡(luò)的書寫語言。JupyterLab支持Markdown文件,編寫的Markdown文件后綴為.md。下面以Markdown制作目錄為例,介紹Markdown文件的使用過程。Markdown目錄制作步驟1:新建一個(gè)MarkdownFile。Markdown目錄制作步驟2:編輯Markdown文件。行首插入1到3個(gè)#,對應(yīng)到標(biāo)題1到3階。Markdown目錄制作步驟3:單擊“ShowMarkdownPreview”菜單,瀏覽Markdown文件的輸出格式。Markdown目錄制作在源代碼窗口的右側(cè)出現(xiàn)瀏覽窗口。小結(jié)Conda環(huán)境中使用pip工具安裝JupyterLab機(jī)器學(xué)習(xí)開發(fā)環(huán)境。Jupyter注釋(Markdown)、代碼、運(yùn)行結(jié)果在一個(gè)窗口顯示。JupyterLab程序調(diào)試可以通過打印輸出方式,也可以使用自身的Debugger工具。md格式的文件支持Markdown語法,輸出類似HTML的豐富顯示效果。習(xí)題二一選擇題1.Anaconda指的是一個(gè)開源的Python發(fā)行版本,不包含()。A.Conda B.Python C.Numpy D.Scikit-learn2.JupyterLab是()的一個(gè)拓展,提供了更好的用戶體驗(yàn)。A.Lab B.Jupyter C.Python D.Numpy3.下面說法正確的是()。A.Jupyter代碼和運(yùn)行結(jié)果顯示在不同區(qū)域。B.Jupyter代碼和運(yùn)行結(jié)果顯示在相同區(qū)域。C.JupyterDebugger設(shè)置斷點(diǎn)在程序的任何位置。D.md文件和Word都是所見即所得。習(xí)題一一選擇題4.JupyterLab編寫的Markdown文件后綴為()。A..doc B..markdown C..md D..docx。5.JupyterLab不支持()。A.編寫Notebook。B.操作終端。C.編輯Markdown文本。D.Word。習(xí)題一二填空題1.PyTorch是一種用于構(gòu)建()模型的功能完備框架,是一種通常用于圖像識別和語言處理等應(yīng)用程序的機(jī)器學(xué)習(xí)庫。2.JupyterDebugger通過()方式調(diào)試代碼,可以設(shè)置斷點(diǎn)、查看變量信息等。3.Markdown語言支持()、段落、列表、區(qū)塊、代碼、鏈接、圖片、表格等格式。習(xí)題一三
操作題在自己的個(gè)人電腦上安裝機(jī)器學(xué)習(xí)開發(fā)環(huán)境,編寫和運(yùn)行2.2節(jié)的first_notebook程序。數(shù)據(jù)觀察數(shù)據(jù)轉(zhuǎn)換KNN模型訓(xùn)練模型保存KNN模型預(yù)測參考書目《機(jī)器學(xué)習(xí)技術(shù)任務(wù)驅(qū)動式教程》基于K-最近鄰的分類預(yù)測模塊3機(jī)器學(xué)習(xí)技術(shù)目錄電影類型預(yù)測鳶尾花種類預(yù)測葡萄酒品種預(yù)測小結(jié)習(xí)題三基于K-最近鄰的分類預(yù)測模塊3機(jī)器學(xué)習(xí)技術(shù)數(shù)據(jù)集film.csv記錄6部電影的肢體沖突鏡頭數(shù)、擁抱鏡頭數(shù),以及電影評估類型。詳細(xì)的字段描述見下表。1.1任務(wù)描述1電影類型預(yù)測有一部未看過的電影【肢體沖突鏡頭=18、擁抱鏡頭=90】,預(yù)測該電影是愛情片還是動作片。任務(wù)目標(biāo)字段字段類型允許為空標(biāo)簽?例子電影名稱string否否CaliforniaMan肢體沖突鏡頭Int否否3擁抱鏡頭int否否81影片類型int否是{1:愛情片,0:動作片}1電影類型預(yù)測1.2
任務(wù)分解import方式引入依賴的模塊檢查樣本分布、特征/標(biāo)簽類型、空值、重復(fù)行、屬性相互關(guān)系可視化樣本的空間分布、待測試樣本和訓(xùn)練樣本的空間關(guān)系依賴庫導(dǎo)入數(shù)據(jù)探查數(shù)據(jù)可視化從探查數(shù)據(jù)內(nèi)容開始,經(jīng)過分析數(shù)據(jù)分布,使用KNN模型找到標(biāo)簽和數(shù)據(jù)特征之間的關(guān)系,然后利用KNN模型預(yù)測未看過的電影。1電影類型預(yù)測1.2
任務(wù)分解轉(zhuǎn)換Pandas類型到Numpy類型在已知樣本上訓(xùn)練KNN模型用訓(xùn)練的模型預(yù)測電影【肢體沖突鏡頭=18、擁抱鏡頭為90】的類型數(shù)據(jù)轉(zhuǎn)換模型訓(xùn)練預(yù)測接上1電影類型預(yù)測1.3
任務(wù)實(shí)施使用Python編程時(shí),沒必要實(shí)現(xiàn)所有的功能,可以借助Python自身的標(biāo)準(zhǔn)庫或者其他人提供的第三方庫。比如,本任務(wù)會使用到KNeighborsClassifier類,它位于sklearn.neighbors模塊中,只需要將此模塊導(dǎo)入到Jupyter程序中,就可以調(diào)用此函數(shù)。fromsklearn.neighborsimportKNeighborsClassifier1電影類型預(yù)測1.3
任務(wù)實(shí)施1.3.1依賴庫導(dǎo)入步驟1:定義2級標(biāo)題。##<fontcolor="black">依賴庫導(dǎo)入</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1電影類型預(yù)測1.3
任務(wù)實(shí)施步驟2:導(dǎo)入依賴庫。importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlibasmplfromsklearn.neighborsimportKNeighborsClassifier按“SHIFT+Enter”,檢查輸出無異常。1電影類型預(yù)測1.3
任務(wù)實(shí)施1.3.2數(shù)據(jù)探查文件讀入DataFrame對象后,需要觀察不同標(biāo)簽的數(shù)據(jù)特征。步驟1:定義2級標(biāo)題。##<fontcolor="black">數(shù)據(jù)探查</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1電影類型預(yù)測1.3
任務(wù)實(shí)施步驟2:對齊列名和數(shù)據(jù)。pd.set_option('display.unicode.ambiguous_as_wide',True)pd.set_option('display.unicode.east_asian_width',True)按“SHIFT+Enter”,檢查輸出無異常。1電影類型預(yù)測1.3
任務(wù)實(shí)施步驟3:讀入數(shù)據(jù)集文件到DataFrame對象。url=“../data/film.csv”df=pd.read_csv(url,names=[“電影名稱”,“電影類型”,“肢體沖突鏡頭”,“擁抱鏡頭"])按“SHIFT+Enter”,檢查輸出無異常。1.3
CSVCSV(逗號分隔值文件格式)逗號分隔值(Comma-SeparatedValues,CSV,有時(shí)也稱為字符分隔值,因?yàn)榉指糇址部梢圆皇嵌禾枺┪募约兾谋拘问酱鎯Ρ砀駭?shù)據(jù)(數(shù)字和文本)。CSV文件由任意數(shù)目的記錄組成,記錄間以某種換行符分隔;每條記錄由字段組成,字段間的分隔符是其它字符或字符串,最常見的是逗號或制表符。建議使用EXCEL或Notepad打開和保存CSV文件。1電影類型預(yù)測1.3
任務(wù)實(shí)施步驟4:顯示愛情片樣本。print("愛情片數(shù)據(jù):\n",df[df["電影類型"]==1])按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1電影類型預(yù)測1.3
任務(wù)實(shí)施步驟5:顯示動作片樣本。print("動作片數(shù)據(jù):\n",df[df["電影類型"]==0])按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1電影類型預(yù)測1.3
任務(wù)實(shí)施1.3.3數(shù)據(jù)可視化在3個(gè)特征中,“電影名稱”內(nèi)容是文本,無法映射到枚舉類型,因而不予考慮,只需要觀察“肢體沖突鏡頭”、“擁抱鏡頭”2個(gè)特征與標(biāo)簽“電影類型”的關(guān)系。步驟1:定義2級標(biāo)題。##<fontcolor="black">數(shù)據(jù)可視化</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1電影類型預(yù)測1.3
任務(wù)實(shí)施步驟2:Matplotlib支持中文字符。mpl.rcParams['font.sans-serif']=['SimHei']mpl.rcParams['axes.unicode_minus']=False按“SHIFT+Enter”,檢查輸出無異常1電影類型預(yù)測1.3
任務(wù)實(shí)施步驟3:圖形化訓(xùn)練樣本和待測樣本的空間分布。testdata=[18,90]#測試樣本plt.figure(figsize=(4,4),dpi=80)plt.scatter(df[‘肢體沖突鏡頭’][0:3],df[‘擁抱鏡頭'][0:3],marker='o',color='g',s=70,label='愛情片')plt.scatter(df[‘肢體沖突鏡頭’][3:6],df[‘擁抱鏡頭'][3:6],marker='o',color='w',edgecolors='g',s=70,label='動作片')1電影類型預(yù)測1.3
任務(wù)實(shí)施plt.scatter(testdata[:1],testdata[1:],marker='.',color='b',s=120,label='未知樣本')plt.text(testdata[:1][0]+8,testdata[1:][0]+3,"k=3")plt.arrow(testdata[:1][0]+1,testdata[1:][0]+1,14,14,width=0.1,fc="b",head_width=1.5)draw_circle=plt.Circle((testdata[:1],testdata[1:]),24,fill=False,color='g')接上1電影類型預(yù)測1.3
任務(wù)實(shí)施plt.gcf().gca().add_artist(draw_circle)plt.xlabel(‘肢體沖突鏡頭')plt.ylabel(‘擁抱鏡頭')plt.legend(loc=1)plt.xlim(-20,120)plt.ylim(-20,120)接上1電影類型預(yù)測1.3
任務(wù)實(shí)施運(yùn)行結(jié)果如下:從左圖看出,如果根據(jù)最近3個(gè)鄰居的標(biāo)簽判斷未知樣本的標(biāo)簽,那么可以預(yù)測未知樣本的電影類型是愛情片,這就是K-最近鄰算法的核心思想。K-最近鄰K-最近鄰(K-nearestneighbor,KNN)的核心思想:假若一個(gè)特征空間中大多數(shù)的樣本屬于某一個(gè)類別,則在這個(gè)特征空間中,K個(gè)最相似的樣本也屬于這個(gè)類別。該模型可用于待分樣本所屬的類別判定或簡單回歸模型的計(jì)算,其核心關(guān)注點(diǎn)為測試點(diǎn)個(gè)數(shù)(K)與距離計(jì)算模型的確定。Sklearn庫的KneighborsClassifier類實(shí)現(xiàn)了KNN模型,定義如下:特別注意的是,參數(shù)n_neighbors會對分類性能有較大影響,往往需要多次實(shí)驗(yàn)找到最優(yōu)值或次優(yōu)值。1電影類型預(yù)測1.3
任務(wù)實(shí)施1.3.4數(shù)據(jù)轉(zhuǎn)換步驟1:定義2級標(biāo)題。##<fontcolor="black">數(shù)據(jù)轉(zhuǎn)換</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1電影類型預(yù)測1.3
任務(wù)實(shí)施步驟2:轉(zhuǎn)換特征和標(biāo)簽到Numpy類型。X=df[[“肢體沖突鏡頭”,“擁抱鏡頭"]].valuesy=df["電影類型"].values按“SHIFT+Enter”,檢查輸出無異常1電影類型預(yù)測1.3
任務(wù)實(shí)施1.3.5模型訓(xùn)練構(gòu)建KNN模型后,在特征X和標(biāo)簽y上訓(xùn)練。步驟1:定義2級標(biāo)題。##<fontcolor="black">模型訓(xùn)練</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1電影類型預(yù)測1.3
任務(wù)實(shí)施步驟2:建立KNN模型。knn_model=KNeighborsClassifier(n_neighbors=3)按“SHIFT+Enter”,輸出無異常步驟3:訓(xùn)練KNN模型。knn_model.fit(X,y)按“SHIFT+Enter”,輸出無異常1電影類型預(yù)測1.3
任務(wù)實(shí)施1.3.6預(yù)測基于訓(xùn)練好的KNN模型,預(yù)測樣本【肢體沖突鏡頭=18,擁抱鏡頭=90】的電影類型。步驟1:定義2級標(biāo)題。##<fontcolor="black">預(yù)測</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1電影類型預(yù)測1.3
任務(wù)實(shí)施步驟2:定義索引對應(yīng)標(biāo)簽值的標(biāo)簽列表。label_names=["動作片","愛情片"]步驟3:預(yù)測未知樣本的標(biāo)簽索引。y_pred=knn_model.predict([testdata])1電影類型預(yù)測1.3
任務(wù)實(shí)施步驟4:打印標(biāo)簽值。label_names[y_pred[0]]按“SHIFT+Enter”,運(yùn)行結(jié)果如下:數(shù)據(jù)集iris.csv源于UCI平臺,由Fisher在1936年收集整理,由3種不同類型的鳶尾花的50條樣本構(gòu)成。2.1任務(wù)描述2
鳶尾花種類預(yù)測每行數(shù)據(jù)包含4個(gè)特征:Sepal.Length(花萼長度)、Sepal.Width(花萼寬度)、Petal.Length(花瓣長度)和Petal.Width(花瓣寬度),單位是cm;以及3個(gè)種類:IrisSetosa(山鳶尾)、IrisVersicolour(雜色鳶尾)和IrisVirginica(維吉尼亞鳶尾)。詳細(xì)的字段描述見下表。2.1任務(wù)描述2
鳶尾花種類預(yù)測1)建立KNN分類模型并評估精度。2)預(yù)測鳶尾花樣本【花萼長度=5.2,花萼寬度=2.6,花瓣長度=3.8,花瓣寬度=1.3】的種類。任務(wù)目標(biāo)字段字段類型允許為空標(biāo)簽?例子花萼長度float否否6.4花萼寬度float否否2.8花瓣長度float否否5.6花瓣寬度float否否2.2種類int否是{0:Setosa,1:Versicolor,2:Virginica}注:第一行不是列標(biāo)題,也不是樣本,讀入時(shí)跳過2
鳶尾花種類預(yù)測2.2
任務(wù)分解import方式引入依賴的模塊檢查樣本分布、特征/標(biāo)簽類型、空值、重復(fù)行、屬性相互關(guān)系箱型圖可視化樣本的空間分布依賴庫導(dǎo)入數(shù)據(jù)探查數(shù)據(jù)可視化觀察數(shù)據(jù)后,按照訓(xùn)練集和驗(yàn)證集4:1比例切分?jǐn)?shù)據(jù)集,然后保存訓(xùn)練好的KNN模型到硬盤,使用模型預(yù)測未知樣本的標(biāo)簽。2
鳶尾花種類預(yù)測2.2
任務(wù)分解轉(zhuǎn)換Pandas類型到Numpy類型,轉(zhuǎn)換特征到(0,1)正態(tài)分布在訓(xùn)練集上訓(xùn)練KNN模型,并在驗(yàn)證集上評估模型精度用訓(xùn)練的模型預(yù)測標(biāo)簽未知的樣本數(shù)據(jù)轉(zhuǎn)換模型訓(xùn)練預(yù)測接上模型持久化模型保存到硬盤以待將來使用2
鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施2.3.1依賴庫導(dǎo)入步驟1:定義2級標(biāo)題。##<fontcolor="black">依賴庫導(dǎo)入</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2
鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施步驟2:導(dǎo)入依賴庫。importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlibasmplfromsklearnimportneighborsfromsklearnimportmodel_selectionfromsklearnimportpreprocessingimportjoblibimportnumpyasnp2
鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施2.3.2數(shù)據(jù)探查步驟1:定義2級標(biāo)題。##<fontcolor="black">數(shù)據(jù)探查</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2
鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施步驟2:讀入數(shù)據(jù)集文件到DataFrame對象。names=['花萼長度','花萼寬度','花瓣長度','花瓣寬度','鳶尾花類型']dataset=pd.read_csv("../data/iris.csv",names=names,skiprows=1)按“SHIFT+Enter”,檢查輸出無異常。2
鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施步驟3:查看樣本特征的統(tǒng)計(jì)值。dataset.iloc[:,0:4].describe()按“SHIFT+Enter”,運(yùn)行結(jié)果如下:從特征統(tǒng)計(jì)值看出,“花萼長度”和“花瓣寬度”的取值范圍與其他2個(gè)特征有著不同的取值范圍和方差。DataFrame.describe()2
鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施2.3.3數(shù)據(jù)可視化步驟1:定義2級標(biāo)題。##<fontcolor="black">數(shù)據(jù)可視化</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2
鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施步驟2:Matplotlib支持中文字符。mpl.rcParams['font.sans-serif']=['SimHei']mpl.rcParams['axes.unicode_minus']=False按“SHIFT+Enter”,檢查輸出無異常。2
鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施步驟3:箱型圖顯示特征數(shù)據(jù)分布。dataset.iloc[:,0:4].plot(kind='box',subplots=True,layout=(4,4),sharex=False,sharey=False)按“SHIFT+Enter”,運(yùn)行結(jié)果如下:四個(gè)特征有著不同的中心值,方差也不相同,需要通過數(shù)據(jù)轉(zhuǎn)換映射特征到相同的數(shù)據(jù)分布。箱線圖箱線圖是一種基于五位數(shù)摘要(LW(最小值),下四分位數(shù)(Q1),中位數(shù)(Q2),上四分位數(shù)(Q3)和最大值(UW))顯示數(shù)據(jù)分布的標(biāo)準(zhǔn)化方法。例如,有列表(1,3,5,6,10,19)的箱型圖。2
鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施2.3.4數(shù)據(jù)轉(zhuǎn)換步驟1:定義2級標(biāo)題。##<fontcolor="black">數(shù)據(jù)轉(zhuǎn)換</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2
鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施步驟2:從DataFrame對象中抽取特征和標(biāo)簽。X=dataset.iloc[:,0:4].valuesy=dataset.iloc[:,4].values按“SHIFT+Enter”,檢查輸出無異常。2
鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施步驟3:縮放特征服從正態(tài)分布。scaler=preprocessing.StandardScaler()norm_X=scaler.fit_transform(X)norm_X[0:5,...]按“SHIFT+Enter”,運(yùn)行結(jié)果如下:從轉(zhuǎn)換后的數(shù)據(jù)來看,每個(gè)特征已經(jīng)服從(0,1)正態(tài)分布。StandardScalerK-最近鄰需要計(jì)算樣本之間的距離。如果一個(gè)特征值域范圍非常大,那么距離計(jì)算就主要取決于這個(gè)特征,從而與實(shí)際情況相悖(比如這時(shí)實(shí)際情況是值域范圍小的特征更重要)。StandardScaler類具有歸一化功能,定義如下:classsklearn.preprocessing.StandardScaler(copy,**kargs)參數(shù)copy:bool,默認(rèn)值True
如果False,直接特征縮放2
鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施步驟4:切分出訓(xùn)練集和驗(yàn)證集。X_train,X_val,y_train,y_val=model_selection.train_test_split(norm_X,y,random_state=4,test_size=0.2)f'訓(xùn)練集樣本個(gè)數(shù):{len(X_train)}',f'驗(yàn)證集樣本個(gè)數(shù):{len(X_val)}'按“SHIFT+Enter”,運(yùn)行結(jié)果如下:訓(xùn)練集、驗(yàn)證集、測試集、超參數(shù)訓(xùn)練集、驗(yàn)證集、測試集、超參數(shù)為了建立機(jī)器學(xué)習(xí)模型并知道模型性能,數(shù)據(jù)集可以分為三部分:訓(xùn)練集、驗(yàn)證集、測試集。訓(xùn)練集(trainset):用于訓(xùn)練機(jī)器學(xué)習(xí)模型。驗(yàn)證集(validationset):驗(yàn)證模型性能以調(diào)整超參數(shù)。測試集(testset):驗(yàn)證模型在未標(biāo)注數(shù)據(jù)上的性能。超參數(shù)(hyperparameters):根據(jù)經(jīng)驗(yàn)進(jìn)行設(shè)定的參數(shù),如KneighborsClassifier中的n_neighbors。2
鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施2.3.5模型訓(xùn)練步驟1:定義2級標(biāo)題。##<fontcolor="black">模型訓(xùn)練</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施步驟2:建立KNN模型。knn_model=neighbors.KNeighborsClassifier(n_neighbors=5)按“SHIFT+Enter”,檢查輸出無異常。步驟3:訓(xùn)練KNN模型。knn_model.fit(X_train,y_train)按“SHIFT+Enter”,檢查輸出無異常。2
鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施步驟4:在驗(yàn)證集上評估模型。acc=knn_model.score(X_val,y_val)f"模型評估準(zhǔn)確率:{acc:0.4f}"按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2
鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施2.3.6模型持久化許多大型模型訓(xùn)練往往需要花費(fèi)大量時(shí)間,每次使用模型前重新訓(xùn)練并不現(xiàn)實(shí)。在實(shí)際應(yīng)用中,經(jīng)常把訓(xùn)練好的模型保存到文件中,使用時(shí)再加載內(nèi)存。步驟1:定義2級標(biāo)題。##<fontcolor="black">模型持久化</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施步驟2:保存模型到硬盤。joblib.dump(scaler,'iris_scaler.pkl')joblib.dump(knn_model,'iris_knn.pkl')按“SHIFT+Enter”,檢查輸出無異常。檢查當(dāng)前目錄,可以發(fā)現(xiàn)多了2個(gè)文件:iris_scaler.pkl包含特征的統(tǒng)計(jì)值,iris_knn.pkl保存了KNN模型結(jié)構(gòu)和參數(shù)。2鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施步驟3:從硬盤加載模型到內(nèi)存。scaler=joblib.load('iris_scaler.pkl')knn_model=joblib.load('iris_knn.pkl')按“SHIFT+Enter”,檢查輸出無異常。步驟3不是必須的,只是為了演示持久化的模型加載到內(nèi)存的過程。2
鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施2.3.7預(yù)測步驟1:定義2級標(biāo)題。#<fontcolor="black">測試</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施步驟2:按照索引值定義標(biāo)簽列表。label_names=["iris-setosa","iris-versicolour","iris-virginica"]按“SHIFT+Enter”,檢查輸出無異常。步驟3:構(gòu)建測試樣本。test_data=np.array([[5.2,2.6,3.8,1.3]])按“SHIFT+Enter”,檢查輸出無異常。2鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施步驟4:轉(zhuǎn)換測試樣本。norm_test_data=scaler.transform(test_data)按“SHIFT+Enter”,檢查輸出無異常。步驟5:在KNN模型上預(yù)測。y_pred=knn_model.predict(norm_test_data)[0]按“SHIFT+Enter”,檢查輸出無異常。2
鳶尾花種類預(yù)測2.3
任務(wù)實(shí)施步驟6:打印預(yù)測鳶尾花品種。label_names[y_pred]按“SHIFT+Enter”,運(yùn)行結(jié)果如下:數(shù)據(jù)集wine.data來自UCIIrvine機(jī)器學(xué)習(xí)庫,共有178行、14列。3.1任務(wù)描述3葡萄酒品種預(yù)測第一列為類別標(biāo)簽,用1,2,3表示三種不同類別,其中第1行至第59行為第一類,類別標(biāo)簽為1,第60行至第130行為第二類,標(biāo)簽為2,第131行至第178行為第三類,標(biāo)簽為3,第2列至第14列為13個(gè)成分的含量信息。詳細(xì)的字段描述見下表。3.1任務(wù)描述3葡萄酒品種預(yù)測字段字段類型允許為空標(biāo)簽?例子target(品種標(biāo)簽)int否是[1,2,3]alcohol(酒精)float否否12.37malic_acid(蘋果酸)float否否1.63ash(灰分)float否否2.3alcalinity_of_ash(灰分的堿性)float否否24.5magnesium(鎂)int否否88total_phenols(苯酚總量)float否否2.22flavanoids(黃酮類物質(zhì))float否否2.45nonflavanoid_phenols(非黃酮類酚)float否否0.4proanthocyanins(原花青素)float否否1.9color_intensity(顏色強(qiáng)度)float否否2.12hue(色度)float否否0.89od280/od315_of_diluted_wines(稀釋酒蛋白質(zhì)濃度的光譜度)float否否2.78proline(脯氨酸)int否否3423.1任務(wù)描述3葡萄酒品種預(yù)測1)建立KNN分類模型并評估精度。2)預(yù)測葡萄酒樣本【alcohol=13.17,malic_acid=2.58,ash=2.37,alcalinity_of_ash=20,magnesium=120,total_phenols=1.63,flavanoids=0.67,nonflavanoid_phenols=0.53,proanthocyanins=1.46,color_intensity=9.3,hue=0.6,od280/od315_of_diluted_wines=1.62,proline=840】的品種。任務(wù)目標(biāo)3葡萄酒品種預(yù)測3.2
任務(wù)分解import方式引入依賴的模塊檢查樣本分布、特征/標(biāo)簽類型、空值、重復(fù)行、屬性相互關(guān)系箱型圖可視化特征的空間分布依賴庫導(dǎo)入數(shù)據(jù)探查數(shù)據(jù)可視化觀察數(shù)據(jù)后,按照訓(xùn)練集和驗(yàn)證集4:1比例切分?jǐn)?shù)據(jù)集,然后保存訓(xùn)練好的KNN模型到硬盤,使用模型預(yù)測未知樣本的標(biāo)簽。3葡萄酒品種預(yù)測3.2
任務(wù)分解轉(zhuǎn)換Pandas類型到Numpy類型,轉(zhuǎn)換特征到(0,1)正態(tài)分布在訓(xùn)練集上訓(xùn)練KNN模型,并在驗(yàn)證集上評估模型精度用訓(xùn)練的模型預(yù)測標(biāo)簽未知的樣本數(shù)據(jù)轉(zhuǎn)換模型訓(xùn)練預(yù)測接上模型持久化模型保存到硬盤以待將來使用3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施3.3.1依賴庫導(dǎo)入步驟1:定義2級標(biāo)題。##<fontcolor="black">依賴庫導(dǎo)入</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施步驟2:導(dǎo)入依賴庫。importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlibasmplfromsklearnimportneighborsfromsklearnimportmodel_selectionfromsklearnimportpreprocessingimportjoblibimportnumpyasnp3鳶尾花種類預(yù)測3.3
任務(wù)實(shí)施3.3.2數(shù)據(jù)探查步驟1:定義2級標(biāo)題。##<fontcolor="black">數(shù)據(jù)探查</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施步驟2:讀入數(shù)據(jù)集文件到DataFrame對象。dataset=pd.read_csv("../data/wine.data")按“SHIFT+Enter”,檢查輸出無異常。步驟3:讀查看不同品種的樣本數(shù)。f"1類酒的樣本數(shù):{len(dataset[dataset.iloc[:,0]==1])},\2類酒的樣本數(shù):{len(dataset[dataset.iloc[:,0]==2])},\3類酒的樣本數(shù):{len(dataset[dataset.iloc[:,0]==3])}"3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施運(yùn)行結(jié)果如下:步驟4:查看樣本特征的統(tǒng)計(jì)值。dataset.iloc[:,1:14].describe()運(yùn)行結(jié)果如下:“alcohol”、“alcalinity_of_ash”和“magnesium”的取值范圍與其它特征的取值范圍顯著不同。3鳶尾花種類預(yù)測3.3
任務(wù)實(shí)施3.3.2數(shù)據(jù)可視化步驟1:定義2級標(biāo)題。#<fontcolor="black">數(shù)據(jù)可視化</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施步驟2:DataFrame.plot一次顯示所有特征的箱型圖。boxplot=dataset.iloc[:,1:14].plot(kind='box',subplots=True,layout=(4,4),sharex=False,sharey=False)運(yùn)行結(jié)果如下:子圖標(biāo)題有遮擋,調(diào)用subplots_adjust方法調(diào)整子圖的水平和垂直間距。3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施步驟3:手工添加子圖,調(diào)用boxplot方法在每個(gè)子圖窗口顯示特征的箱型圖。fig=plt.figure()fig.subplots_adjust(hspace=0.5,wspace=0.8)#加大子圖水平和垂直間距foriinrange(4):
forjinrange(4):
col_index=i*4+j+1
ifcol_index==14:
break3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施運(yùn)行結(jié)果如下: #和if左對齊 ax=fig.add_subplot(4,4,col_index) att_value=dataset.iloc[:,col_index].values#數(shù)據(jù)序列 att_label=dataset.iloc[:,col_index].name#列標(biāo)題 ax.boxplot(att_value,labels=[att_label])接上3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施13個(gè)特征有著不同的中心值,方差也不相同,需要通過數(shù)據(jù)轉(zhuǎn)換方法映射特征到相同的數(shù)據(jù)分布。3鳶尾花種類預(yù)測3.3
任務(wù)實(shí)施3.3.3數(shù)據(jù)轉(zhuǎn)換步驟1:定義2級標(biāo)題。#<fontcolor="black">數(shù)據(jù)轉(zhuǎn)換</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施步驟2:從DataFrame對象中抽取特征和標(biāo)簽。X=dataset.iloc[:,1:14].valuesy=dataset.iloc[:,0].values按“SHIFT+Enter”,輸出無異常。步驟3:縮放特征服從正態(tài)分布。scaler=preprocessing.StandardScaler()norm_X=scaler.fit_transform(X)norm_X[0:5,...]3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施運(yùn)行結(jié)果如下:從轉(zhuǎn)換后的數(shù)據(jù)來看,特征已經(jīng)服從(0,1)正態(tài)分布。3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施步驟4:分割數(shù)據(jù)集,分成訓(xùn)練集和驗(yàn)證集(驗(yàn)證集占比0.2)。X_train,X_val,y_train,y_val=model_selection.train_test_split(norm_X,y,random_state=4,test_size=0.2)print('訓(xùn)練集樣本的個(gè)數(shù):',len(X_train))print('測試集樣本的個(gè)數(shù):',len(X_val))按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3.3
任務(wù)實(shí)施3.3.5模型訓(xùn)練步驟1:定義2級標(biāo)題。##<fontcolor="black">模型訓(xùn)練</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施步驟2:建立KNN模型。knn_model=neighbors.KNeighborsClassifier(n_neighbors=5)按“SHIFT+Enter”,檢查輸出無異常步驟3:訓(xùn)練KNN模型。knn_model.fit(X_train,y_train)按“SHIFT+Enter”,檢查輸出無異常3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施步驟4:在驗(yàn)證集上評估模型。acc=knn_model.score(X_val,y_val)f"模型評估準(zhǔn)確率:{acc:0.4f}"按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施3.3.6模型持久化步驟1:定義2級標(biāo)題。##<fontcolor="black">模型持久化</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施步驟2:保存模型到硬盤。scaler=joblib.load('wine_scaler.pkl')knn_model=joblib.load('wine_knn.pkl')按“SHIFT+Enter”,檢查輸出無異常。檢查當(dāng)前目錄,可以發(fā)現(xiàn)多了2個(gè)文件:wine_scaler.pkl包含特征的統(tǒng)計(jì)值,wine_knn.pkl保存了KNN模型結(jié)構(gòu)和參數(shù)。3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施步驟3:從硬盤加載模型到內(nèi)存。scaler=joblib.load('wine_scaler.pkl')knn_model=joblib.load('wine_knn.pkl')按“SHIFT+Enter”,檢查輸出無異常。步驟3不是必須的,只是為了演示持久化的模型加載到內(nèi)存的過程。3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施3.3.7預(yù)測步驟1:定義2級標(biāo)題。#<fontcolor="black">測試</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施步驟2:按照索引值定義標(biāo)簽列表。label_names=["1類","2類","3類"]按“SHIFT+Enter”,檢查輸出無異常。步驟3:構(gòu)建測試樣本。test_data=np.array([[13.17,2.58,2.37,20,120,1.63,.67,.53,1.46,9.3,.6,1.62,840]])按“SHIFT+Enter”,檢查輸出無異常。3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施步驟4:轉(zhuǎn)換測試樣本。norm_test_data=scaler.transform(test_data)按“SHIFT+Enter”,檢查輸出無異常。步驟5:在KNN模型上預(yù)測。y_pred=knn_model.predict(norm_test_data)[0]按“SHIFT+Enter”,檢查輸出無異常。3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施步驟6:打印預(yù)測的葡萄酒品種。predict方法返回的是一個(gè)numpy數(shù)組,第一個(gè)元素就是label_names的index減1,因而列表索引從0開始。label_names[y_pred-1]按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施步驟7:查找和目標(biāo)關(guān)系最密切的2個(gè)特征。dataset.corr()["target"]運(yùn)行結(jié)果如下:3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施步驟8:Matplotlib支持中文字符。mpl.rcParams['font.sans-serif']=['SimHei']mpl.rcParams['axes.unicode_minus']=False按“SHIFT+Enter”,檢查輸出無異常。步驟9:準(zhǔn)備三類數(shù)據(jù)的特征。x1=norm_X[y==1][:,[6,11]]x2=norm_X[y==2][:,[6,11]]x3=norm_X[y==3][:,[6,11]]3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施步驟10:可視化數(shù)據(jù)分布和預(yù)測結(jié)果。plt.figure(figsize=(4,4),dpi=100)plt.scatter(x1[:,0],x1[:,1],marker='.',color='c',s=20,label='1類')plt.scatter(x2[:,0],x2[:,1],marker='o',color='g',s=20,label='2類')plt.scatter(x3[:,0],x3[:,1],marker='v',color='r',s=20,label='3類')plt.scatter(norm_test_data[0,6],norm_test_data[0,11],marker='*',color='b',s=120,label='未知')3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施plt.xlabel('flavanoids')plt.ylabel('od280/od315_of_diluted_wines')plt.legend(loc=1)plt.xlim(-2,3)plt.ylim(-2,3)運(yùn)行結(jié)果如下:接上3葡萄酒品種預(yù)測3.3
任務(wù)實(shí)施3葡萄酒品種預(yù)測小結(jié)機(jī)器學(xué)習(xí)算法在訓(xùn)練集上中訓(xùn)練模型,在驗(yàn)證集上評估模型。模型建立特征到標(biāo)簽的映射。describe方法和Matplotlib圖表探查數(shù)據(jù)分布。特征數(shù)據(jù)分布不相同的情況下需要?dú)w一化。模型持久化允許重復(fù)使用模型
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡(luò)通訊設(shè)施建設(shè)承包合同
- 專利技術(shù)許可使用與轉(zhuǎn)讓協(xié)議
- 事業(yè)單位正式聘用勞動合同
- 環(huán)??萍佳邪l(fā)與推廣合作協(xié)議
- 企業(yè)向法人借款合同
- 三農(nóng)田土壤健康與改良方案
- 智慧農(nóng)業(yè)技術(shù)研發(fā)與應(yīng)用合作協(xié)議
- 公路護(hù)欄采購合同
- 動物養(yǎng)殖場地租賃合同
- 經(jīng)典工程勞務(wù)承包合同
- YY/T 1537-2017放射治療用激光定位系統(tǒng)性能和試驗(yàn)方法
- SB/T 10752-2012馬鈴薯雪花全粉
- 復(fù)變函數(shù)與積分變換全套課件
- 濕型砂中煤粉作用及檢測全解析
- 最新部編版語文五年級下冊教材分析及教學(xué)建議課件
- A4橫線稿紙模板(可直接打印)
- 環(huán)境材料學(xué)教學(xué)課件匯總完整版電子教案全書整套課件幻燈片(最新)
- JJF1175-2021試驗(yàn)篩校準(zhǔn)規(guī)范-(高清現(xiàn)行)
- 產(chǎn)品結(jié)構(gòu)設(shè)計(jì)概述課件
- 八年級下綜合實(shí)踐教案全套
- 第8課《山山水水》教學(xué)設(shè)計(jì)(新人教版小學(xué)美術(shù)六年級上冊)
評論
0/150
提交評論