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

2020-12-16 機器之心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 中使用他們。

具體來說,其中包括:

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

相關焦點

  • 教程 | 如何在Python中用scikit-learn生成測試數據集
    數據集中的數據有完整的定義(例如線性或非線性)使你可以探索特定的算法行為。scikit-learn Python 庫提供一套函數,用於從可配置測試問題中生成樣本來進行回歸和分類。在本教程中,你將學習測試問題及如何在 Python 中使用 scikit-learn 進行測試。
  • 在Python中生成隨機數據(指南)
    每當你在Python中生成隨機數據,字符串或數字時,至少應該粗略地了解數據是如何生成的。本篇教程,將會向您介紹用於在Python中生成隨機數據的幾個不同的方法,然後從安全級別,通用性,目的和速度等方面進行比較。我保證本教程不會變成一堂數學課或是密碼學課,因為一開始我就沒有足夠的數學知識進行講授。您僅僅會了解到必要的數學知識,僅此而已。
  • 自動生成pandas代碼,python數據處理神器
    今天我要說的不是怎麼寫代碼,而是介紹一款我親手打造的小工具,它作為探索數據的工具,你不僅不需要寫任何的代碼,它最終還會自動生成pandas代碼。python 上其實有一些庫或者工具,是基於pandas做的界面操作,而我的工具有兩大特性可以秒殺他們。現在來簡單看看所見即所得,人工操作轉代碼這個工具的核心功能,就是自動生成代碼!!
  • 基於Faker生成中文測試數據實例
    上一篇 基於Python生成中文測試數據 講解了如何使用python代碼自己實現中文測試數據的生成,這篇我們分享如何基於Faker
  • python數據分析專題 (9):numpy基礎
    有了numpy才可以利用這種數組對整塊數據執行一些數學運算,比python自帶的數組以及元組效率更高,其語法跟變量元素之間的運算一樣,無需進行循環操作。為什麼需要numpypython默認進行多個數據的計算,是使用循環,如果循環次數多,就非常耗時。
  • 數據可視化 | 用Python生成個性化詞雲
    接下來將介紹如何使用python生成個性化詞雲。最關鍵的使用WordCloud模塊,要使用WordCloud模塊,需要先進行安裝。首先導入必要的包和數據集。Imagefrom wordcloud import WordCloud, STOPWORDS, ImageColorGeneratorimport matplotlib.pyplot as plt%matplotlib inlinedf = pd.read_csv("winemag-data-130k-v2.csv", index_col=0)如下圖,該數據集描述了不同國家的葡萄酒以及其他一些信息
  • 一種用Python生成詞雲
    一種用Python生成詞雲我們在閱讀一篇很長的文章時,總先看看文章的關鍵詞來獲知文章的大概內容。今天我們就來製作一個詞雲程序,將文章中出現次數較多的詞語提取出來,生成一張詞雲圖。w.generate(txt)w.to_file(「pic.png」)然後運行測試打開程序所在的文件夾, 我們可以看到這裡生成了一個名為pic.png的圖片文件。
  • 每個python人都離不開的12個python庫
    如果說python能取得今天的成就,一方面是它簡介的語法,更重要的一方面就是它豐富的第三方庫,可以毫不誇張的說,只要你能想到的任何一個功能模塊,都有對應的python庫,可以說正是因為有了豐富的python庫,python才發展得如此迅速,下面我們來看看python人最常用的20個python
  • python數據分析師面試題選
    如何檢驗一個數據集或者時間序列是隨機分布的畫lag plot(Correlogram:相關圖),如果圖上的點呈散亂分布,則為隨機5.range()和xrange()函數的差異range()生成的是list,而xrange()生成的是迭代器(iterator)。
  • 數據統計可視化——python生成詞雲
    如何統計文章詞頻,從而更快了解一篇文章所獲得的中文詞頻統計數據進行詞雲可視化展示,更加清晰的看到文章關鍵詞的權重詞雲庫WordCloudwordcloud庫,可以說是python非常優秀的詞雲展示第三方庫。詞雲以詞語為基本單位更加直觀和藝術的展示文本而且使用簡單,內容豐富,先看看它生成的詞雲是什麼樣的。
  • 小白數據分析——Python職位數據分析全鏈路
    這裡我們使用Axes3D來繪製# 只選擇 開發|測試|運維類 一級分類下,測試、數據開發、人工智慧、運維、後端開發 二級分類job_arr = ['測試', '數據開發', '人工智慧', '運維', '後端開發']py_jobs_2ndcat = py_jobs_final[(py_jobs_final['p1stCat
  • 用Python進行機器學習(附代碼、學習資源)
    因此,我們決定學習一個具有高階多項式項線性模型來擬合數據集。訓練/測試集劃分:表示將已有的單獨數據集劃分為兩個子集。其中一個(訓練集)用來建立模型,另外一個(測試集)用來評估模型的準確性和穩定性。這個步驟對任何一個機器學習任務來說都是必不可少的。經過處理,我們沒有用所有的數據建立出一個看似異常準確的模型。(因為模型接觸到所有的數據,當然會擬合的很好)這個模型通常在新數據(未知)數據上表現很差。
  • 基於Python 的自動文本提取:抽象法和生成法的比較
    它描述了我們(一個RaRe 孵化計劃中由三名學生組成的團隊)是如何在該領域中對現有算法和Python工具進行了實驗。我們將現有的 提取方法(Extractive)(如LexRank,LSA,Luhn和Gensim現有的TextRank摘要模塊)與含有51個文章摘要對的Opinosis數據集進行比較。
  • 7k Star 的 Python 測試框架入門指南
    參數化測試Pytest的裝飾器標記@pytest.mark.parametize可用於將不同的數據輸入到一個測試函數中,並將其轉換為多個測試。第一個參數是一個列出所有參與測試用例參數的字符串,第二個參數是一個元組,其中包含匹配的數據。
  • 如何用python實現excel中的vlookup功能?
    因為刀哥是python初學者,對於需要用到的知識點,如果以前學過的要再複習一下,年紀大了嘛記性比較差,沒學過的新知識點要先學習一下,邊學邊用,所以做的速度比較慢,但是好在,哪怕慢,只要每天進步一點點,都是好的。今天這篇分享,就是刀哥在做的過程中,遇到的其中一個知識點,即用python來實現excel中的vlookup函數功能。
  • SFI:Stata與Python的數據交互手冊(一)
    在往期推文《Stata16調用Python測試(一)》 以及 《Stata16調用Python——繪製詞雲圖》 中,我們分別從基礎功能與實踐應用的方面介紹了Stata16中的Python命令,但它們均未直面問題的核心———Python與Stata的數據交互。在Stata16版本以前,用戶並非不能實現「Stata和Python混著用」的場景。例如,通過Stata的!
  • 用於全棧自動化測試的最佳Python工具!
    那麼,您可以使用哪些最好的Python庫來幫助您進行測試和自動化工作呢?以下是我過去的受訪者最喜歡的一些Python自動化庫,以及一些我個人認為有用的庫。  但是首先,如果您正在尋找一種快速學習如何開始使用Python的方法,那麼您應該查看Andrew Knight在自動化協會的會議,了解如何開始使用Python進行測試。在檢查以下python測試庫之前,這將是一個很好的開始。
  • 【Python教程】用Python進行數據可視化
    因此,我們的要求功能的實現,更是要多去思考不同的解決方案,評估不同方案的優劣,然後使用在該場景下最優雅的方式去實現。所以,我們列出的參考資料未必是實現需求所必須的。有的時候,實現題目的要求很簡單,甚至參考資料裡就有,但是背後的思考和親手去實踐卻是任務最關鍵的一部分。在學習這些資料時,要多思考,多提問,多質疑。相信通過和小夥伴們的交流,能讓你的學習事半功倍。
  • 數據分析從業者必看,10 個加速 python 數據分析的簡單的小技巧
    對於給定的數據集,pandas 分析包計算以下統計信息:現在讓我們來看看如何安裝這個庫並讓它在 pandas 中工作。讓我們看看其中一些在常見數據分析任務中可能有用的功能:% pastebin %Pastebin 將代碼上載到 Pastebin 並返回 URL。Pastebin 是一種在線內容託管服務,我們可以在其中存儲純文本(如原始碼片段),然後可以與其他人共享 URL。
  • Python前景如何?學會Python工作好找嗎?
    近幾年來,Python發展勢頭強勁,越來越多的公司加大了對Python開發人才的招聘。很多人都看好Python的發展,紛紛前來學習Python。那麼,Python好就業嗎?下面,就和大家來嘮一嘮。目前Python應用範圍還是挺多的,從Web、爬蟲、數據分析、測試、運維、圖像識別、機器學習、深度學習,基本各個領域都有Python的身影。除了Web方面比起Java、Php等遜色一些,其他方面,Python都扮演著比較重要的角色。