注意: 雖然 JavaScript 對於本網站不是必需的,但您與內容的互動將受到限制。請開啟 JavaScript 以獲得完整的體驗。

在 Einblick 的視覺化畫布中,使用基於 Python 的運算元重構資料科學

目前,資料科學家與其團隊成員和相關利益相關者之間存在隔閡。首先,資料科學家需要收集原始資料,或者透過 ETL 或 ELT 管道與資料工程師協作。然後開始清理資料和針對當前任務或專案進行探索性資料分析的過程。這個步驟可能非常耗時,因為它本質上是迭代的。只有這樣,資料科學家才能開始構建和調整機器學習模型。

Einblick canvas

Einblick:以思維的速度進行協作式資料科學

Einblick,我們的目標之一是為資料科學家消除障礙,這樣您就可以花更少的時間在繁瑣的設定和重複性任務上,而將更多時間用於提取有意義的見解。為了實現我們的目標,Einblick 在協作式資料科學畫布中重新構想了現代資料科學工作流程,而不是線性的 Jupyter Notebook。在畫布環境中工作具有許多優點,包括即時協作、廣闊的視覺化介面和漸進式計算引擎。在本文中,我們將重點介紹我們如何為資料科學家節省時間的關鍵方法之一——我們的運算子。我們將介紹幾個核心運算子,為什麼 Python 是我們軟體解決方案中如此重要的一部分,以及我們如何透過使用者運算子介面增強我們的產品。後者允許使用者自定義和使用自己的運算子,這些運算子可以在任何 Einblick 畫布中使用,並與其他 Einblick 使用者共享。

資料科學畫布中的運算子

目前資料科學家的主要低效之處在於,某些任務或程式碼片段會一直執行,例如資料探索或特徵工程。儘管這些任務可能枯燥且重複,但它們對資料科學工作流程至關重要。

我們平臺的核心部分是我們的運算子。Einblick 運算子都捕獲了一組定義好的分析步驟,並且無需在畫布環境中線性排列。這樣,使用者就可以按照其思維過程自然流動的方式進行工作。我們的一些核心運算子包括:

  • Python 單元格傳統上是資料科學家可用的唯一運算子。在瀏覽器訪問的 Python 執行時中編寫程式碼並 1:1 重現您的 Jupyter notebook。
  • 圖表運算子建立不同的視覺化,包括散點圖、直方圖、條形圖、折線圖和熱力圖。
  • 表示式運算子支援 Python 3 語法,接受一個數據幀並根據邏輯表示式新增一個新列。我們目前支援許多操作,包括算術、比較和位運算子,以及數學函式。
  • AutoML 運算子在比手動調整模型所需時間少得多的時間內構建更準確的預測模型。您只需從資料幀中選擇目標列和特徵列,以及訓練和測試資料集。

鑑於 Python 擁有眾多用於資料科學、統計學和機器學習的庫和框架,例如 statsmodelssklearn,Python 是現代資料科學家們的輕鬆選擇。因此,Einblick 在我們程式碼庫的各個部分都使用了 Python。此外,我們的 Python 單元格運算子對我們的使用者體驗至關重要,它將 Python notebook 的工作體驗與資料科學畫布的工作體驗連線起來。我們重視 Python 為我們的使用者帶來的靈活性,這不僅可以增強 Einblick 的功能,還可以使資料科學過程更加高效和易於訪問。

建立可共享的使用者自定義運算子

Einblick canvas with user-defined linear regression operators

在我們努力使資料科學過程更流暢、更快速的過程中,我們建立了使用者運算子。透過編輯器或連結到 Git 倉庫,我們的使用者可以建立自己的 Einblick 運算子,從而輕鬆高效地重用自己的程式碼和流程。鑑於協作和溝通對資料科學過程的重要性,Einblick 使用者建立的運算子可以輕鬆共享,這樣,那些知道自己想做什麼(例如將文字列轉換為日期時間列)的人就可以做到,而無需知道實現它的 Python 語法。

例如,我們的線性迴歸和 k-means 聚類運算子都是透過我們的使用者運算子編輯器建立的。使用者運算子編輯器可以透過我們的運算子選單訪問,該選單可以在使用者設定選單中開啟和關閉。

