機械学習の各分野におけるスタンダードライブラリ、痒い所に手が届くライブラリを紹介します。大全を名乗るには程遠いですが。
基本的に使用経験のあるライブラリを記載していますが、一部使ったことのない物も載せてあります。尚、画像系ライブラリはほとんど載せていません。
主要ライブラリ」
・scikit-learn
・派生ライブラリ群のscikit-learn-contrib
・Tensorflow
・Keras
・Pytorch
・XGBoost 解説
・LightGBM
LightGBM ハンズオン - もう一つのGradient Boostingライブラリ
・NGBoost
NGBoostを試してみた
・statsmodels
AutoML
・AutoGluon
3 行のコードが実現する機械学習の自動化。「AutoGluon」が見据える未来とは?
AutoGluon試してみた
・optuna
sklearn, chainer, keras, どこでも使えるハイパーパラメータ調整ライブラリ
Kerasでハイパーパラメータを自動調整したいならOptuna
optuna-integration
ver3.6から分離
Optunaでsklearn compatibleなモデルをチューニングする際はOptunaSearchCVを用いるのが望ましい。
OptunaSearchCV
LightGBM専用のtuner
LightGBMTuner
・sklearn-genetic-opt
遺伝的アルゴリズムでハイパーパラメータを最適化
GASearchCV
・tpot
機械学習手法やハイパーパラメータを自動最適化(遺伝的アルゴリズム)
その機械学習プロセス、自動化できませんか?
*ただし、取りうる目的変数は1つのみ。
いわゆるMultioutputregressorには対応しないので、目的変数が複数存在する場合は前処理で分割する必要があり。
・auto-sklearn
Pythonでデータ分析:Auto-sklearnについてのメモ
・hyperas
hyperoptベースでkerasを自動チューニング
その機械学習プロセス、自動化できませんか?
前処理
ノイズ処理
欠損値補完
・missingpy
Pythonでの欠測データ補完手法に関するクイックガイド(2020)
ライセンスはLGPL
・miracle-imputation
論文(2021)
特徴量エンジニアリング
・feature-engine
種々の特徴量エンジニアリング
Feature-engineを使って特徴量エンジニアリングをする方法
時系列のLagFeaturesなど
・category-encoders
カテゴリ変数のone-hot化
Category Encodersでカテゴリ特徴量をストレスなく変換する
・featuretools
特徴量エンジニアリング
featuretoolsで特徴量を自動生成して機械学習モデルの構築を楽に早くする手法
特徴量選択
・Boruta
https://qiita.com/studio_haneya/items/bdb25b19baaf43d867d7
・BorutaShap
Numerai: Boruta-Shapで特徴量選択
・sklearn-genetic
遺伝的アルゴリズムで説明変数選択(お勧め)
・sklearn-genetic-opt
遺伝的アルゴリズムで説明変数選択
・sklearn-rebate
Relief-based feature selection: Introduction and review
ReliefFでFeature選択 備忘録
・zoofs
zoofs - Github
Grey Wolf Algorithmなどに対応
scikit-learnのAPIには非対応
・boostaroota
Boruta類似の分類用の説明変数選択手法
・mlxtend
SequentialFeatureFloatingSelectionやExhaustiveFeatureSelectorに対応
・scikit-feature
40の説明変数選択手法を実装。
ライブラリ名に反してscikit-learnのAPIには対応していない
・Regularized-Random-Forest
RRFのRライブラリのpythonラッパー。ライブラリの完成度は高くはない。
RRFや派生モデルのGRRF、GRFは予測モデルとしても用いられるが、変数選択手法として用いることが多い。
参考:Rパッケージ : RRF
学習手法
線形系
・asgl
AdaptiveLasso, GroupLasso, SparseGroupLassoなど
sciki-learn-APIに対応(2024/8/1)
Asgl: A Python Package for Penalized Linear and Quantile Regression
Sparse Group Lasso in Python
決定木系
・Linear-Tree
決定木+線形回帰・分類、ランダムフォレスト+線形回帰・分類
Linear-Tree
Linear Tree: the perfect mix of Linear Model and Decision Tree
・bartpy
BART
pypiのライブラリはバグがあるので、githubからインストール
・aeon
様々な回帰、分類手法を実装。特に時系列、ディープラーニングにも強い
時系列以外ではRotationForest等
・RGF-python
RGF(Regurarized Greedy Forest)
論文
Regularized Greedy Forest(RGF)で多クラス分類を試してみました
・imodels
Hierarchical shrinkageやFIGS、Boosted rule
・relf
SPORF(Sparse Projection Oblique Randomer Forests)
・quantile-forest
予測値の分散を求めるランダムフォレスト
・RuleFit
決定木を基に特徴量を作成し、線形モデルで回帰を行う
データから相互作用を自動で抽出するモデリング手法: RuleFit を試す
✓linear-tree, RuleFit, RGFの予測精度は良好でお勧め
ベイズ系
・gmr
【ベイズ推定】GMR(Gaussian Mixture Regression)入門
その他学習手法
・ TabNet
テーブルデータの機械学習
・ pytorch-tabnet
TabNetを使えるようになりたい
TabNetを使う(回帰編)
・DCEKit
DCEKit (Data Chemical Engineering toolKit) を PyPI にリリース!
・PystackNet
Kaggleでよく使われるStacking/Blendingをheamy、Stacknetをpystacknetで高速に実装する
・gplearn
遺伝的プログラミングによる回帰モデル
遺伝的アルゴリズムを使って特徴量エンジニアリングしてみた
・GrowNet
"Gradient Boosting Neural Networks: GrowNet"
・CBM
売上や需要などのカウントデータを予測するための説明可能な教師あり機械学習アルゴリズム
・interpret
機械学習の解釈技術のパッケージ
✓interpretはお勧め
・pykan
Kolmogorov-Arnold Networks (KANs)
MLP(多層ニューラルネットワーク)に変わるニューラルネットワーク手法
シンボリック回帰としても扱える
・PiML
各種機械学習モデルや、評価、解釈技術などのツールボックス
時系列
・Prophet
時系列解析ライブラリProphet 公式ドキュメント翻訳1
・tsfresh
tsfreshを使って多次元時系列データを特徴量エンジニアリングしてみた
・sklearn-sfa
Slow Feature Analysis: A Theoretical Analysis of Optimal Free Responses
・artlearn
適用共鳴理論
クラスタリング
・UMAP
最新の次元圧縮法"UMAP"について
✓ParametricUMAP
可視化アルゴリズム UMAP の パラメトリック版が登場
✓DensMAP
高次元データの分布の密度を反映した埋め込み手法DensMAP
✓tSNE(sklearn)
(t-SNE, DBSCAN, Decision Tree)で、(可視化 > クラスタリング > 特徴説明)を行う
・qSNE
【論文解説:python実装】t-SNEの改良版!q-SNE
・DBSCAN
【scikit-learnでDBSCAN(クラスタリング)
・RobustPCA
Robust PCAで動体分離
✓手法比較
【次元低減】UMAP, PCA, t-SNE, PCA + UMAP の比較
scikit-learn補完
・mlxtend
scikit-learnに採用されていないアルゴリズム
Sequential Forward/Backward Floating Selectionなど
・scikit-lego
本家scikit-learnに実装されていない様々なアルゴリズムを提供
・scikit-plot
scikit-learnで得られた結果を手軽に可視化
・scikit-learn-extra
scikit-learnに採用されていないアルゴリズム
・[atom-ml](https://pypi.org/project/atom-ml/
scikit-learnの高速化アルゴリズム
XAI(説明可能AI)
・shap
説明変数の影響度可視化
Shapを用いた機械学習モデルの解釈説明
・sage-importance
pypiのはplot関係のバグがあるのでgithubからのインストールを推奨
説明変数の影響度可視化(SHAPとは異なり予測精度に与える特徴量のグローバルな影響を算出)
論文 論文 解説ブログ
・skope-rules
解釈可能なルールを学習するskope-rulesのアルゴリズム
pypiのバージョンは古くscikit-learn v1以降ではエラーが出るため、Githubからインストール
参照:Not compatible with sklearn v1
分類問題のみ対応、回帰問題には未対応
・RuleFit
決定木を基に特徴量を作成し、線形モデルで回帰を行う
・sklearn-gbmi
Gradient BoostingのFriedmanとPopescuのH統計量を計算
評価
・tibfold
Tibshirani-Tibshirani methodを用いて、k-fold double-cross-validationのerrorを推定する方法
ダブルクロスバリデーションを使わずに一重のCVで予測精度を正しく見積もれる
その他
・h5py
訓練済みモデルの保存・読込に必要
可視化
・seaborn
pythonで美しいグラフ描画 -seabornを使えばデータ分析と可視化が捗る その1
・dtreeplt
graphviz不要の決定木可視化
[Python]Graphviz不要の決定木可視化ライブラリdtreepltをつくった
・dtreeviz
sklearnの決定木可視化 sklearn標準よりもスタイリッシュ
Pythonの決定木をdtreevizでスマートに可視化する
逆問題 - 探索
・deap
遺伝的アルゴリズム
順問題の予測式を機械学習で作り、逆問題を解く場合に有効
DEAP
・pyevolve
遺伝的アルゴリズム
・Gpy
・Gpyopt
Pythonでベイズ最適化を行うパッケージ GPyOpt
・PHYSBO
COMBO後継。 GPL
・hyperopt
SMBO
・itertools(標準ライブラリ)
・more-itertools
document
itertools、more-itertoolsの紹介
itertoolsの拡張ライブラリ。
使用例:sample(itertools.combinations, 2) : iteratorからのサンプル
科学計算
材料
✓MaterialApps
物性科学シミュレーションのポータルサイト
✓deepmaterials
主に有機系の網羅的オープンソフトのリンク集
データベース、モデル、化学向けの画像処理や自然言語処理など
・mat2vec
Unsupervised word embeddings capture latentknowledge from materials science literature
無機化学
・soaplite
SOAP記述子の生成
SINGROUP/SOAPLite
・dscribe
soapliteの高級ライブラリ
SINGROUP/dscribe
有機化学
・Rdkit
有機化学を扱う基本のライブラリ
SMILES形式やFingerprintへの変換
✓sascorer
合成難易度の計算
RDKitで合成難易度を評価して化合物をスクリーニング
・PubChemPy
アメリカ国立衛生研究所(NIH)が運用するPubChemのpythonライブラリ
分子名から化合物情報(IUPAC名,分子式,分子量,xlogP,tPSA,SMILES)など入手可能
ユーザー登録不要
PubChemPy
・ChemSpiPy
王立化学会が運用するChemSpiderのpythonライブラリ
分子名から化合物情報など入手可能
ユーザー登録必要
ChemSpiPy
・deepchem
グラフ畳み込みによる有機化合物の解析
deepchem
・chainer-chemistry (開発中止)
グラフ畳み込みによる有機化合物の解析
化学、生物学分野のための深層学習ライブラリChainer Chemistry
github
・mordred
記述子計算ライブラリ
分子記述子計算ソフトウェア mordred の開発
github
・ChemPlot
記述子計算ライブラリ
ChemPlotを使ったケミカルスペースの可視化
github
生化学
・peptides
ペプチドの特徴量化
・stLearn
RNAの空間転写解析
科学計算
・PhiFlow
Tensoflowで微分可能なPhiFlowを使ってみた
機械学習プロジェクト管理(実験管理、パイプライン管理)
・MLFlow
「いつか使いたい!」と思っていた人のためのMLflowまとめ
・Metaflow
Netflix開発のMLワークフローツール,Metaflowを試してみた【概要編】
因果推論
・lingam
LiNGAM入門。気軽に因果関係を推定する (統計的因果探索)
音響解析
・openSMILE
github
openSMILEをPythonで使ってみた
・ketos
ketosを使って音響解析。音響解析、機械学習用ライブラリ
関連手法
・PyNNDescent
様々な近似最近傍探索
・homcloud
パーシステントホモロジーでタンパク質の穴を見てみる
ツール化(実行ファイル、GUI)
・pyinstaller
実行ファイル(.exe)化:サイズ巨大、実行速度は遅い。作成は簡単
scikit-learnやXGBoostをexe化するにはそれなりの工夫が必要。
並列処理(joblib, multiprocessing)の利用にも注意が必要。
・Nuitka
PyInstaller より圧倒的に優れている Nuitka の使い方とハマったポイント
・py2exe
実行ファイル(.exe)化:サイズやや大きい、実行速度は早い。作成は少し手間
・tkinter
標準ライブラリ。凝ったことはできないが、入出力、ファイル選択、画像表示程度であれば十分対応可能
・PySimpleGUI
シンプルな記法で見た目もよいGUIが作れる。
バージョン4までLGPL License
バージョン5から有料
PythonのGUIライブラリ「PySimpleGUI」を触ってみた
・FreeSimpleGUI
PSGの代替ライブラリ。LGPL License
・DearPyGui
色々できるらしいが、見た目は普通。
MIT License
DearPyGuiをはじめる10行
・PyQt6
GPL License
・Kivy
MIT(>=1.7.2) else LGPL
・wxPython
wxWidgets license
・pip-licenses
ツール化、配布する際には使用ライブラリのライセンス確認を。
その他 細かいところ
・Cookiecutter
これでもう悩まない!機械学習のためのフォルダ構成テンプレートを使おう。
・cloudpickle
機械学習モデルの保存
標準のpickleライブラリの拡張
Pythonのシリアライズモジュール pickle marshal dill cloudpickle を比較する
・Swifter
Pandasのapplyメソッド高速化
たった一文でPandasのapplyメソッドを高速化する
・chardet
文字コードの判別。 エンコーディングの指定に悩むあなたに。
ファイルの文字コードの自動判別
ライブラリ紹介サイト
✓The most comprehensive Repository of Python Libraries for Data Science
ディープラーニング関連
古豪
・Theano(モントリオール大学):開発終了
・Caffe(カリフォルニア大学バークレー校) Caffe2に移行
・Chainer(PFN) 開発終了
その他
・Caffe2(Facebook, Nvidia):PyTorchにマージ
・Sonnet(Tensorflow派生):開発中止
・cntk(Microsoft):開発中止
・PaddlePaddle(Baidu):開発中止(?)
・NNabla(Sony)
・Edward
その他
完成度は高くないが、機械学習手法を実装したpythonプログラム等
AdaptiveLasso(https://github.com/sammrai/mymodules/blob/master/reg/AdaptiveLasso.py)
AdaptiveLasso(https://github.com/AaronNHorvitz/AdaptiveLASSO/blob/master/adaptive_LASSO.py)