




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第六章scikit-learnscikit-learn庫是一個通用型開源機器學庫,它幾乎涵蓋了所有地機器學算法,并且搭建了高效地數據挖掘地框架。圖六.一scikit-learn官網我們可以看到官網地宣傳主要提到到了四點:一個簡單高效地數據挖掘與數據分析工具。對于所有都是易用地,而且可以在各個環境使用。它是基于Numpy,Scipy與Matplotlib庫。開源地,可以商用。這個庫另一個最大地優點是庫地設計是十分有條理地。我們可以看到scikit-learn主要分為六個板塊,它們分別是:分類(classification)回歸(regression)聚類(clustering)降維(dimensionalityreduction)模型選擇(modelselection)預處理(preprocessing)其分類與回歸問題又被稱為有監督學,而聚類問題被稱為無監督學。而我們在實際行機器學過程地先后次序是一)預處理,二)降維,三)有監督與無監督學,四)模型選擇,如圖六.二所示。圖六.二機器學流程六.一預處理(preprocessing)對數據行一些清洗,轉換,使得它們更適合機器學模型。scikit提供了一些預處理地方法,它們分別是標準化,非線轉換,歸一化,二值化,分類特征編碼,缺失值插補,生成多項式特征,如圖六.三所示。圖六.三預處理有關分類六.一.一標準化為什么要對數據行標準化處理?如表六.一所示,我們可以看到收入這一列數字特別大,而年齡這一列數字相比之下就特別小。因此,在某些機器學過程,收入特征就會表現地比較"搶眼",而影響最終地模型效果。所以我們要將其單位去除,讓大家在同一起跑線上。我們需要去除這種影響,將該表轉換成另一種形式,如表六.二所示。在scikit提供了scale方法來對數據行標準化。(一)導入有關模塊。(二)導入有關數據,這里我們將上述表格導入。(三)將數據標準化。(四)查看標準化結果。(五)查看標準化后地均值。(六)查看標準化后地標準差。六.一.二非線轉換類似于標準化處理,它是將數據映射到[零,一]地均勻分布上。非線轉換將每個特征轉換為相同地范圍內或者分布內。通過這個變化可以將異常地數據變得更滑從而受異常值地影響也會變小,但是它卻一定程度上改變了特征內部與特征之間地距離與有關。(一)導入有關模塊。(二)創建非線轉換對象。(三)導入有關數據。(四)行線轉換。(五)查看線轉換地結果,所有地數值都被轉換[零,一]區間內地數字。六.一.三歸一化歸一化地作用是縮放單個樣本,使其具有單位范數。有兩種歸一化地方式,分別是范數"L一"與范數"L二"。(一)導入有關模塊。(二)導入有關數據。(三)歸一化數據。(四)查看歸一化之后地結果,這里要注意,歸一化地是針對每一行做地。六.一.四二值化二值化地作用是將數值型地特征值轉換為布爾值。(一)導入有關模塊。(二)導入有關數據。(三)查看最后地編碼結果,我們可以看到所有大于一零零地數字都被編碼為一,所有小于一零零地數字都被編碼為零。(四)查看有關結果。六.一.五分類特征編碼在機器學過程,我們經常會遇到字符串形式地特征。這個時候我們就需要將這些字符串類型地特征,轉換為數值型地特征。比如說"老師","學生","主任",我們需要將這些字符串轉換為整數。比如講"老師"轉換為零,將"學生"轉換為一,將"主任"轉換為二。這樣地轉換會提高機器學地效率,但是這樣地轉換還是不夠地,因為這樣連續數值地輸入,分類器會認為類別之間是有序地,但實際上"老師","學生","主任"它們時間是無序地,而且沒有大小地區別。這個時候我們就需要將這些數值一步轉換。我們地解決思路就是將某個特征n個可能,轉換為n個特征,轉換后地特征是零,一二值類型數據。(一)導入有關模塊。(二)創建One-Hot編碼對象。(三)導入有關數據。(四)訓練One-Hot編碼對象。(五)查看編碼后地結果。我們可以看到第一列有四種情況,所以第一列會被分為四個列。也就是說原來地。零表示為[一,零,零,零],一表示為[零,一,零,零],二表示為[零,零,一,零],三表示為[零,零,零,一]。同樣地道理,第二列也被分為四個列,四表示為[一,零,零,零],五表示為[零,一,零,零],六表示為[零,零,一,零],七表示為[零,零,零,一]。六.一.六缺失值插補我們所獲得地數據不一定是完整地數據,里面可能存在著缺失地情況。這時候就需要對這些缺失地數據做一些處理,以補全它們。(一)導入有關模塊。(二)創建插值對象。(三)導入有關數據。(四)訓練插值模塊。(五)行轉換。在axis=零地情況下,第一列有兩個非空值,它們地均值是一.五,所以空值全部都用一.五填充。六.一.七生成多項式特征在機器學,有些時候數據集地特征很少,這個時候就需要我們自己根據以后地特征構造一些新地特征出來。(一)導入有關模塊。(二)創建多項式特征對象。(三)導入有關數據。(四)訓練多項式特征對象。(五)將原數據轉換為多項式,X地特征已經從轉換為。六.二降維在機器學過程,我們可能會碰到一些維度非常多地數據,當使用這些復雜維度做學時可能會產生兩個問題:維度多會造成過度擬合。維度多會增加機器學算法地復雜度,從而降低機器學地效率。scikit-learn庫提供了三種降低維度地方法,它們分別是PCA,隨機投影與特征凝聚,如圖六.四所示。在本書地第一六章PCA降維我們會詳細講解其方法與思想。圖六.四scikit-learn提供地降維方法六.三有監督學,無監督學有監督學是指在訓練模型地過程,已知正確結果。scikit-learn提供了多種有監督學地方法,如圖六.五所示。本書地第八章至第一五章都屬于有監督學地范疇。無監督學是指在訓練模型過程,不給出目地變量,讓算法自動找尋訓練集地規律,如圖六.六所示。本書地第一八章聚類具體會闡述無監督學思想與方法。六.四模型評估當我們對一個數據集選定模型,并行訓練之后,我們需要對這個模型行評估,以判定這個模型地優劣。不好地模型通常有以下兩種情況:欠擬合。欠擬合是指模型不能很好地適應與擬合已有地數據。欠擬合地模型在訓練集與測試集上表現得都會很差。過度擬合。過度擬合是指模型非常完美地適應與擬合已有地數據,這將導致該模型地泛化能力嚴重下降。過度擬合在訓練集上表現幾乎完美,而在測試集上則表現地很差。所以,最優地模型應該是欠擬合與過度擬合地折,它既較好地擬合了訓練集又具有很好地泛化能力,這種泛化能力主要體現就是在測試集上也會有很好地表現。六.四.一測試集評分在scikit-learn包,提供了測試集評分地方法。讓我們看一個簡單地例子:(一)導入有關模塊。(二)導入有關數據,這里導入鳶尾花數據集。(三)查看數據集屬數據形狀。(四)查看數據集目地變量數據形狀。(五)將數據集分割為訓練集與測試集,分割比例是四:一。(六)查看訓練集數據。(七)查看訓練集數據。(八)查看學集數據。(九)查看學集數據。(一零)創建knn分類器對象。(一一)訓練模型。(一二)對測試結果行評分。看來這個模型地得分不錯。我們可以調整模型不同地參數對其最后地得分行比較,然后選擇得分較多地參數模型作為最終地結果。但是,在不同地實驗過程,我們地測試集可能在某次實驗上,同訓練集同時出現了過度擬合地情況,從而導致了在真實地應用過程,泛化能力降低地結果。我們現在對數據集地劃分,如圖六.七所示。為了避免這個種情況地發生,我們需要再設置一個"驗證集",當模型訓練完成以后,現在驗證集上對模型行評估,然后選擇評估分數最高地模型,再在測試集上行最終地測試,如圖六.八所示。圖六.七將數據分割為訓練集與測試集,可能同時出現過度擬合圖六.八將數據分割為訓練集,驗證集與測試集這是比較標準地模型評估過程,但是這并不是最優地辦法。雖然"驗證集"地選擇,有效地避免地測試集出現過度擬合地情況,但是現在我們已經將元數據分為了三個部分:"訓練集","驗證集"與"測試集"。我們大大減少了"訓練集"地數據量,這可能造成訓練地模型效果很差。另外一方面,由于驗證集與測試集,仍然是一次選擇地結果,所以最后地模型評估結果有很大地隨機。叉驗證(Cross-validation)很好地解決了這兩個問題。叉驗證多次選擇了測試集做最后地評估,這有效地避免了隨機所帶來地誤差。而且叉驗證不需要選擇驗證集,這樣就避免地數據地浪費,使得訓練集有足夠地樣本數量。叉驗證最基本地方法是k折叉驗證(k-foldcrossvalidation)。它地原理是,如圖六.九所示。圖六.九叉驗證,白色是訓練集,黑色是測試集將原始數據隨機分為k份。每次挑選其k-一份作為訓練集,剩余地一分作為測試集行訓練。循環第二步k次,這樣每一份都會被作為測試集。計算k組測試集評估結果地均值作為模型地最終得分。當然叉驗證唯一地缺點就是計算代價相對較高。實現叉驗證可以調用scikit-learn里面提供地cross_val_score輔助函數。叉驗證實例如下:(一)導入有關模塊。(二)導入有關數據集。(三)創建knn分類器對象。(四)對分類器行叉驗證。(五)查看驗證結果。這里是每次迭代地分數,我們可以看到最低地得分只有零.八六,而最高地話是一。(六)查看均值。(七)查看標準差。六.四.二叉驗證迭代器我們已經了解了叉驗證地基本思想,接下來我們將會介紹幾個不同地叉迭代器以及它們地使用方法。一.K折KFold會將數據集劃分為k個分組,成為折疊(fold)。如果k地值等于數據集實例地個數,那么每次地測試集就只有一個,這種處理方式我們成為"留一"。在sci-kit提供了KFold方法來行分組。二.重復K折叉驗證在KFold方法,是采用地不放回地抽樣方法,在scikit還提供了RepeatedKFold方法來行重復抽樣。三.留一叉驗證留一叉驗證是K折地特殊情況,既k地值等于數據集實例地個數。留一叉驗證地優點是每次訓練地訓練集都是除了一個樣本之外地所有樣本,所以保證了訓練集樣本盡可能大。四.留P叉驗證留P叉驗證是值選定P個樣本做測試集,然后輸出所有可能地訓練-測試集對。與LeaveOneOut與KFold不同地地方是,當P>一時,測試集會有重疊。五.隨機排列叉驗證這個方法會將數據集分散,隨機排列,然后劃分為一對測試集與訓練集。六.四.三分層叉驗證迭代器有些數據集并不像我們想象地分布那么均勻,這樣在訓
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江省稽陽聯誼學校2025年4月高三聯考數學試卷(含答案)
- 《人生的意義在于奉獻》課件
- 《演講的藝術》課件
- 受彎構件的其他構造要求鋼筋混凝土結構課件
- 短期合同續簽建議
- 鐵路班組管理S班組凝聚力訓練課件
- 討論照明電路能否采用三相三線制供電方式不加零線會不會出現問
- 網格橋架安裝施工方案
- 鐵路客運站車無線交互系統客運管理部分課件
- 大學生職業規劃大賽《視覺傳達設計專業》生涯發展展示
- 任務三家庭清掃有工序(教學課件)二年級下冊勞動技術(人美版)
- 電商訂單處理流程優化計劃
- 建筑工程檢測行業市場現狀分析及未來三到五年發展趨勢報告
- 高爐水渣基礎知識
- 腫瘤標志物的試題及答案
- 煙草行業網絡安全體系建設
- 2025年中考地理二輪復習:中考地理常見易混易錯知識點與練習題(含答案)
- 硫酸使用安全培訓
- 政務服務窗口培訓課件
- 2025年湖南湘潭高新集團有限公司招聘筆試參考題庫含答案解析
- 2024年02月福建2024年興業銀行福州分行金融科技人才招考筆試歷年參考題庫附帶答案詳解
評論
0/150
提交評論