Python程序設(shè)計(jì)(含視頻分析) 課件 第12章 機(jī)器學(xué)習(xí)入門(mén)_第1頁(yè)
Python程序設(shè)計(jì)(含視頻分析) 課件 第12章 機(jī)器學(xué)習(xí)入門(mén)_第2頁(yè)
Python程序設(shè)計(jì)(含視頻分析) 課件 第12章 機(jī)器學(xué)習(xí)入門(mén)_第3頁(yè)
Python程序設(shè)計(jì)(含視頻分析) 課件 第12章 機(jī)器學(xué)習(xí)入門(mén)_第4頁(yè)
Python程序設(shè)計(jì)(含視頻分析) 課件 第12章 機(jī)器學(xué)習(xí)入門(mén)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

主講教師:王嬌嬌單

位:智能媒體技術(shù)研究院Python程序設(shè)計(jì)方法第12章機(jī)器學(xué)習(xí)入門(mén)第12章機(jī)器學(xué)習(xí)入門(mén)12.1機(jī)器學(xué)習(xí)基本概念12.2基于Python的機(jī)器學(xué)習(xí)實(shí)現(xiàn)工具12.3應(yīng)用實(shí)例:鳶尾花分類(lèi)第12章機(jī)器學(xué)習(xí)入門(mén)12.1機(jī)器學(xué)習(xí)基本概念12.1.1監(jiān)督學(xué)習(xí)1監(jiān)督學(xué)習(xí)算法在監(jiān)督學(xué)習(xí)算法中,用戶(hù)將成對(duì)的輸入和預(yù)期輸出提供給算法,算法會(huì)找到一種方法,根據(jù)給定輸入得出預(yù)期輸出結(jié)果;監(jiān)督學(xué)習(xí)問(wèn)題主要有兩種:分類(lèi)(classification)與回歸(regression)

分類(lèi)問(wèn)題:目標(biāo)是預(yù)測(cè)類(lèi)別標(biāo)簽(classlabel),這些標(biāo)簽屬于預(yù)定義的可選列表;

回歸問(wèn)題:目標(biāo)是預(yù)測(cè)一個(gè)連續(xù)值,比如根據(jù)教育水平、年齡和居住地來(lái)預(yù)測(cè)一個(gè)人的年收入等;通常可以根據(jù)輸出結(jié)果是否具有某種連續(xù)性來(lái)區(qū)分某一問(wèn)題是分類(lèi)任務(wù)和回歸任務(wù)。12.1.1監(jiān)督學(xué)習(xí)1監(jiān)督學(xué)習(xí)任務(wù)監(jiān)督學(xué)習(xí)任務(wù)的目標(biāo)就是構(gòu)建一個(gè)泛化精度盡可能高的模型

如果訓(xùn)練集和測(cè)試集足夠相似,那么可以預(yù)估在訓(xùn)練集上表現(xiàn)良好的模型在測(cè)試集上也能夠做出準(zhǔn)確預(yù)測(cè);

但在某些情況下,這一點(diǎn)并不成立。因?yàn)樵谟?xùn)練集上通過(guò)構(gòu)建非常復(fù)雜的模型從而使得它在訓(xùn)練集上的精度可以很高,但是它在測(cè)試集上的精度就不一定了;

模型過(guò)擬合

如果在訓(xùn)練模型時(shí)過(guò)分追求在訓(xùn)練集上的準(zhǔn)確性,那么會(huì)得到一個(gè)在訓(xùn)練集上表現(xiàn)很好、但不能泛化到新數(shù)據(jù)上的模型;模型欠擬合

