LoginSignup
47
62

機械学習用pythonライブラリ139選

Last updated at Posted at 2018-12-11

機械学習の各分野におけるスタンダードライブラリ、痒い所に手が届くライブラリを紹介します。大全を名乗るには程遠いですが。

基本的に使用経験のあるライブラリを記載していますが、一部使ったことのない物も載せてあります。尚、画像系ライブラリはほとんど載せていません。

主要ライブラリ」

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でsklearn compatibleなモデルをチューニングする際はOptunaSearchCVを用いるのが望ましい。
 OptunaSearchCV
 LightGBM専用のtuner
 LightGBMTuner

sklearn-genetic-opt
 遺伝的アルゴリズムでハイパーパラメータを最適化
 GASearchCV

ray
 TuneSearchCV

tpot
 機械学習手法やハイパーパラメータを自動最適化(遺伝的アルゴリズム)
  その機械学習プロセス、自動化できませんか?
 *ただし、取りうる目的変数は1つのみ。
 いわゆるMultioutputregressorには対応しないので、目的変数が複数存在する場合は前処理で分割する必要があり。

auto-sklearn
  Pythonでデータ分析:Auto-sklearnについてのメモ

pycaret
   最速でPyCaretを使ってみた

Autokeras

hyperas
 hyperoptベースでkerasを自動チューニング
  その機械学習プロセス、自動化できませんか?

前処理

ノイズ処理

tabular_dae

欠損値補完

miceforest

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
  SequentialFeatureFloatingSelectionExhaustiveFeatureSelectorに対応

scikit-feature
  40の説明変数選択手法を実装。
  ライブラリ名に反してscikit-learnのAPIには対応していない

Regularized-Random-Forest
  RRFのRライブラリのpythonラッパー。ライブラリの完成度は高くはない。
  RRFや派生モデルのGRRF、GRFは予測モデルとしても用いられるが、変数選択手法として用いることが多い。

 参考:Rパッケージ : RRF

学習手法

線形系

asgl
  AdaptiveLasso, GroupLasso, SparseGroupLassoなど
  sciki-learn-APIには非対応なので、そのままでは使いづらい
  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からインストール

GBART

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
  予測値の分散を求めるランダムフォレスト

cubist

RuleFit
  決定木を基に特徴量を作成し、線形モデルで回帰を行う
  データから相互作用を自動で抽出するモデリング手法: RuleFit を試す

ベイズ系

gmr
  【ベイズ推定】GMR(Gaussian Mixture Regression)入門

その他学習手法

TabNet
 テーブルデータの機械学習
 ・ pytorch-tabnet
   TabNetを使えるようになりたい
   TabNetを使う(回帰編)

DCEKit
  DCEKit (Data Chemical Engineering toolKit) を PyPI にリリース!

heamy

PystackNet
  Kaggleでよく使われるStacking/Blendingをheamy、Stacknetをpystacknetで高速に実装する

autofeat

gplearn
  遺伝的プログラミングによる回帰モデル
  遺伝的アルゴリズムを使って特徴量エンジニアリングしてみた

GrowNet
 "Gradient Boosting Neural Networks: GrowNet"

CBM
  売上や需要などのカウントデータを予測するための説明可能な教師あり機械学習アルゴリズム

interpret
  機械学習の解釈技術のパッケージ

時系列

Prophet
  時系列解析ライブラリProphet 公式ドキュメント翻訳1

tsfresh
  tsfreshを使って多次元時系列データを特徴量エンジニアリングしてみた

sklearn-sfa
  Slow Feature Analysis: A Theoretical Analysis of Optimal Free Responses

hcrystalball

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で動体分離

trimap
PaCMAP

✓手法比較
   【次元低減】UMAP, PCA, t-SNE, PCA + UMAP の比較

scikit-learn補完

scikit-lego
 本家scikit-learnに実装されていない様々なアルゴリズムを提供

scikit-plot
scikit-learnで得られた結果を手軽に可視化

scikit-learn-extra
scikit-learnに採用されていないアルゴリズム

mlxtend
scikit-learnに採用されていないアルゴリズム
Sequential Forward/Backward Floating Selectionなど

