自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

驚呆了!在 Jupyter 中用鼠標(biāo)“畫”出數(shù)據(jù)集

開(kāi)發(fā) 項(xiàng)目管理
DrawData 的出現(xiàn),讓數(shù)據(jù)生成從一項(xiàng)繁瑣的編程任務(wù)變成了一個(gè)充滿創(chuàng)造力的過(guò)程。無(wú)論你是數(shù)據(jù)科學(xué)家、教育工作者,還是機(jī)器學(xué)習(xí)愛(ài)好者,這個(gè)庫(kù)都能讓你的工作更加高效。

你是否曾在數(shù)據(jù)科學(xué)項(xiàng)目中為生成一個(gè)符合需求的數(shù)據(jù)集而頭疼?比如,當(dāng)你需要演示一個(gè)清晰的聚類算法時(shí),卻發(fā)現(xiàn)隨機(jī)生成的數(shù)據(jù)點(diǎn)雜亂無(wú)章;或者當(dāng)你試圖展示一個(gè)非線性決策邊界時(shí),手動(dòng)調(diào)整參數(shù)卻始終無(wú)法達(dá)到理想效果。傳統(tǒng)的數(shù)據(jù)生成方法往往需要編寫冗長(zhǎng)的代碼、反復(fù)調(diào)試分布參數(shù),甚至還要依賴運(yùn)氣才能得到滿意的結(jié)果。

直到我發(fā)現(xiàn)了 DrawData——這個(gè)神奇的 Python 庫(kù)徹底改變了我的數(shù)據(jù)生成方式。它允許你像在白板上作畫一樣,用鼠標(biāo)直接繪制數(shù)據(jù)集,幾秒鐘內(nèi)就能得到符合你預(yù)期的數(shù)據(jù)分布。無(wú)論是用于教學(xué)演示、算法測(cè)試,還是機(jī)器學(xué)習(xí)模型的原型設(shè)計(jì),DrawData 都能讓你的工作變得更加高效和有趣。

 DrawData 發(fā)現(xiàn)之旅

最近負(fù)責(zé)一個(gè)機(jī)器學(xué)習(xí)入門研討會(huì),需要準(zhǔn)備一些直觀的案例來(lái)演示聚類、分類和回歸算法。我希望數(shù)據(jù)集能清晰展現(xiàn)不同算法的特點(diǎn)——比如完美的球形簇、螺旋分布,或者經(jīng)典的 XOR 模式。然而,手動(dòng)生成這些數(shù)據(jù)并不容易:

  • 為了構(gòu)造聚類數(shù)據(jù),我不得不反復(fù)調(diào)整 sklearn.datasets.make_blobs 的參數(shù),確保類別之間足夠分離。
  • 想要一個(gè)漂亮的螺旋數(shù)據(jù)集?那就得寫一段復(fù)雜的極坐標(biāo)轉(zhuǎn)換代碼。
  • 更別提非線性邊界的數(shù)據(jù)了,稍有不慎,生成的點(diǎn)就會(huì)混成一團(tuán),毫無(wú)區(qū)分度。

就在我?guī)缀跻艞壍臅r(shí)候,我發(fā)現(xiàn)了 DrawData。它的概念簡(jiǎn)單到令人難以置信:直接在 Jupyter Notebook 里用鼠標(biāo)繪制數(shù)據(jù)點(diǎn),然后一鍵導(dǎo)出為 DataFrame。我半信半疑地試了一下,結(jié)果——它不僅真的能用,而且生成的數(shù)據(jù)完全符合我的設(shè)想!

DrawData 是什么?為什么它如此強(qiáng)大?

DrawData 的核心功能可以用一句話概括:“所見(jiàn)即所得”的數(shù)據(jù)生成工具。它提供了一個(gè)交互式畫布,讓你可以:

  1. 自由繪制數(shù)據(jù)點(diǎn):用不同顏色(代表不同類別)直接在圖表上點(diǎn)擊或拖動(dòng),生成散點(diǎn)數(shù)據(jù)。
  2. 調(diào)整數(shù)據(jù)分布:你可以控制點(diǎn)的密度、形狀,甚至繪制復(fù)雜的模式(如環(huán)形、月牙形或自定義曲線)。
  3. 一鍵導(dǎo)出:生成的數(shù)據(jù)可以直接轉(zhuǎn)換為 Pandas DataFrame,無(wú)縫對(duì)接 Scikit-learn、PyTorch 等機(jī)器學(xué)習(xí)庫(kù)。

