命令列工具
csinva/imodels avatar
csinva/imodels

imodels:一個與 sklearn 相容的可解釋預測建模套件

此專案圍繞「csinva/imodels」建置,面向真實業務場景,提供可重複使用、可持續維運的開源實作。

1,619 個 Star141 個 ForkJupyter NotebookMIT

秒懂

它是什麼?
該套件在一致的 sklearn 風格 API 下統整了規則集、規則列表、規則樹與代數可解釋模型,並包含 FIGS 與階層式收縮等原創方法。
適合誰用?
imodels 將不同研究傳統的可解釋模型整合到一個 API 中,加入 FIGS 與階層式收縮等原創方法,並提供檢查規則、處理類別特徵與繪製樹狀圖的工具。MIT 授權允許自由使用與修改,但不提供保證或維護承諾。
可以商用嗎?
可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 1 天前。
用什麼語言寫的?
主要是 Jupyter Notebook(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。

開源專案深度解析

該套件的作用

imodels 是一個用於擬合可解釋預測模型的 Python 套件,目標使用者是希望以規則集、規則列表、樹或代數模型取代黑盒模型的開發者。儲存庫描述將其定位為用於簡潔、透明且準確的預測建模,所有模型皆與 scikit-learn 相容。核心範例展示一個在小規模臨床資料集上訓練的決策樹分類器,其輸出可直接列印,顯示每個葉節點的預測值。該套件並非將解釋方法當作附加功能,而是讓可解釋模型本身成為主要預測器。

模型家族與實作

README 中的模型列表分為規則集、規則列表、樹與代數模型。規則集包括 RuleFit、SkopeRules、FPSkope、SLIPPER 與 Bayesian Rule Set;規則列表包括 Bayesian Rule List、Greedy Rule List、Fast-and-frugal tree 與 OneR;樹包括 CART、C4.5、TAO 與 FIGS;代數模型包括 SLIM 與 Tree GAM。並非所有模型都是新實作:README 明確表示,程式碼大量借鏡先前專案,包括 sklearn-expertsys、rulefit、skope-rules 與 BOA,並將其核心部分抽取、統整並維護於 imodels 之下。

API 慣例與任務支援

模型遵循標準 sklearn 估算器 API:fit 回傳估算器,predict 回傳標籤,predict_proba 回傳列和為 1 的機率矩陣,DataFrame 輸入會設定 feature_names_in_,模型可被 clone,並可在 pipeline 與網格搜尋中使用。README 提供任務支援矩陣:部分模型僅支援二元分類,而 FIGSClassifier、GreedyTreeClassifier、HSTreeClassifier、TaoTreeClassifier、BoostedRulesClassifier、SLIMClassifier、C45TreeClassifier 與 DecisionTreeCCPClassifier 則處理多類。規則集與規則列表模型在給定多類目標時會報錯。

FIGS 與階層式收縮

README 的「Our favorite models」部分介紹了兩類原創方法。FIGS(快速可解釋貪婪樹和)透過同時生長一組彈性的樹來概括 CART,總分裂數可由預先定義的閾值限制;README 宣稱,在真實資料集上的實驗顯示,當限制在少量分裂(例如少於 20 個)時,FIGS 能達到最先進的預測效能。階層式收縮是一種後處理正則化方法,適用於任何決策樹或集成(如隨機森林);它不修改樹結構,而是將每個節點的預測向其祖先的樣本均值收縮,使用單一正則化參數。README 報告說,實驗顯示它提高了單一決策樹與集成模型的預測效能。

規則檢查與樹狀圖繪製

每個基於規則的模型透過 get_rules() 暴露其規則,回傳一個 pandas DataFrame,每一列對應一條規則。始終存在的欄位有 rule(規則條件字串)與 prediction(該規則預測的值);模型會加入額外欄位,例如 RuleFit 的 coef、support 與 importance,多樹模型的 tree,以及提升集成的 weight。對於像 FIGS 這樣的加性模型,prediction 是該樹的貢獻,匹配規則的貢獻總和即為模型輸出。樹狀圖可透過 dtreeviz 繪製;shadow_tree 函式可從任何 imodels 樹模型建構 ShadowDecTree。dtreeviz 不是依賴項,僅在呼叫時才匯入。

類別特徵與預處理

大多數模型預期數值輸入,因此類別欄位需要先進行編碼,例如使用 sklearn.preprocessing.OneHotEncoder。一個例外是 FIGS,它直接接受類別特徵:將欄位名稱傳入 categorical_features 參數,它會內部進行獨熱編碼,並在 predict 時記住這些特徵。README 還提到,對於需要二值化的數值欄位,可以使用離散化器。對於 SLIMClassifier 與 SLIMRegressor,由於其係數是整數,特徵尺度差異大時會在四捨五入時坍縮為零,因此建議在擬合前對 X 進行標準化。

安裝與授權

安裝指令為 pip install imodels,README 附有疑難排解文件連結。該儲存庫根據 MIT 授權條款散佈,授權文字允許使用、複製、修改、合併、出版、再授權與販售軟體副本,前提是包含版權與授權聲明。該軟體依「現況」提供,不附帶任何明示或暗示的保證。授權文字對安全性、支援或維護沒有任何說明;這些面向在儲存庫元資料中也未涉及。

imodels 的使用邊界與核驗路徑

可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。

編輯結論

imodels 將不同研究傳統的可解釋模型整合到一個 API 中,加入 FIGS 與階層式收縮等原創方法,並提供檢查規則、處理類別特徵與繪製樹狀圖的工具。MIT 授權允許自由使用與修改,但不提供保證或維護承諾。該儲存庫的文件未說明版本化發行、使用者數量或生產環境部署。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。 可先在 sklearn 的 train/test split 上建立一個 imodels 基準,分別執行 README 指定的模型匯入、fit、predict 與 feature importance 查看流程,再把同一資料送入 sklearn 模型比較。特別要記錄模型是否需要額外套件、輸出的規則是否可讀,以及不同資料前處理對解釋結果的影響。

官方來源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社群筆記

社群筆記