為了慶祝資料科學的根源,並向資料科學社群的共享經驗致敬,我們建立了一個運算子來視覺化一個簡單的線性迴歸模型。這個使用者運算子是我們內建的線性迴歸運算子的擴充套件,它對所有人開放,將允許我們建立格式精美的線性迴歸圖。為了說明該運算子,我們正在使用 seaborn中的 iris 資料集。

確定運算子輸入

Einblick user operator interface

在使用者運算子編輯器的“運算子規範”選項卡中,您可以指定以下內容:

  • 基本屬性: 包括運算子在畫布中的尺寸和運算子的描述,該描述將在左側面板懸停時以及在畫布中使用運算子時顯示。
  • 資料幀輸入: 允許您命名輸入運算子的資料幀,這些資料幀在運算子編輯器中作為列表 dfs 可訪問。您可以在“指令碼”選項卡中索引和訪問資料幀輸入。
  • 屬性選擇輸入: 指定您可以從資料幀輸入中選擇和不能選擇的內容,例如允許的列型別或每個欄位允許的選擇數量。您可以使用“指令碼”選項卡中的 attributes 變數來訪問這些內容。
  • 自定義值: 允許您輸入自定義值,例如圖表的文字標題、直方圖中的 bin 數量或您希望每次使用運算子時定製的任何其他動態欄位。
  • 內部輸入: 允許您在運算子內部輸入,而不是在左側面板上。這主要是使用畫布中運算子的體驗上的美學差異。

請務必在頁面底部儲存您的工作!

運算子包要求

在“要求”選項卡中,您可以列出運算子執行所需的包。您可以將此選項卡視為 GitHub 儲存庫中 requirements.txt 檔案的替代品。

運算子指令碼

“指令碼”選項卡是您可以精確自定義運算子功能的地方。您可以將其視為一個 Python 指令碼。就像任何 Python 指令碼一樣,您可以首先匯入“要求”選項卡中列出的相關包。然後,您可以像往常一樣編寫程式碼。您還可以在編輯器中工作時,對任何上傳的資料檔案測試您的指令碼。內建的錯誤訊息將幫助您根據需要除錯程式碼。

對於迴歸視覺化運算子,我們使用 Python 的 matplotlibseaborn 來建立和標記散點圖,以及一條基於兩個輸入(一個數據幀和我們內建的線性迴歸運算子的結果)說明最佳擬合線的線。

Code for regression visualization operator

由於這是一個使用者定義的運算子,我們可以根據自己的特定需求定製運算子。在這種情況下,我們知道線性迴歸運算子的結果會返回一個表,其中包含每個預測器或 X 變數的列(在本例中為 petal_width),以及一個表示迴歸線 y 截距的 const 列。對於更高階的運算子,您始終可以在“運算子規範”選項卡中新增更多輸入或自定義輸入。

Einblick operator focus on input, output

一旦您對程式碼滿意,可以使用頂部的“選項”漢堡選單來發布您的運算子。一旦您點擊發布,您就可以在任何 Einblick 畫布中使用您的運算子。您還可以與任何利益相關者或協作者共享您的運算子,以便他們也能使用它。在 Einblick 的使用者運算子文件中閱讀更多關於我們使用者運算子的關鍵字和概念。

為什麼選擇 Python:推動資料科學社群發展

簡單的線性迴歸示例很好地介紹了 Einblick 中使用者運算子的實現,但我們的一些使用者已經建立了更高階的運算子,例如 NBA 投籃圖視覺化工具,靈感來自於這篇部落格文章

Einblick NBA shot chart operator

我們深知創新、靈活性和效率對於資料科學和 Python 社群的重要性。我們的團隊很高興看到其他使用者將如何利用我們的運算子為資料科學挑戰建立創新解決方案,我們期待著在我們公司發展壯大的過程中,繼續培養我們的社群。

我們將與使用者一起,繼續利用 Python 的強大功能,簡化和增強現代資料科學。免費試用 Einblick 和我們的使用者運算子,並告訴我們您的想法。我們期待您的反饋!