它的應(yīng)用場(chǎng)景非常廣泛:

  • 教學(xué)演示:讓學(xué)生直觀理解不同數(shù)據(jù)分布對(duì)算法的影響。
  • 快速原型設(shè)計(jì):在真實(shí)數(shù)據(jù)尚未準(zhǔn)備好時(shí),用合成數(shù)據(jù)測(cè)試模型。
  • 數(shù)據(jù)增強(qiáng):為特定任務(wù)生成補(bǔ)充數(shù)據(jù),比如模擬邊緣案例。

如何使用 DrawData

安裝和使用 drawdata 非常簡(jiǎn)單。如果已經(jīng)安裝了 Python,那么你已經(jīng)完成了一半。以下是入門方法:

安裝庫(kù):

pip install drawdata

在 Jupyter notebook:中導(dǎo)入并初始化它:

from drawdata import draw_scatter
import matplotlib.pyplot as plt

plt.figure(figsize=(6, 6))
draw_scatter()

圖片圖片

運(yùn)行代碼時(shí),會(huì)彈出一個(gè)交互式小部件。然后,你可以單擊并拖動(dòng)鼠標(biāo)在畫布上繪制點(diǎn)。每次單擊都會(huì)將數(shù)據(jù)添加到你的自定義數(shù)據(jù)集,你稍后可以將其導(dǎo)出為 Pandas DataFrame 或 NumPy 數(shù)組等格式。

用法:ScatterWidget

你可以加載散點(diǎn)圖小部件以立即開(kāi)始繪圖。

from drawdata import ScatterWidget

widget = ScatterWidget()
widget

圖片圖片

如果你想使用剛剛繪制的數(shù)據(jù)集,可以通過(guò)以下方式進(jìn)行:

# Get the drawn data as a list of dictionaries
widget.data

# Get the drawn data as a dataframe
widget.data_as_pandas
widget.data_as_polars

如果你想使用繪制的數(shù)據(jù)進(jìn)行 scikit-learn 操作,你可能會(huì)喜歡這個(gè)屬性:

X, y = widget.data_as_X_y

此屬性的假設(shè)是,如果您使用了多種顏色,則表示您對(duì)分類感興趣,而如果你只繪制了一種顏色,則表示你對(duì)回歸感興趣。在回歸的情況下,y將參考 y 軸。

高級(jí)用法

該項(xiàng)目在底層使用anywidget ,因此我們的工具應(yīng)該可以在 Jupyter、VSCode 和 Colab 中使用。這樣將獲得一個(gè)可以與ipywidgets本地交互的適當(dāng)小部件。

以下是更新繪圖觸發(fā)新 scikit-learn 模型進(jìn)行訓(xùn)練的示例:

from drawdata import ScatterWidget
widget = ScatterWidget()
import matplotlib.pyplot as plt
from IPython.core.display import HTML
from sklearn.linear_model import LogisticRegression
from sklearn.inspection import DecisionBoundaryDisplay
from sklearn.tree import DecisionTreeClassifier

import matplotlib.pylab as plt 
import numpy as np
import ipywidgets
widget = ScatterWidget()
output = ipywidgets.Output()


@output.capture(clear_output=True)
def on_change(change):
    df = widget.data_as_pandas
    if len(df) and (df['color'].nunique() > 1):
        X = df[['x', 'y']].values
        y = df['color']
        display(HTML("<br><br><br>"))
        fig = plt.figure(figsize=(12, 12));
        classifier = DecisionTreeClassifier().fit(X, y)
        disp = DecisionBoundaryDisplay.from_estimator(
            classifier, X, 
            response_method="predict_proba"if len(np.unique(df['color'])) == 2else"predict",
            xlabel="x", ylabel="y",
            alpha=0.5,
        );
        disp.ax_.scatter(X[:, 0], X[:, 1], c=y, edgecolor="k");
        plt.title(f"{classifier.__class__.__name__}");
        plt.show();