如果模型過(guò)于簡(jiǎn)單,可能導(dǎo)致無(wú)法抓住數(shù)據(jù)的全部?jī)?nèi)容以及數(shù)據(jù)中的變化等特征,那么模型可能在訓(xùn)練集上的表現(xiàn)就很差;12.1.1監(jiān)督學(xué)習(xí)1監(jiān)督學(xué)習(xí)任務(wù)(續(xù))模型越復(fù)雜,在訓(xùn)練數(shù)據(jù)上的預(yù)測(cè)結(jié)果就越好。但是,模型如果過(guò)于復(fù)雜,即過(guò)多關(guān)注訓(xùn)練集中的每個(gè)單獨(dú)的數(shù)據(jù)點(diǎn),那么模型就不能很好地泛化到新數(shù)據(jù)上。兩者之間存在一個(gè)最佳的位置,可以使得模型得到最好的泛化性能。12.1.2無(wú)監(jiān)督學(xué)習(xí)1無(wú)監(jiān)督學(xué)習(xí)算法只有輸入數(shù)據(jù),需要從這些數(shù)據(jù)中提取知識(shí),一般用于不包含任何標(biāo)簽信息的數(shù)據(jù);

常見(jiàn)的無(wú)監(jiān)督學(xué)習(xí)任務(wù)如將客戶(hù)分成果具有相似偏好的群組、檢測(cè)網(wǎng)站的異常訪問(wèn)模式、確定文章的主題等;無(wú)監(jiān)督學(xué)習(xí)主要包含兩種類(lèi)型:數(shù)據(jù)集變換和聚類(lèi)

數(shù)據(jù)集的無(wú)監(jiān)督變換:

(1)創(chuàng)建一種新的數(shù)據(jù)表示算法,與數(shù)據(jù)的原始表示相比,新的表示可能更容易被人或其它機(jī)器學(xué)習(xí)算法所理解,比如常見(jiàn)的數(shù)據(jù)降維;

(2)找到“構(gòu)成”數(shù)據(jù)的各自組成部分,如對(duì)文本文檔集合進(jìn)行主題提取任務(wù),該任務(wù)是找到每個(gè)文檔中討論的主題,并學(xué)習(xí)每個(gè)文檔中出現(xiàn)了哪些主題;

12.1.2無(wú)監(jiān)督學(xué)習(xí)1無(wú)監(jiān)督學(xué)習(xí)算法(續(xù))無(wú)監(jiān)督學(xué)習(xí)主要包含兩種類(lèi)型:數(shù)據(jù)集變換和聚類(lèi)

聚類(lèi):

通過(guò)學(xué)習(xí)可以將數(shù)據(jù)根據(jù)其相似性劃分成不同的組,這些組叫做簇(cluster),即將相似的數(shù)據(jù)自動(dòng)劃分在一個(gè)簇中且不同簇內(nèi)的數(shù)據(jù)點(diǎn)差異較大;

使用不同的聚類(lèi)準(zhǔn)則,則產(chǎn)生的聚類(lèi)結(jié)果也不同。與分類(lèi)算法類(lèi)似,聚類(lèi)算法為每個(gè)數(shù)據(jù)點(diǎn)分配或預(yù)測(cè)一個(gè)數(shù)字,代表這一點(diǎn)屬于哪個(gè)簇;

常見(jiàn)的聚類(lèi)算法有k-均值聚類(lèi)、層次聚類(lèi)、DBSCAN等;

12.1.3數(shù)據(jù)表示與特征工程1數(shù)據(jù)表示:無(wú)論是監(jiān)督學(xué)習(xí)任務(wù)還是無(wú)監(jiān)督學(xué)習(xí)任務(wù),將輸入數(shù)據(jù)表征為計(jì)算機(jī)可以理解的形式尤為重要

通??梢詫?shù)據(jù)想象成表格的形式,將每一個(gè)數(shù)據(jù)點(diǎn)(每一封電子郵件、每一名客戶(hù)、每一次交易)看作對(duì)應(yīng)表格中的一行,描述該數(shù)據(jù)點(diǎn)的每一項(xiàng)屬性(如客戶(hù)年齡、交易金額、交易地點(diǎn))則對(duì)應(yīng)表格中的一列;

