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