widget.observe(on_change, names=["data"])
on_change(None)
ipywidgets.HBox([widget, output])

圖片圖片

用法:BarWidget

from drawdata import BarWidget

widget = BarWidget(collection_names=["usage", "sunshine"], n_bins=24)
widget

圖片圖片

為什么 DrawData 是數(shù)據(jù)科學(xué)的游戲規(guī)則改變者?

1. 教學(xué)神器:讓抽象概念“看得見(jiàn)”

作為一名機(jī)器學(xué)習(xí)講師,我深知一個(gè)直觀的數(shù)據(jù)集對(duì)教學(xué)有多重要。傳統(tǒng)數(shù)據(jù)集(如 Iris 或 MNIST)雖然經(jīng)典,但往往不夠靈活——它們無(wú)法按需調(diào)整來(lái)匹配特定算法的講解需求。

DrawData 徹底解決了這個(gè)問(wèn)題。比如在講解 k-means 聚類時(shí),我不再需要說(shuō)“假設(shè)數(shù)據(jù)分布是這樣的…”,而是直接畫出三個(gè)完美分離的簇,讓學(xué)生親眼看到算法如何迭代收斂。在演示決策邊界時(shí),我可以隨手繪制一個(gè)非線性可分的數(shù)據(jù)集,讓SVM或神經(jīng)網(wǎng)絡(luò)的分類效果一目了然。

更棒的是,它的互動(dòng)性極大提升了課堂參與度。當(dāng)我現(xiàn)場(chǎng)繪制數(shù)據(jù)集時(shí),學(xué)生們的反應(yīng)往往是:“哇,原來(lái)數(shù)據(jù)可以這樣生成!”這種即時(shí)反饋?zhàn)尶菰锏睦碚撟兊蒙鷦?dòng)起來(lái)。

2. 快速原型設(shè)計(jì):沒(méi)有數(shù)據(jù)?那就畫一個(gè)!

在真實(shí)項(xiàng)目中,我們常遇到“數(shù)據(jù)尚未就緒”的困境——也許標(biāo)注還沒(méi)完成,或者第三方數(shù)據(jù)源延遲了。此時(shí),DrawData 能讓你幾分鐘內(nèi)生成替代數(shù)據(jù)集,快速驗(yàn)證想法。

  • 想測(cè)試一個(gè)新聚類算法?畫幾個(gè)分布復(fù)雜的簇試試。
  • 需要調(diào)試分類模型?手動(dòng)繪制線性可分或異或(XOR)模式的數(shù)據(jù)。
  • 甚至可以用它模擬異常檢測(cè)場(chǎng)景,比如故意畫幾個(gè)離群點(diǎn)。

這種“即時(shí)數(shù)據(jù)”的能力,讓算法開(kāi)發(fā)不再被數(shù)據(jù)采集阻塞,尤其適合黑客馬拉松、論文實(shí)驗(yàn)或內(nèi)部技術(shù)預(yù)研。

3. 釋放創(chuàng)造力:數(shù)據(jù)科學(xué)也可以“玩”出來(lái)

數(shù)據(jù)科學(xué)不僅是數(shù)學(xué)和代碼,更是一種創(chuàng)造性工作。DrawData 把數(shù)據(jù)生成變成了數(shù)字畫布,讓你像藝術(shù)家一樣“雕刻”數(shù)據(jù)分布:

  • 想做一個(gè)螺旋狀聚類?畫出來(lái)!
  • 需要月牙形分類邊界?隨手一描!
  • 甚至能模擬現(xiàn)實(shí)中的復(fù)雜模式,比如地理分布或用戶行為聚類。

這種體驗(yàn)打破了“數(shù)據(jù)必須來(lái)自現(xiàn)實(shí)”的刻板印象,讓我們回歸到問(wèn)題本質(zhì)——用最直接的方式表達(dá)數(shù)據(jù)關(guān)系。

技術(shù)揭秘:DrawData 如何實(shí)現(xiàn)“畫布變數(shù)據(jù)”?