樣本:每個(gè)實(shí)體或每一行數(shù)據(jù)

特征:每一列(描述這些實(shí)體的屬性)

如果一個(gè)特征的值都是浮點(diǎn)數(shù),這類(lèi)特征稱(chēng)為連續(xù)特征,與之相對(duì)的就是離散特征,這類(lèi)特征通常不是數(shù)值而是表示類(lèi)別的值;

對(duì)于某個(gè)具體應(yīng)用來(lái)說(shuō),如何找到最佳數(shù)據(jù)表示,這個(gè)問(wèn)題被稱(chēng)為是特征工程,如對(duì)分類(lèi)變量進(jìn)行編碼;

第12章機(jī)器學(xué)習(xí)入門(mén)12.2基于Python的機(jī)器學(xué)習(xí)實(shí)現(xiàn)工具12.2.1scikit-learn庫(kù)的安裝和使用1scikit-learn無(wú)論是監(jiān)督學(xué)習(xí)任務(wù)還是無(wú)監(jiān)督學(xué)習(xí)任務(wù),將輸入數(shù)據(jù)表征為計(jì)算機(jī)可以理解的形式尤為重要一個(gè)開(kāi)源的機(jī)器學(xué)習(xí)模塊,它通常建立在NumPy、SciPy和Pandas模塊之上。在安裝scikit-learn之前,需要先安裝好NumPy、SciPy和Pandas庫(kù)。如果已經(jīng)安裝了Python,可以用pip安裝工具安裝上述所有包。要使用pip工具在Windows系統(tǒng)上安裝軟件包,需打開(kāi)命令提示符窗口,然后鍵入以下格式的命令:pipinstall包名一旦完成,可以通過(guò)啟動(dòng)IDLE或者在Pycharm程序中輸入命令來(lái)驗(yàn)證包是否已經(jīng)安裝成功:

