測試數據集是一個小型的人工數據集,它可讓你測試機器學習算法或其它測試工具。html
測試數據集的數據具備定義明確的性質,如線性或非線性,這容許您探索特定的算法行爲。算法
scikit-learn Python庫提供了一組函數,用於從結構化的測試問題中生成樣本,用於進行迴歸和分類。機器學習
在本教程中,您將發現測試問題以及如何在Python中使用scikit學習。函數
完成本教程後,您將知道:工具
讓咱們開始吧性能
教程概述學習
本教程分爲三個部分,分別是:測試
測試數據集設計
開發和實現機器學習算法遇到的問題是,您如何知道是否正確地實現了機器學習算法。3d
即便存在bug有些算法仍是能執行。
測試數據集是一個較小的人爲設計問題,它容許您測試和調試算法和測試工具。
它們還能幫助更好地理解算法的行爲,以及超參數是如何在相應算法的執行過程進行改變的。
下面是測試數據集的一些理想屬性:
它們能夠快速且容易地生成。
它們包含「已知」或「理解」的結果與預測相比較。
它們是隨機的,每次生成時都容許對同一個問題進行隨機變量的變化。
它們很小,能夠很容易在兩個維度中進行可視化。
它們也能夠被簡單地放大。
我建議在開始使用新的機器學習算法或開發新的測試工具時使用測試數據集。
scikit-learn是一個用於機器學習的Python庫,它提供了生成一系列測試問題的功能。
在本教程中,咱們將介紹一些爲分類和迴歸算法生成測試問題的例子。
分類測試問題
分類是把標籤分配給觀測樣本的問題。
在這一節中,咱們將討論三種分類問題:斑點、月亮和圓圈。
make_blob()函數可用於生成高斯分佈的點。
您能夠控制生成多少個斑點,以及生成的樣本數量,以及其餘一些屬性。
若是這些斑點有線性可分的性質,那麼這個問題適用於線性分類問題。
下面的例子生成一個帶有三類斑點的二維數據集,做爲一個多類分類預測問題。
每一個觀察都有兩個輸入和0、1或2個類值。
完整代碼以下
運行這個示例會生成問題的輸入和輸出,而後建立一個方便的2D繪圖,用不一樣的顏色顯示不一樣的類。
注意,因爲問題生成器的隨機特性,您的特定數據集和結果圖將會有所不一樣。
這是一個特性,而不是一個bug。
測試分類問題的散點圖
咱們將在下面的示例中使用這個相同的示例結構。
make_moons()函數是用於二分類問題的的,它將生成像漩渦同樣,或者像月亮形狀同樣的數據集。
你能夠控制月亮的形狀和產生的樣本數量。
這個測試問題適用於可以學習非線性類邊界的算法。
下面的例子產生了一個帶有中等噪聲的月球數據集。
完整的代碼以下
運行該示例將生成並繪製用於檢查的數據集,再次爲其指定的類着色。
衛星測試分類問題散的點圖
make_circles()函數會產生一個二分類問題,這個問題會出如今一個同心圓中。
再一次,就像衛星測試的問題同樣,你能夠控制形狀中噪音的大小。
該測試問題適用於可以學習複雜非線性曲線的算法。
下面的示例生成一個帶有一些噪聲的圓形數據集。
完整的代碼以下
運行該示例將生成並繪製用於檢查的數據集。
圓試驗分類問題的散點問題
迴歸測試的問題
迴歸是預測某個觀測量的問題。
make_regression()函數將建立一個帶有輸入和輸出之間線性關係的數據集。
您能夠配置示例的數量、輸入特性的數量、噪聲級別,等等。
這個數據集適用於可以學習線性迴歸函數的算法。
下面的示例將生成100個示例,其中包含一個輸入特性和一個輸出特性,它的噪聲很低。
完整的代碼以下。
運行該示例將生成數據,並繪製X和y關係圖,因爲該關係是線性的,所以很是無趣。
迴歸測試問題的散點圖
延伸
本節列出了一些擴展您可能但願探索的教程的想法。
比較算法
選擇一個測試問題,並對問題的算法進行比較,並報告性能。
擴大的問題
選擇一個測試問題,並探索擴大它的規模,使用改進的方法來可視化結果,或者探索給定的算法的模型技巧和問題深度。
額外的問題
這個庫提供了一系列額外的測試問題;
爲每一個人編寫一個代碼示例來演示它們是如何工做的。
若是您探究這些擴展的任何一個,我很想知道。
進一步的閱讀
若是您但願深刻研究,本節將提供更多關於主題的參考資料。
總結
在本教程中,您發現了測試問題,以及如何在Python中使用scikit庫。
具體來講,你學會了: