境搭建、代碼風格到多版本測試的完整開發(fā)流程)
特征工程機器學習數據分析【免費下載鏈接】tsfreshAutomatic extraction of relevant features from time series:項目地址https://gitcode.com/gh_mirrors/ts/tsfresh點擊查看免費下載tsfresh 是一個用于從時間序列中自動提取相關特征的開源 Python 庫項目核心實現位于 tsfresh/feature_extraction 與 tsfresh/feature_selection 等模塊。本文以官方貢獻文檔 docs/text/how_to_contribute.rst 為骨架結合倉庫內真實的配置文件與測試代碼系統(tǒng)梳理貢獻者的完整工作流開發(fā)環(huán)境的安裝、單元測試與多版本兼容測試、文檔構建、代碼風格規(guī)范以及 PR 提交要求。讀完本文你將掌握從克隆倉庫到提交可合并 PR 的全套實操步驟。貢獻方式任何形式的幫助都歡迎tsfresh 的社區(qū)愿景是讓該項目成為 Python 生態(tài)中最大的特征提取方法庫因此所有形式的貢獻都受歡迎bug 報告、bug 修復、文檔改進、功能增強與 idea 建議。無論你想新增一兩個有趣的特征計算器feature calculators如 feature_calculators.py 中已內置的數百個計算函數還是實現一種新的特征選擇流程或者只是修正 1-2 個拼寫錯誤都會得到認可。最直接的貢獻方式是向項目提交 Pull RequestPR。如果你不熟悉 Git 的工作流也可以通過郵件聯系項目維護者參見 docs/authors.rst。三條編碼范式與兩條版權底線編碼范式簡單、文檔化、可測試貢獻者需要遵循三條核心編碼范式Keep it simple保持簡單項目信奉程序首先是給人讀的其次才是給機器執(zhí)行的。代碼應追求簡潔可讀而非炫技。Keep it documented保持文檔化每個方法和類至少要有 docstring。docstring 的重點不是描述做了什么而是解釋為什么這樣做——讓后來者理解設計意圖。Keep it tested保持可測試項目追求高測試覆蓋率。新增代碼應同步補充對應測試倉庫中 tests/units 與 tests/integrations 即按模塊組織的大量測試用例即是佐證。版權底線保護整個項目的許可證項目特別強調兩條與版權相關的硬性約束不要引入許可證不可用或禁止商業(yè)使用的數據集——這類數據可能侵蝕整個項目的許可證本項目采用 MIT 許可證見 LICENSE.txt。不要使用許可證不可用或禁止商業(yè)使用的代碼片段例如來自 StackOverflow 的某些回答——同理這會危及整個項目的法律合規(guī)性。技術決策清理 Notebook 輸出另一條技術性約定是提交 iPython Notebook 前務必清除輸出。這能顯著提升 Git diff 的可讀性避免無關的 base64 輸出噪音污染變更記錄倉庫中的示例筆記本位于 notebooks 目錄。開發(fā)環(huán)境搭建三步安裝可編輯安裝與 pre-commit 鉤子在倉庫根目錄執(zhí)行以下三條命令即可完成開發(fā)環(huán)境安裝cd /path/to/tsfresh pip install -e .[testing] pre-commit installpip install -e .[testing]以可編輯editable模式安裝 tsfresh并帶上測試所需的全部依賴。testing這一 extras 的完整依賴清單定義在 setup.cfg 的[options.extras_require]段包括pytest4.4.0、pytest-cov2.6.1、pytest-xdist1.26.1、pytest-benchmark3.0.0、mock2.0.0、matplotlib、seaborn、notebook以及pre-commit等同時它通過%(dask)s引用了dask[dataframe]2.9.0與distributed2.11.0等 dask 相關依賴??删庉嫲惭b意味著對代碼的改動會直接反映到測試運行中無需重復安裝。pre-commit install會在本地 Git 倉庫中注冊 pre-commit 鉤子此后每次 commit 都會自動觸發(fā)格式檢查詳見下文代碼風格一節(jié)。補充說明從 pyproject.toml 可以看到本項目基于 PyScaffold 3.x 構建setuptools70的版本上界正是為了規(guī)避 PyScaffold 3 與較新 setuptools 的兼容性問題因此setup.py本身極簡僅調用setup(use_pyscaffoldTrue)并將所有配置委托給 setup.cfg。測試框架從單機 pytest 到多版本矩陣運行單元測試套件完成改動后在倉庫根目錄執(zhí)行pytest即可運行完整的單元測試套件。倉庫的 pytest 配置同樣集中在 setup.cfg 的[tool:pytest]段testpaths tests指定測試目錄為 testsaddopts默認開啟--cov tsfresh --cov-report term-missing覆蓋率統(tǒng)計與--verbosefilterwarnings可統(tǒng)一配置警告過濾規(guī)則。測試按功能模塊組織特征提取相關測試在 tests/units/feature_extraction如test_feature_calculations.py、test_extraction.py、test_settings.py特征選擇相關測試在 tests/units/feature_selection另有 tests/integrations 承載端到端的集成測試如test_full_pipeline.py、test_relevant_feature_extraction.py。跨 Python 版本測試tox項目要求代碼在多個 Python 版本下保持兼容使用 tox 批量執(zhí)行tox -r -p auto-r表示強制重建虛擬環(huán)境-p auto表示并行運行多個環(huán)境的測試。測試的 Python 版本由 setup.cfg 的[tox:tox]段中的envlist決定當前為py39, py310, py311, py312對應 Python 3.9–3.12。skip_missing_interpreters True意味著本地缺少某個 Python 版本時不會報錯而是跳過該環(huán)境。每個[testenv]會依次執(zhí)行打印 Python 版本python -V、安裝測試依賴python -m pip install .[testing]、運行測試python -m pytest tests/。具體的 Python 微版本如 3.11.7 還是 3.11.8取決于本地安裝的解釋器envlist只鎖定大版本。管理多版本 Pythonpyenv官方推薦的本地多版本 Python 管理工具是pyenv它可以有序地安裝并在不同 Python 版本間切換配合tox的envlist即可在本地復現項目聲明的全部受支持版本。倉庫的 Dockerfile.testing 正是基于這一思路構建的它以 Ubuntu 22.04 為基礎鏡像通過pyenv編譯安裝 Makefile 中指定的 Python 版本默認PYTHON_VERSIONS : 3.9 3.10 3.11 3.12再在容器內運行tox -r -p auto。其中對 Python 3.7.x 使用clang編譯的細節(jié)是該鏡像處理 pyenv 編譯問題的既有方案。Docker 化測試環(huán)境除了本地運行還可以在 Docker 容器中執(zhí)行測試make test-all-testenv這條命令依次觸發(fā) Makefile 中的三個目標build-docker-testenv基于Dockerfile.testing構建名為tsfresh-test-image的鏡像并通過--build-arg PYTHON_VERSIONS注入要編譯的 Python 版本run-docker-tests以只讀方式掛載當前倉庫-v .:/tsfresh并將 build、.tox、egg-info 等構建產物用命名卷隔離build_artifacts、tox_artifacts、egg_artifacts保證宿主目錄不被污染clean清理.tox、build/、dist/與*.egg-info。首次運行會因編譯多個 Python 版本而耗時較長但后續(xù)調用會顯著加快鏡像層與 tox 緩存均被復用。這種方式保證了無論本地環(huán)境如何都能在干凈、一致的測試環(huán)境中驗證代碼。順帶一提Makefile 還提供了一個調試利器make bisect GOOD_COMMITcommit_hash。它利用git bisect自動二分定位壞提交——假設當前檢出的提交已知有問題執(zhí)行該命令后 git 會在pytest作為判定命令的情況下自動二分出首個引入問題的提交。構建文檔tsfresh 的文檔由 Sphinx 生成源碼位于 docs 目錄如 docs/text/feature_calculation.rst、docs/api 等。在完成上文的基礎安裝后執(zhí)行pip install -e .[docs] cd docs make htmldocsextras 在 setup.cfg 中定義為Sphinx6.1.3、sphinx_rtd_theme1.2.0、b2luigi、docutils0.18.1。make html實際調用 docs/Makefile 中的sphinx-build默認將源碼目錄設為docs、構建目錄設為docs/_build。構建完成后成品文檔位于docs/_build/html目錄可直接用瀏覽器打開index.html預覽。文檔改動應與代碼改動一樣遵循清晰、可讀的原則。代碼風格black isort pre-commit項目統(tǒng)一使用black與isort進行代碼格式化。安裝 pre-commit 后這兩個工具會在每次 commit 時自動觸發(fā)無需手動運行。倉庫根目錄的 .pre-commit-config.yaml 展示了完整的鉤子配置blackrev 22.12.0代碼格式化器exclude: ^docs/.*$表明文檔目錄不參與格式化isortrev 5.12.0import 排序器并顯式指定--profile black使 isort 的排序風格與 black 兼容pre-commit-hooksrev v4.4.0一組通用檢查包括trailing-whitespace去除行尾空白、end-of-file-fixer保證文件以換行結尾、check-yaml校驗 YAML 語法、check-added-large-files阻止誤提交大文件。這套鉤子機制將風格檢查前置到提交階段確保進入倉庫的每一行代碼都符合統(tǒng)一風格也從機制上減輕了 PR 評審的負擔。PR 描述規(guī)范提交 Pull Request 時需要做到清晰且描述性的標題讓維護者一眼看出改動意圖詳細的變更說明包括改了什么、解決了什么問題為評審者提供提示說明評審時應重點關注哪些地方以及相關的背景信息。好的 PR 描述能顯著降低評審成本這也是開源協作中文檔化思維的延伸——正如編碼范式所強調的不僅代碼要解釋為什么變更本身也要向協作方解釋為什么。小結為 tsfresh 做貢獻的完整閉環(huán)可以概括為可編輯安裝pip install -e .[testing]→ pre-commit 風格鉤子 →pytest本地單測 →tox -r -p auto多版本矩陣可選make test-all-testenv的 Docker 化方案→ Sphinx 文檔構建 → 提交規(guī)范化的 PR。這三條編碼范式、兩條版權底線與一條技術約定加上倉庫中 setup.cfg、.pre-commit-config.yaml、Makefile、Dockerfile.testing 等配置文件的落地構成了一個可復制、可驗證、可審計的貢獻流程。無論你的貢獻是一個特征計算器、一個選擇算法還是一個錯別字修復這套流程都能保證改動質量與項目的長期可持續(xù)性。贊分享特征工程機器學習數據分析【免費下載鏈接】tsfreshAutomatic extraction of relevant features from time series:項目地址https://gitcode.com/gh_mirrors/ts/tsfresh點擊查看免費下載相關推薦BorgBackup 貢獻指南從開發(fā)環(huán)境搭建、代碼風格到測試與合入的完整實踐BorgBackup 貢獻指南從開發(fā)環(huán)境搭建、代碼風格到測試與合入的完整實踐 本篇指南圍繞開源備份工具 BorgBackupborg倉庫的 CONTRIB運維存儲TileLang 貢獻者開發(fā)指南從環(huán)境搭建、代碼規(guī)范到本地測試的完整流程TileLang 貢獻者開發(fā)指南從環(huán)境搭建、代碼規(guī)范到本地測試的完整流程 TileLang 是一個基于 TVM 之上、用 Pythonic 語法編寫高性能 G編譯器編程語言高性能計算人工智能深度學習Nexent開發(fā)者指南從環(huán)境搭建到代碼貢獻的完整流程Nexent開發(fā)者指南從環(huán)境搭建到代碼貢獻的完整流程 Nexent是一個開源智能體SDK和平臺能夠將單個提示轉換為完整的多模態(tài)服務無需復雜的圖表和連線操作AI AgentAI 應用后端前端大模型RAG上一篇Buzz 完全指南如何用本地 Whisper 實現離線音頻轉錄下一篇告別重復求職JobFunnel一站式職位聚合神器全攻略創(chuàng)作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考