import包名12.2.2Numpy、SciPy和Pandas庫(kù)的使用1NumPyNumPy是Python科學(xué)計(jì)算的基礎(chǔ)包之一,功能包括多維數(shù)組、高級(jí)數(shù)學(xué)函數(shù),以及偽隨機(jī)數(shù)生成等。在scikit-learn中,NumPy數(shù)組是基本數(shù)據(jù)結(jié)構(gòu),通常scikit-learn接受NumPy數(shù)組格式的數(shù)據(jù),因此所有數(shù)據(jù)都必須轉(zhuǎn)換成NumPy數(shù)組。NumPy的核心功能是ndarray類(lèi),即多維(n維)數(shù)組。數(shù)組中所有元素都必須是同一類(lèi)型。NumPy數(shù)組如下所示:importnumpyasnpx=np.array([[1,2,3],[4,5,6]])print(x)上述程序輸出:[[123[456]]12.2.2Numpy、SciPy和Pandas庫(kù)的使用1SciPySciPy是Python中用于科學(xué)計(jì)算的函數(shù)集合,它具有線性代數(shù)高級(jí)程序、數(shù)學(xué)函數(shù)優(yōu)化、信號(hào)處理、特殊數(shù)學(xué)函數(shù)和統(tǒng)計(jì)分布等多項(xiàng)功能。scikit-learn利用SciPy中的函數(shù)集合來(lái)實(shí)現(xiàn)算法。SciPy中最重要的是scipy.sparse,它可以給出稀疏矩陣。當(dāng)保存一個(gè)大部分元素都是0的二維數(shù)組,可以使用稀疏矩陣;一般來(lái)說(shuō),創(chuàng)建稀疏數(shù)據(jù)的稠密表示是不可能的,大都是通過(guò)直接創(chuàng)建其稀疏表示。關(guān)于SciPy稀疏矩陣的更多內(nèi)容可查閱SciPy相關(guān)文檔(/);12.2.2Numpy、SciPy和Pandas庫(kù)的使用1PandasPandas適用于處理和分析數(shù)據(jù)的Python庫(kù),它基于一種叫做DataFrame的數(shù)據(jù)結(jié)構(gòu)。

一個(gè)pandasDataFrame可以看作是一張表格,類(lèi)似于Excel表格。Pandas中提供了大量用于修改表格和操作表格的方法,尤其是提供了許多類(lèi)似于SQL一樣對(duì)表中數(shù)據(jù)進(jìn)行查詢(xún)和連接的操作。

NumPy要求數(shù)組中的所有元素類(lèi)型必須完全相同,而Pandas則不需要。在PandasDataFrame中,每一列數(shù)據(jù)的類(lèi)型可以互不相同;

pandas還可以從許多文件格式和數(shù)據(jù)庫(kù)中提取數(shù)據(jù),如SQL、Excel和CSV文件;第12章機(jī)器學(xué)習(xí)入門(mén)12.3應(yīng)用實(shí)例:鳶尾花分類(lèi)12.3.1加載數(shù)據(jù)1應(yīng)用實(shí)例:鳶尾花分類(lèi)鳶尾花數(shù)據(jù)集:包括每朵鳶尾花的一些測(cè)量數(shù)據(jù),如花瓣的長(zhǎng)度和寬度以及花萼的長(zhǎng)度和寬度(單位:厘米)、每朵花所屬的品種;目標(biāo):通過(guò)學(xué)習(xí)這些已知品種的鳶尾花及其詳細(xì)的測(cè)量數(shù)據(jù)之間的關(guān)系,構(gòu)建一個(gè)機(jī)器學(xué)習(xí)模型,從而實(shí)現(xiàn)對(duì)一個(gè)新鳶尾花所屬品種的預(yù)測(cè);加載數(shù)據(jù)

該數(shù)據(jù)集是機(jī)器學(xué)習(xí)和統(tǒng)計(jì)學(xué)中一個(gè)經(jīng)典的數(shù)據(jù)集,它包含在scikit-learn的dataset模塊中,可以通過(guò)調(diào)用load_iris函數(shù)來(lái)加載數(shù)據(jù),如:

fromsklearn.datasetsimportload_iris

iris_datasets=load_iris()12.3.2模型評(píng)估:訓(xùn)練數(shù)據(jù)與測(cè)試數(shù)據(jù)1應(yīng)用實(shí)例:鳶尾花分類(lèi)訓(xùn)練數(shù)據(jù)(集):收集好的帶有標(biāo)簽的一部分?jǐn)?shù)據(jù)測(cè)試數(shù)據(jù)(集):收集好的帶有標(biāo)簽的剩余數(shù)據(jù),用來(lái)評(píng)估模型性能訓(xùn)練集和測(cè)試集的分割比例可以是隨意的,可根據(jù)具體問(wèn)題確定

該實(shí)例使用scikit-learn中提供的train_test_split函數(shù)可以將數(shù)據(jù)集打亂并重新拆分,按照75%和25%的比例:fromsklearn.model_selectionimporttrain_test_splitX_train,X_test,y_train,y_test=train_test_split(iris_datasets['data'],iris_datasets['target'],random_state=0)

