Python工程應用-數據分析基礎與實踐課件-第4章_第1頁
Python工程應用-數據分析基礎與實踐課件-第4章_第2頁
Python工程應用-數據分析基礎與實踐課件-第4章_第3頁
Python工程應用-數據分析基礎與實踐課件-第4章_第4頁
Python工程應用-數據分析基礎與實踐課件-第4章_第5頁
已閱讀5頁,還剩28頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第一章概論西華大學機器學習第四章K近鄰算法XXX學校XXX2022目錄Contents模型介紹案例:約會網站配對案例:手寫數字識別案例:鳶尾花品種識別

知識引入3

本章知識圖譜4模型介紹一1.1算法概述6K近鄰算法(K-NearestNeighbor,簡稱KNN),是一種根據不同樣本的特征值之間的距離進行分類的算法。KNN中可以根據具體的情況選擇不同的“距離”衡量方式。它的基本思想是:如果一個樣本在特征空間中的K個最鄰近樣本中的大多數屬于某一個類別,那么該樣本也屬于這個類別。用一句話來總結KNN算法就是:近朱者赤,近墨者黑。1.1算法概述7KNN的優點包括:算法簡單,易于理解,易于實現,無需參數估計,無需訓練。精度高,對異常值不敏感(個別噪音數據對結果的影響不是很大)。適合對稀有事件進行分類。KNN的缺點包括:對測試樣本分類時的計算量大,空間開銷大。可解釋性差,無法給出像后續章節將要介紹的決策樹模型那樣的規則。當樣本不平衡時,不能準確的判別分類,這是KNN最大的缺點。例如一個類的樣本容量很大,而其他類樣本容量很小。這有可能導致當輸入一個新樣本時,新樣本的K個鄰居中始終都是大容量類的樣本占多數,從而導致錯誤分類。可以采用加權值的方法(和該樣本距離小的鄰居權值大)來改進這個問題1.2算法基本原理8KNN算法的三個基本要素是K值的選擇、距離度量以及分類決策規則。KNN算法的具體實現過程如下:訓練樣本集(包含每條樣本數據與分類的對應關系)輸入無標簽的數據新數據的每個特征與樣本集中數據對應特征進行比較(1)計算距離(2)排序(3)取K個新數據標簽(K個數據中出現最多的分類標簽)1.2算法基本原理9

1.2算法基本原理10K值小的時候近似誤差小,估計誤差大。K值大的時候近似誤差大,估計誤差小。1.3算法實現代碼11機器學習算法解決實際問題的步驟:收集數據分析數據數據預處理應用模型測試算法構建模型1.3算法實現代碼12偽代碼:對于每一個在數據集中的數據點:計算目標的數據點(需要分類的數據點)與該數據點的距離將距離排序:從小到大選取前K個最短距離選取這K個中最多的分類類別返回該類別來作為目標數據點的預測值1.3算法實現代碼13直接利用第三方庫的方法來實現KNN算法KNeighborsClassifier使用很簡單,核心操作包括三步:(1)創建KNeighborsClassifier對象,并進行初始化。該類的構造函數定義如下:sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,weights=’uniform’,algorithm=’auto’,leaf_size=30,p=2,metric=’minkowski’,metric_params=None,n_jobs=None,**kwargs)主要參數:n_neighbors:int型,可選,缺省值是5,就是KNN中的近鄰數量k值。1.3算法實現代碼14weights:計算距離時使用的權重,缺省值是“uniform”,表示平等權重。也可以取值“distance”,則表示按照距離的遠近設置不同權重。還可以自主設計加權方式,并以函數形式調用。metric:距離的計算,缺省值是“minkowski”。當p=2,metric=’minkowski’時,使用的是歐式距離。p=1,metric=’minkowski’時為曼哈頓距離。(2)調用fit方法,對數據集進行訓練。函數格式:fit(X,y)說明:以X為特征向量,以y為標簽值對模型進行訓練。(3)調用predict函數,對測試集進行預測。函數格式:predict(X)說明:根據給定的數據,預測其所屬的類別標簽。案例:約會網站配對二2.1問題介紹16案例背景:某約會網站的會員A希望通過該網站找到自己喜歡的人,他將自己心目中的會員分成三類:不喜歡的人(樣本分類1)、魅力一般的人(樣本分類2)、極具魅力的人(樣本分類3)。會員A希望在工作日的時候與魅力一般的人約會,在周末與極具魅力的人約會,而對于不喜歡的人直接排除掉。案例要求:他希望能通過他收集到的信息對會員進行自動分類,分類依據有:玩視頻游戲所耗時間百分比、每年獲得的飛行常客里程數、每周消費的冰淇淋公升數。2.2數據準備171.數據準備

