Python功能不夠多?來看看如何生成測試數據集吧!

2021-01-08 機器之心Pro

測試數據集是小型的專用數據集,它可以讓你測試一個機器學習算法或測試工具。數據集中的數據有完整的定義(例如線性或非線性)使你可以探索特定的算法行為。scikit-learn Python 庫提供一套函數,用於從可配置測試問題中生成樣本來進行回歸和分類

在本教程中,你將學習測試問題及如何在 Python 中使用 scikit-learn 進行測試。

完成本教程後,你將知道:

如何生成多類分類預測測試問題如何生成二進位分類預測測試問題如何生成線性回歸預測測試問題

讓我們開始吧。

教程概述

本教程被分成了 3 個部分,他們分別是:

1. 測試數據集

2. 分類測試問題

3. 回歸測試問題

測試數據集

開發和實現機器學習算法時的一個問題是如何知道你是否已經正確實現了他們——它們似乎在有 bug 時也能工作。

測試數據集是小型設計問題,它能讓你測試、調試算法和測試工具。它們對於更好地理解算法響應超參數變化的行為方面也很有用。

下面是測試數據集的一些理想特性:

它們可以快速、容易地生成。它們包含「已知」或「理解」的結果來和預測進行比較。它們是隨機的,每次生成時都允許在同一個問題上隨機變化。它們很小、容易在而二維中實現可視化。它們可以被增大。

我建議在開始一個新的機器學習算法或開發一個新的測試工具時使用測試數據集。scikit-learn 是一個用於機器學習的 Python 庫,它提供了生成一組測試問題的函數。

在本教程中,我們將看一些為分類和回歸算法生成測試問題的例子。

分類測試問題

分類是將標籤分配給數據的問題。在本節中,我們將看三個分類問題:blobs、moons 和 circles。

Blobs 分類問題

make_blobs() 函數可被用於生成具有高斯分布的 blobs 點。你可以控制生成 blobs 的數量,生成樣本的數量以及一系列其他屬性。考慮到 blobs 的線性可分性質,該問題也適用於線性分類問題。

下面的例子是一個多類分類預測問題,它生成了一個具有三個 blobs 的 2D 樣本數據集。每個數據有兩個輸入和 0、1 或 2 個類的值。

# generate 2d classification dataset

X, y = make_blobs(n_samples=100, centers=3, n_features=2)

完整的例子如下所示。

from sklearn.datasets.samples_generator import make_blobs

from matplotlib import pyplot

from pandas import DataFrame

# generate 2d classification dataset

X, y = make_blobs(n_samples=100, centers=3, n_features=2)

# scatter plot, dots colored by class value

df = DataFrame(dict(x=X[:,0], y=X[:,1], label=y))

colors = {0:'red', 1:'blue', 2:'green'}

fig, ax = pyplot.subplots()

grouped = df.groupby('label')

for key, group in grouped:

group.plot(ax=ax, kind='scatter', x='x', y='y', label=key, color=colors[key])

pyplot.show()

運行該示例將生成該問題的輸入和輸出,然後創建一個方便的 2D 圖,用不同的顏色顯示不同類的點。注意,考慮到問題生成器的隨機特性,你的特定數據集和結果圖會有所不同。這是一個特點,而不是一個錯誤。

Blobs 測試分類問題的散點圖

我們將會在下面的例子中使用相同的示例結構。

Moons 分類問題

make_moons() 函數用於二進位分類並且將生成一個漩渦模式,或者兩個 moons。你可以控制 moon 形狀中的噪聲量,以及要生產的樣本數量。

這個測試問題適用於能夠學習非線性類邊界的算法。下面的例子生成了一個中等噪音的 moon 數據集

# generate 2d classification dataset

X, y = make_moons(n_samples=100, noise=0.1)

完整的例子如下所示。

from sklearn.datasets import make_moons

from matplotlib import pyplot

from pandas import DataFrame

# generate 2d classification dataset

X, y = make_moons(n_samples=100, noise=0.1)

# scatter plot, dots colored by class value

df = DataFrame(dict(x=X[:,0], y=X[:,1], label=y))

colors = {0:'red', 1:'blue'}

