標籤:scikit-learn 機器學習 翻譯
章節內容
在這一章中,我們主要介紹關於scikit-learn機器學習庫的詞彙,並且將給出幾個例子
機器學習:問題背景
通常,一個學習問題看重資料的n個樣本然後來嘗試證明一些未知資料的屬性。如果每一個樣本超過一個單一的數值,例如多維實體,它不就是有一些屬性或者特徵嗎?
我們能用幾個大的分類來分隔學習問題:
-
監督學習: 在監督學習中,這些資料內建了我們想要預測的額外的屬性,這個問題是下面兩者中的任何一個:
分類:屬於兩種或者更多類別的樣本,我們想從已經被標記的資料中如何預測還沒有被標記的資料。一個分類問題的例子將會是手寫體數字識別的範例。這個例子的目的是標記輸入向量為其中有限數量的非連續類別。對於分類的另一種想法是作為監督學習的一種分離的表格(不是連續的),在這個表格中,一個是被限制的類別數量,而且對於每個類別都有N個範例被提供;一個是嘗試用正確的類別或者類來標記他們。
迴歸:如果期望的輸出是由一個或者更多的連續的變數組成的,那麼任務被稱作迴歸。迴歸問題的例子將通過一條鮭魚的年齡和重量預測它的長度。
訓練集和測試集
機器學習是關於瞭解一些資料集的屬性並且將它們應用到新資料上。這就是為什麼在機器學習中通常的慣例是評價一個演算法是分割資料為兩個相近的資料集,其中一個集合叫做訓練集,我們在訓練集上瞭解資料屬性;另一個集合被叫做測試集,在測試集上面我們測試那些屬性。
載入一個例子資料集
scikit-learn內建一些標準資料集,例如iris和digits資料集為分類,還有boston house price資料集為迴歸。
在下面,我們啟動python IDE,並且載入iris和digits資料集。
一個資料集是一個字典對象,這個對象持有關於這個資料的所有的資料和一些來源資料,這個資料被儲存在.data成員中,他是一個n_samples,n_features數組,為了防止管理意外,一個或者更多的響應變數會被儲存在.target成員中。
例如,就digits資料集來說,digits.data給於了訪問特效能被使用在歸類digits範例上:
並且digits. target給了digit資料集的背景,也就是對於每一個數位影像的一直性的數量,這是我們正在學習的:
?
?數組的形狀
?資料總是一些2D數組,shape(n_samples,n_features),儘管未經處理資料也許有一個不同的形狀,就這個digits而言,每一個原始範例是一個shape(8,8)的映像,並且能被訪問使用:
?
學習和預測
?就digits資料集而言,任務是去預測,給一個映像,代表它數字化了。我們被給了10中合理的種類的範例(數字0到9)。在這個範例上面我們安裝一個評估器,這個評估器是能預測還沒有被發掘的類別的範例的。(翻譯的太撇腳了)
?在scikit-learn中,一個類別的評估器是一個實現了fit(x,y)和predict(T)的python對象。
?一個評估器的例子是類別sklearn.svm.SVC,這個類實現了支援向量分類。一個評估器的構造器需要一個模型參數,但是暫時的,我們將只把它當作一個黑盒:
?
?
?選擇模型參數
? ?在上面的例子中我們設定了伽馬手動值。它可能會自動找到優選值為參數通過使用工具像網格搜尋和交叉驗證。
?我們作為一個類別調用我們的評估器執行個體clf,它現在必須適應模型,也就是說,它必須從模型中學習。這是被完成了通過傳遞我們的訓練資料集給這個fit方法。作為一個訓練集,讓我們使用所有的我們的資料集部分的最後一個映像。我們使用[:-1]python語句選擇這個訓練集,它會產生一個包含所有的除了最後的digits.data的實體的新數組:
?
?現在你能預測新的值了,通常來說,我們能詢問這個類別在digits資料集的我們的最後一個映像的數字是我們還沒有使用去訓練這個分類器:
?
?像下面的相應映像:
?
?正如你看到的,這是一個具有挑戰性的任務:圖象有很少的像素,你相信分類器嗎?
?一個完整的分類例子是有用的作為一個範例,你能運行並且學習 Recognizing hand-written digits
模型持久化
?通過使用python的built-in持久化模型在scikit中儲存一個模型是可能的,命名pickle:
?
?在scikit的特別案例中,它也許使用joblib的pickle的替換(joblib.dump & joblib.load)是更有趣的,在大資料上它是更有效,但是僅僅能存入磁碟而不是一個字串。
?
?然後你可以讀取上面的檔案使用:
?
?主要:joblib.dump返迴文件名的列表。被包含在clf對象中的每一個單獨的numpy數組是檔案系統中被序列化且被分割的檔案。當使用joblib.load重新載入模型時,所有的檔案要求在同一個檔案夾中。
?注意pickle有一些安全和維護方面的問題。請參照章節Model persistence?擷取更詳細的資訊。
?
scikit-learn機器學習庫介紹(翻譯tutorial)