DrawData 的核心技術(shù)并不復(fù)雜,但設(shè)計(jì)極其巧妙:

  1. 交互式捕獲:基于 Matplotlib 的交互式后端,實(shí)時(shí)記錄鼠標(biāo)軌跡和點(diǎn)擊坐標(biāo)。
  2. 動(dòng)態(tài)映射:將屏幕像素坐標(biāo)轉(zhuǎn)換為標(biāo)準(zhǔn)化數(shù)據(jù)范圍(如0-1區(qū)間),并支持自定義縮放。
  3. 多格式輸出:生成的數(shù)據(jù)可直接轉(zhuǎn)為 Pandas DataFrame,或?qū)С鰹?CSV/JSON,兼容主流工具鏈(如Scikit-learn、PyTorch)。

以下是一個(gè)例子:

from drawdata import draw_scatter 
import matplotlib.pyplot as plt 

# 初始化繪圖畫布
plt.figure(figsize=(6, 6))
draw_scatter() 

# 訪問(wèn)生成的數(shù)據(jù)
from drawdata.utils import get_data 

x, y = get_data()

利用這些 x 和 y 值,你可以:

  • 將數(shù)據(jù)保存到 CSV 文件以供日后使用。
  • 將其加載到 Pandas DataFrame 中進(jìn)行分析。
  • 將其用作 scikit-learn 模型的輸入。

DrawData實(shí)戰(zhàn)指南

四大核心應(yīng)用場(chǎng)景

課堂魔法師

  • 教授SVM決策邊界?隨手畫出非線性可分?jǐn)?shù)據(jù)集
  • 演示DBSCAN密度聚類?快速勾勒不同密度的點(diǎn)群
  • 實(shí)時(shí)調(diào)整數(shù)據(jù)分布,讓"假設(shè)性舉例"變成可視化現(xiàn)實(shí)

可視化實(shí)驗(yàn)室

  • 測(cè)試新開(kāi)發(fā)的D3.js圖表時(shí),即時(shí)生成匹配測(cè)試用例
  • 驗(yàn)證matplotlib自定義主題時(shí),快速創(chuàng)建對(duì)比數(shù)據(jù)集
  • 制作演示PPT時(shí),繪制與演講內(nèi)容完美契合的示意圖

算法外科醫(yī)生

  • 當(dāng)隨機(jī)森林出現(xiàn)異常分類時(shí),構(gòu)建"極端案例"數(shù)據(jù)集
  • 調(diào)試聚類算法時(shí),故意創(chuàng)造重疊率不同的點(diǎn)群
  • 測(cè)試模型魯棒性時(shí),繪制包含特定噪聲模式的數(shù)據(jù)

協(xié)作畫布

  • 團(tuán)隊(duì)腦暴時(shí)多人接力繪制數(shù)據(jù)模式
  • 機(jī)器學(xué)習(xí)研討會(huì)上實(shí)時(shí)收集參會(huì)者創(chuàng)作的數(shù)據(jù)集
  • 編程教學(xué)中讓學(xué)生親手"畫"出第一個(gè)數(shù)據(jù)集

現(xiàn)實(shí)約束與應(yīng)對(duì)策略

維度局限 → 解決方案:

  • 通過(guò)特征組合模擬高維關(guān)系(如繪制X/Y軸代表PCA成分)
  • 結(jié)合sklearn.datasets生成高維數(shù)據(jù)后,用DrawData創(chuàng)建可視化投影

環(huán)境依賴 → 平替方案:

  • 在Colab中運(yùn)行后導(dǎo)出CSV到本地環(huán)境
  • 使用pyautogui錄制繪圖動(dòng)作生成自動(dòng)化腳本

精度補(bǔ)償 → 增強(qiáng)技巧:

  • 導(dǎo)出后使用scipy.ndimage.gaussian_filter平滑分布
  • 通過(guò)sklearn.utils.resample進(jìn)行數(shù)據(jù)增強(qiáng)
  • numpy.random.normal添加可控噪聲