fig, ax = pyplot.subplots()

grouped = df.groupby('label')

for key, group in grouped:

group.plot(ax=ax, kind='scatter', x='x', y='y', label=key, color=colors[key])

pyplot.show()

運行該示例會生成並繪製數據集以供查閱,然後再按照指定的類對樣本著色。

Moons 測試分類問題的散點圖

Circles 分類問題

make_circles() 函數生成一個數據集落入同心圓的二進位分類問題。再一次地,與 moons 測試問題一樣,你可以控制形狀中的噪聲量。該測試問題適用於可以學習複雜的非線性流行的算法。下面的例子中生成了一個具有一定噪音的 circles 數據集

# generate 2d classification dataset

X, y = make_circles(n_samples=100, noise=0.05)

完整例子如下所示。

from sklearn.datasets import make_circles

from matplotlib import pyplot

from pandas import DataFrame

# generate 2d classification dataset

X, y = make_circles(n_samples=100, noise=0.05)

# scatter plot, dots colored by class value

df = DataFrame(dict(x=X[:,0], y=X[:,1], label=y))

colors = {0:'red', 1:'blue'}

fig, ax = pyplot.subplots()

grouped = df.groupby('label')

for key, group in grouped:

group.plot(ax=ax, kind='scatter', x='x', y='y', label=key, color=colors[key])

pyplot.show()

運行該示例並繪製數據集以供查閱。

Circles 測試分類問題的散點圖

回歸測試問題

回歸是根據觀察數據預測數量的問題。make_regression() 函數將創建一個輸入和輸出具有線性關係的數據集。你可以配置樣本數量,輸入特徵數量,噪聲級別等等。該數據集適用於可以學習線性回歸函數的算法。

下面的例子將生成 100 個示例,他們具有適度的噪聲,都有一個輸入特徵和一個輸出特徵。

# generate regression dataset

X, y = make_regression(n_samples=100, n_features=1, noise=0.1)

完整例子如下所示。

from sklearn.datasets import make_regression

from matplotlib import pyplot

# generate regression dataset

X, y = make_regression(n_samples=100, n_features=1, noise=0.1)

# plot regression dataset

pyplot.scatter(X,y)

pyplot.show()

運行該示例將生成數據並繪製 x 和 y 的關係,考慮到它是線性的,所以結果是很簡單的。

回歸測試問題的散點圖

擴展

本節列出了一些你可能想要探討的擴展該教程的想法。

比較算法。選擇一個測試問題,並比較該問題的一系列算法並匯報性能。放大問題。選擇一個測試問題並探索將其放大,用級數法來可視化結果,也可以探索一個特定算法模型技能和問題規模。其他問題。庫提供了一套其他測試問題;為每個問題編寫了一個代碼示例來展示它們是如何工作的。

拓展閱讀

如果你想要更深入的了解,本節提供了關於該課題更多的資源。