・[atom-ml](https://pypi.org/project/atom-ml/
scikit-learnの高速化アルゴリズム

XAI(説明可能AI)

shap
 説明変数の影響度可視化
  Shapを用いた機械学習モデルの解釈説明

sage-importance
 pypiのはplot関係のバグがあるのでgithubからのインストールを推奨

 説明変数の影響度可視化(SHAPとは異なり予測精度に与える特徴量のグローバルな影響を算出)
  論文 論文 解説ブログ

gamma-facet
  論文

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を推定する方法
 ダブルクロスバリデーションより少ない計算量で求められる

その他

h5py
 訓練済みモデルの保存・読込に必要

可視化

matplotlib

seaborn
  pythonで美しいグラフ描画 -seabornを使えばデータ分析と可視化が捗る その1

dtreeplt
 graphviz不要の決定木可視化
  [Python]Graphviz不要の決定木可視化ライブラリdtreepltをつくった

dtreeviz
 sklearnの決定木可視化 sklearn標準よりもスタイリッシュ
  Pythonの決定木をdtreevizでスマートに可視化する

pydotplus
graphviz

逆問題 - 探索

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

無機化学

pymatgen
 材料科学全般
  pymatgen

soaplite
 SOAP記述子の生成
  SINGROUP/SOAPLite

dscribe
 soapliteの高級ライブラリ
  SINGROUP/dscribe

ase
 cifファイルの読み込み等
  ASE

有機化学

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を使ってみた

機械学習プロジェクト管理(実験管理、パイプライン管理)

  【MLOps入門】MLOps概要

MLFlow
  「いつか使いたい!」と思っていた人のためのMLflowまとめ

Metaflow
  Netflix開発のMLワークフローツール,Metaflowを試してみた【概要編】

因果推論

lingam
  LiNGAM入門。気軽に因果関係を推定する (統計的因果探索)

EconML
  因果推論で推定した効果を可視化してみたい

dowhy
  DoWhyによる統計的因果推論

音響解析

openSMILE
 github
 openSMILEをPythonで使ってみた

ketos
 ketosを使って音響解析。音響解析、機械学習用ライブラリ

関連手法

nmslib
  近似最近傍探索ライブラリ比較

PyNNDescent
 様々な近似最近傍探索

homcloud
  パーシステントホモロジーでタンパク質の穴を見てみる

ツール化(実行ファイル、GUI)

pyinstaller
 実行ファイル(.exe)化:サイズ巨大、実行速度は遅い。作成は簡単
 scikit-learnやXGBoostをexe化するにはそれなりの工夫が必要。
 並列処理(joblib, multiprocessing)の利用にも注意が必要。

Nuitka
  PyInstaller より圧倒的に優れている Nuitka の使い方とハマったポイント

py2exe
 実行ファイル(.exe)化:サイズやや大きい、実行速度は早い。作成は少し手間

・tkinter
 標準ライブラリ。凝ったことはできないが、入出力、ファイル選択、画像表示程度であれば十分対応可能
PySimpleGUI
 シンプルな記法で見た目もよいGUIが作れる。
 LGPL License
  PythonのGUIライブラリ「PySimpleGUI」を触ってみた

DearPyGui
 色々できるらしいが、見た目は普通。
 MIT License
  DearPyGuiをはじめる10行

PyQt6
 GPL License
Kivy
 MIT(>=1.7.2) else LGPL
wxPython
 wxWidgets license
pip-licenses
 ツール化、配布する際には使用ライブラリのライセンス確認を。

その他 細かいところ

xlrd
xlwt
xlutils
 エクセル関連

Cookiecutter
  これでもう悩まない!機械学習のためのフォルダ構成テンプレートを使おう。

cloudpickle
 機械学習モデルの保存
 標準のpickleライブラリの拡張
  Pythonのシリアライズモジュール pickle marshal dill cloudpickle を比較する

Swifter
 Pandasのapplyメソッド高速化
 たった一文でPandasのapplyメソッドを高速化する

chardet
 文字コードの判別。 エンコーディングの指定に悩むあなたに。
 ファイルの文字コードの自動判別

他の紹介サイト

 ✓The most comprehensive Repository of Python Libraries for Data Science

 ✓machine-learning-collection

 ✓best-of-ml-python

ディープラーニング関連

古豪
・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)

47
62
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
47
62