其中,train_test_split函數(shù)在對(duì)數(shù)據(jù)進(jìn)行拆分之前,會(huì)利用偽隨機(jī)數(shù)生成器將數(shù)據(jù)集打亂順序,然后再按照比例進(jìn)行劃分;12.3.3分析數(shù)據(jù)1應(yīng)用實(shí)例:鳶尾花分類(lèi)在構(gòu)建機(jī)器學(xué)習(xí)模型之前,需要先分析一下數(shù)據(jù),看看如果不用機(jī)器學(xué)習(xí)能不能完成任務(wù),或者判斷需要的信息有沒(méi)有包含在數(shù)據(jù)中;分析數(shù)據(jù)還可以檢查數(shù)據(jù)是否存在異常值和特殊值。因?yàn)樵跀?shù)據(jù)收集過(guò)程中,可能會(huì)發(fā)生一些意想不到的數(shù)據(jù)記錄錯(cuò)誤;通常,可以采用可視化的方式對(duì)數(shù)據(jù)進(jìn)行分析,常用的方法是繪制散點(diǎn)圖(scatterplot)。數(shù)據(jù)散點(diǎn)圖將一個(gè)特征作為x軸,另一個(gè)特征作為y軸,將每一個(gè)數(shù)據(jù)點(diǎn)繪制為涂上的一個(gè)點(diǎn);12.3.4使用k近鄰算法構(gòu)建模型1應(yīng)用實(shí)例:鳶尾花分類(lèi)scikit-learn中提供了許多可用的分類(lèi)方法,該實(shí)例使用的是k近鄰分類(lèi)器構(gòu)建模型只需要使用訓(xùn)練集,當(dāng)要對(duì)一個(gè)新的數(shù)據(jù)點(diǎn)做出預(yù)測(cè)時(shí),k近鄰分類(lèi)器會(huì)在訓(xùn)練集中尋找與這個(gè)新數(shù)據(jù)點(diǎn)距離最近的數(shù)據(jù)點(diǎn),然后將找到的數(shù)據(jù)點(diǎn)的標(biāo)簽賦值給這個(gè)新數(shù)據(jù)點(diǎn);該算法中的k代表需要考慮訓(xùn)練集中與新數(shù)據(jù)點(diǎn)最近的任意k個(gè)鄰居而不是只考慮最近的那一個(gè),再根據(jù)這些鄰居中數(shù)量最多的類(lèi)別做出預(yù)測(cè);

Scikit-learn中提供的所有機(jī)器學(xué)習(xí)模型都在各自的類(lèi)中實(shí)現(xiàn),這些類(lèi)被稱(chēng)為Estimator類(lèi),比如k近鄰分類(lèi)算法是在neighbors模塊的KNeighborsClassifier類(lèi)中實(shí)現(xiàn)的;12.3.4使用k近鄰算法構(gòu)建模型1應(yīng)用實(shí)例:鳶尾花分類(lèi)(續(xù))代碼如下所示:

fromsklearn.neighborsimportKNeighborsClassifier

knn=KNeighborsClassifier(n_neighbors=1)

上述knn對(duì)象對(duì)算法進(jìn)行了封裝,既包括用訓(xùn)練數(shù)據(jù)構(gòu)建模型的算法,也包括對(duì)新數(shù)據(jù)點(diǎn)進(jìn)行預(yù)測(cè)的算法,同時(shí)還包括算法從訓(xùn)練數(shù)據(jù)中提取的信息。想要使用訓(xùn)練集構(gòu)建模型,需要調(diào)用knn對(duì)象的fit方法,輸入?yún)?shù)X_train和y_train,二者都是NumPy數(shù)組,前者是訓(xùn)練數(shù)據(jù),后者是其對(duì)應(yīng)的標(biāo)簽,使用方式如下所示:

knn.fit(X_train,y_train)12.3.5模型預(yù)測(cè)1應(yīng)用實(shí)例:鳶尾花分類(lèi)訓(xùn)練得到模型后,就可以使用該模型對(duì)新數(shù)據(jù)進(jìn)行預(yù)測(cè)了。

假如現(xiàn)在有一朵鳶尾花,花萼長(zhǎng)4.7cm寬3.1cm,花瓣長(zhǎng)1.3cm寬0.2cm,要預(yù)測(cè)這朵花屬于哪個(gè)品種?首先,需要將這些數(shù)據(jù)放在一個(gè)NumPy數(shù)組中:

X_new=np.array([[4.7,3.1,1.3,0.2]])然后通過(guò)以下語(yǔ)句調(diào)用knn對(duì)象的predict方法進(jìn)行預(yù)測(cè):prediction=knn.predict(X_new)12.3.6評(píng)估模型1應(yīng)用實(shí)例:鳶尾花分類(lèi)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論