scikit-learn 用戶指南: Dataset loading utilities (http://scikit-learn.org/stable/datasets/index.html)scikit-learn API: sklearn.datasets: Datasets (http://scikit-learn.org/stable/modules/classes.html#module-sklearn.datasets)

總結

在本教程中,我們學習了測試問題及如何用 scikit-learn 在 Python 中使用他們。

具體來說,其中包括:

如何生成多類分類預測測試問題;如何生成二進位分類預測測試問題;如何生成線性回歸預測測試問題。

相關焦點

  • 數據不夠,Waymo用GAN來湊:用生成圖像在仿真環境中訓練模型
    模擬環境裡的場景、對象、傳感器反饋通常是用虛幻引擎或者Unity這樣的遊戲引擎來創建的。為了實現逼真的雷射雷達等傳感器建模,就需要大量的手動操作,想要獲得足夠多、足夠複雜的數據,可得多費不少功夫。數據不夠,無人車標杆Waymo決定用GAN來湊。這隻GAN,名叫SurfelGAN,能基於無人車收集到的有限的雷射雷達和攝像頭數據,生成逼真的相機圖像。用GAN生成的數據訓練,還是訓練自動駕駛汽車,這到底靠譜不靠譜?
  • 想用StyleGAN生成老婆?來看看這個小哥的復現細節吧
    為了測試這個動態連結庫,我創建了一個與之交互的工具。最終,我為這個工具添加了越來越多的功能,直到這個工具成為了本項目最大的組成部分之一。以下是項目的整體架構:圖 4:從 TensorFlow python 實現到使用工具生成圖像的工作流程我喜歡使用工具來可視化「不透明」的數字對象(比如惡意軟體和深度學習模型)並與之交互,所以我增加的一個功能就是對特徵圖的可視化及修改(見圖 5,https://towardsdatascience.com/applied-deep-learning-part-
  • 數據分析從業者必看,10 個加速 python 數據分析的簡單的小技巧
    對於給定的數據集,pandas 分析包計算以下統計信息:現在讓我們來看看如何安裝這個庫並讓它在 pandas 中工作。讓我們看看其中一些在常見數據分析任務中可能有用的功能:% pastebin %Pastebin 將代碼上載到 Pastebin 並返回 URL。Pastebin 是一種在線內容託管服務,我們可以在其中存儲純文本(如原始碼片段),然後可以與其他人共享 URL。
  • 數據工程師需要掌握的 18 個 Python 庫
    作者 | 劉早起早起責編 | 屠敏本文對Python中在數據分析中需要掌握的庫進行了整理,一起來看看吧!數據獲取SeleniumSelenium是一個Web測試自動化框架,最初是為軟體測試人員創建的。所以使用 pip install Twisted-18.9.0-cp37-cp37m-win32.whl 來安裝,然後使用pip install scrapy 來安裝scrapy就可以了數據獲取Beautiful SoupBeautiful Soup也是一個從網站爬取數據的庫,他提供一些簡單的、python式的函數用來處理導航、搜索、修改分析樹等功能。
  • 數據科學的Python軟體包
    當前,我們正處於大數據時代,每秒生成大量數據。大企業正在利用這些數據來促進市場增長。使用數據科學和其他技術,我們從數據中提取信息性細節,以解決複雜的現實世界問題並建立預測模型。數據科學不是工具或技術。通過掌握市場上現有的一些工具和庫,可以培養和滋養這項技能。為什麼要將Python用於數據科學?
  • 【明星自動大變臉】最新StarGAN對抗生成網絡實現多領域圖像變換(附代碼)
    幾個圖像數據集帶有許多標記屬性。例如,在CelebA數據集包含40個標籤的面部特徵,如頭髮的顏色、性別、年齡;RaFD數據集有8個表示面部表情的標籤,如「快樂」,「憤怒」和「悲傷」。我們可以根據這些屬性設置執行更有趣的任務,即多域圖像到圖像的轉換,我們根據多個域的屬性來改變圖像。
  • 開發三年轉測試,除了Python基礎外,還需哪些必備測試技能?
    當一個產品越來越龐大、用例越來越多,用例如何設置、腳本如何規劃、代碼結構如何優化,當需求變動時又如何做到高可維護、高健壯性的問題會接踵而來。所以,一名優秀的測試開發工程師是必須具備優秀的代碼能力,甚至知識面是需要比普通的開發人員更廣的,比如他需要熟悉自動化測試、伺服器部署、網絡架構、軟體性能、軟體安全等等方面的知識。
  • 初學者如何用「python爬蟲」技術抓取網頁數據?
    熟悉python編程剛開始入門爬蟲,初學者無需學習python的類,多線程,模塊和其他稍微困難的內容。3、了解python網絡爬蟲的基本原理編寫python搜尋器程序時,只需執行以下兩項操作:發送GET請求以獲取HTML; 解析HTML以獲取數據。 對於這兩件事,python有相應的庫可以幫助您做到這一點,您只需要知道如何使用它們即可。
  • 如何用Python和深度神經網絡識別圖像?
    電腦會利用訓練集合的數據自己建立模型。但是模型的效果(例如分類的準確程度)如何?我們需要用測試集來進行驗證測試。這就如同老師不應該把考試題目都拿來給學生做作業和練習一樣。只有考學生沒見過的題,才能區分學生是掌握了正確的解題方法,還是死記硬背了作業答案。我們讓TuriCreate把80%的數據分給了訓練集,把剩餘20%的數據拿到一邊,等待測試。
  • 【明星自動大變臉,嬉笑怒罵加變性】最新StarGAN對抗生成網絡實現多領域圖像變換(附代碼)
    幾個圖像數據集帶有許多標記屬性。例如,在CelebA數據集包含40個標籤的面部特徵,如頭髮的顏色、性別、年齡;RaFD數據集有8個表示面部表情的標籤,如「快樂」,「憤怒」和「悲傷」。我們可以根據這些屬性設置執行更有趣的任務,即多域圖像到圖像的轉換,我們根據多個域的屬性來改變圖像。
  • 大數據分析Python NumPy庫使用教程
    NumPy 是一個運行速度非常快的數學庫,主要用於數組計算,包含: 1)一個強大的N維數組對象 ndarray 2)廣播功能函數 3)整合 C/C++/Fortran 代碼的工具 4)線性代數、傅立葉變換、隨機數生成等功能
  • 廣州Python測試培訓
    主要內容: 爬蟲原理、爬蟲基礎、數據抓取、爬蟲攻防、模擬瀏覽器、scrapy框架、urllib2庫、scrapy框架與Spider類、多線程爬蟲、Scrapy爬蟲運行、股票信息數據抓取、58同城數據抓取、 酒店信息數據抓取。
  • 用Python處理不平衡數據集
    ,可以測試下是否對分類結果有幫助。        這類方法通過多個聚類,把原始樣本劃分成多個聚類簇,然後用每個聚類簇的中心來代替這個聚類簇的特性,完成採樣的目的。可知,這種採樣的樣本不是來自原始樣本集,而是聚類生成              的。
  • 如何自學成 Python 大神?這裡有些建議
    就如何高效地學習 Python 而言,勤加練習是最好的途徑。在我個人的學習經歷中,首先我是通過閱讀 Codecademy 的 Python 在線指南( https://www.codecademy.com/learn/learn-python )來熟悉Python 語法,當然也有其他類似的教程或指南來幫助你學習 Python 語法。
  • 史上最全實戰資源,機器學習框架、高分練手項目及數據集匯總
    利用chainer可以輕鬆使用多GPU實例進行訓練,還會自動記錄結果、圖表損失和精度並生成用於使用計算圖來可視化神經網絡的輸出。,估計統計模型和執行統計測試。描述性統計,統計測試,繪圖函數和結果統計的廣泛列表可用於不同類型的數據和每個估算器。
  • Python啥都行_Robot自動化測試
    比如你在python文件中寫好了一個函數login_system(username,password),然後Robot Framework就可以導出為Login System,別人寫腳本時就可以寫成Login System username password。
  • python自動化測試實例—保險測試場景中的應用
    最近公司做保險項目的測試,發現保險測試是一件非常繁瑣的事情,特別是保費那塊。遇到的保險場景是這樣的:要測一款重疾險,不同年齡段的人保費會不相同,有或是沒有社保,保費不相同,還有各種附加險選擇買或者是不買,最終保費也會不一樣。
  • 如何進行接口測試?如何做好接口測試?API 測試該了解的技術細節
    那麼,什麼是 API 測試?API 測試其實是一種用程序或工具來發送數據,同時驗收系統的返回值的方法。這種測試更偏向於業務實現邏輯。常見的網絡協議有 TCP、Http、webservice、socket 等,http?
  • python 如何使用HttpRunner做接口自動化測試
    接口自動化主流方案包含:python + Pytest/Unittest、Java + TestNG、Postman、HttpRunner、Postman、Jmeter、RobotFramework 等本篇文章將和大家一起聊聊 HttpRunner 做接口自動化的流程2.介紹及安裝HttpRunner 是一款完全由 Python 語言編寫的測試框架
  • 用Python進行Web爬取數據
    介紹我們擁有的數據太少,無法建立機器學習模型。我們需要更多數據!如果這句話聽起來很熟悉,那麼你並不孤單!希望獲得更多數據來訓練我們的機器學習模型是一個一直困擾人們的問題。我們無法在數據科學項目中獲得可以直接使用的Excel或.csv文件,對嗎?那麼,如何應對數據匱乏的問題呢?