首先需要將數據從文本文件中讀出,定義解析函數file2matrix,其輸入的參數為文件地址的字符串,輸出為樣本矩陣和分類標簽向量。

1)收集數據2.2數據準備181.數據準備2)分析數據

將收集的數據進行分析,調用方法讀取數據,繪制散點圖觀察數據。

2.2數據準備191.數據準備3)處理數據

從表4-1的數據中可看出“每年獲得的飛機常客里程數”數值較大,對結果的影響程度遠大于其他兩個特征。但我們認為三個特征值權重相同。為了降低極大數值對結果的影響,這里使用歸一化進行數據處理。

2.3算法實現20

其輸入參數包括被預測的對象、原始數據集、原始標簽和臨近點個數,輸出參數為被預測對象所屬的分類標簽值,其中距離采用的是歐氏距離。4)構建模型2.4算法測試215)測試算法

機器學習算法的一個重要工作是測評算法的正確率。通常我們會將90%的數據作為訓練樣本來使用,剩余的10%數據作為測試集,用來測試算法的性能。本節我們使用錯誤率來檢測算法性能。2.5算法應用226)模型應用

通過上述函數,我們已經實現了KNN算法相關所有的功能,接下來就可以通過輸入新的會員信息,通過上述模型來判斷該會員是否是自己喜歡的類型了。案例:手寫數字識別三3.1問題介紹案例背景:案例的數據集是人工手寫的0-9的數字圖像,每個圖像為32*32像素。案例要求:實現自動識別給定的手寫數字圖像對應的數字是幾。3.2數據準備首先我們要將圖像數據處理為一個向量,將32*32的二進制圖像信息轉化為1*1024的向量。3.3算法實現定義分類算法導入訓練數據處理訓練數據運用算法開始測試處理測試數據導入測試數據案例:鳶尾花品種識別四4.1問題介紹28案例背景:案例的數據集包含150個數據集,分為3類,每類50個數據,每個數據包含4個屬性。案例要求:通過花萼長度,花萼寬度,花瓣長度,花瓣寬度4個屬性預測鳶尾花卉屬于(Setosa-山鳶尾,Versicolour-雜色鳶尾,Virginica-維吉尼亞鳶尾)三個種類中的哪一類。4.2數據準備29

讀取了數據集之后還需要將數據拆分為訓練集和測試集。對鳶尾花數據集進行訓練集和測試集的拆分操作,可以直接使用train_test_split()函數。

可以直接從iris.csv文件中讀取數據,也可以直接從sklearn.datasets數據集中直接加載,因為這個經典的數據集已經被集成到sklearn庫里面了。X_train,X_test,y_train,y_test=cross_validation.train_test_split(train_data,train_target,test_size=0.4,random_state=0)1.獲取數據4.2數據準備301.觀察數據

可以通過繪制散點圖觀察一下該數據集。4.3算法實現31獲取數據集劃分數據集初始化分類器輸出測試結果測試數據測試模型訓練數據訓練模型

思考題32水果數據集由愛丁堡大學的IainMurray博士創建。他買了幾十個不同種類的桔子、橙子、檸檬和蘋果,并把它們的尺寸記錄在一張表格中。本例對水果數據進行了簡單預處理,存為素材文件fruit_data.txt。文件中包含59個水果的測量數據。每行表示一個待測定水果,每列為一個特征。特征從左到右依次是:fruit_label:標記值,表示水果的類別,1-蘋果,2-桔子,3-橙子,4-

溫馨提示

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

評論

0/150

提交評論