進(jìn)階技巧錦囊

  • 動(dòng)態(tài)教學(xué):結(jié)合IPython.display實(shí)時(shí)顯示算法在繪制數(shù)據(jù)上的演變
  • 混合創(chuàng)作:將DrawData生成的數(shù)據(jù)與真實(shí)數(shù)據(jù)按比例混合
  • 模式移植:分析繪制數(shù)據(jù)的統(tǒng)計(jì)特征,用GAN生成擴(kuò)展數(shù)據(jù)集

DrawData重新定義了數(shù)據(jù)科學(xué)的創(chuàng)作范式——它把"數(shù)據(jù)準(zhǔn)備"這個(gè)傳統(tǒng)上最枯燥的環(huán)節(jié),變成了最具創(chuàng)造力的過(guò)程。就像攝影師需要理解光線一樣,數(shù)據(jù)科學(xué)家通過(guò)親手"繪制"數(shù)據(jù),能獲得對(duì)數(shù)據(jù)-模型關(guān)系更本質(zhì)的認(rèn)知。


"工具最大的價(jià)值不在于它能做什么,而在于它讓你成為什么樣的思考者。DrawData最革命性的地方,是讓數(shù)據(jù)生成從被動(dòng)接受變成了主動(dòng)創(chuàng)造。" —— 數(shù)據(jù)科學(xué)教育家Sarah Chen

今天就用pip install drawdata開(kāi)啟你的數(shù)據(jù)創(chuàng)作之旅。試著完成這個(gè)挑戰(zhàn):繪制一個(gè)讓KNN準(zhǔn)確率低于50%的魔鬼數(shù)據(jù)集!

為什么你該試試 DrawData?

DrawData 的出現(xiàn),讓數(shù)據(jù)生成從一項(xiàng)繁瑣的編程任務(wù)變成了一個(gè)充滿創(chuàng)造力的過(guò)程。無(wú)論你是數(shù)據(jù)科學(xué)家、教育工作者,還是機(jī)器學(xué)習(xí)愛(ài)好者,這個(gè)庫(kù)都能讓你的工作更加高效。

如果你也曾為生成理想數(shù)據(jù)集而煩惱,不妨試試 DrawData——它可能就是你一直在尋找的“數(shù)據(jù)畫筆”。

  • 對(duì)教師:告別“假設(shè)數(shù)據(jù)”的尷尬,讓抽象算法可視化。
  • 對(duì)工程師:快速驗(yàn)證想法,不再被數(shù)據(jù)短缺卡住進(jìn)度。
  • 對(duì)愛(ài)好者:用最有趣的方式理解數(shù)據(jù)與模型的關(guān)系。

它像數(shù)據(jù)的“素描本”,讓機(jī)器學(xué)習(xí)從第一天起就變得直觀、互動(dòng)且充滿創(chuàng)造力。如果你還沒(méi)嘗試過(guò),現(xiàn)在正是時(shí)候——畢竟,誰(shuí)能拒絕“畫”出理想數(shù)據(jù)集的能力呢?

責(zé)任編輯:武曉燕 來(lái)源: 數(shù)據(jù)STUDIO
相關(guān)推薦

2021-12-13 22:52:37

iphone iOSHTML

2015-05-19 14:30:48

加密視頻加密億賽通

2024-07-05 11:47:43

2021-05-28 10:09:22

GC詳解Java JVM

2013-08-09 10:37:31

代碼數(shù)據(jù)

2021-03-17 11:47:37

tomcatJavaServerJava

2015-06-24 16:09:54

Easy Connec深信服

2020-04-02 07:31:53

RPC超時(shí)服務(wù)端

2021-11-02 11:31:47

Go代碼模式

2020-10-31 09:06:37

C語(yǔ)言編程語(yǔ)言

2021-07-05 18:05:40

SpringBean方法

2013-07-22 11:06:37

2020-01-06 09:14:59

Java程序員線程

2016-12-21 12:19:57

AR廣告奧迪

2013-12-27 09:46:40

Windows 9Windows 9桌面

2009-06-02 10:10:15

C#

2019-07-08 15:38:56

FedoraJupyter數(shù)據(jù)科學(xué)家

2022-11-26 21:34:08

Python可視化世界杯

2015-12-15 10:33:59

域名網(wǎng)絡(luò)域名

2009-06-30 14:37:08

數(shù)據(jù)庫(kù)JSP
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)