LoginSignup
3
5

More than 1 year has passed since last update.

Pythonのライブラリ/パッケージについて

Last updated at Posted at 2021-07-11

学習中に利用したPythonのライブラリ/パッケージについて記述します。

為になるリンク

Python 機械学習ライブラリを23個一挙紹介!データ処理から深層学習まで完全網羅

ライブラリ一覧

  1. NumPy
    数値計算を効率的に行うための基本的なパッケージ。ベースN次元配列パッケージ。
  2. Scipy
    高度な科学計算を行うための基本的なライブラリ。
  3. Scikit-learn
    機械学習ライブラリ。
  4. Pandas
    データ解析を支援する機能を提供するライブラリ。CSV操作に便利。
  5. matplotlib
    PythonおよびNumPyのためのグラフ描画ライブラリ。包括的な2Dプロット。
  6. seaborn
    matplotlibに基づくPythonデータ視覚化ライブラリ。見やすい。
  7. PyTorch
    GPUとCPUを使用した深層学習用に最適化されたテンソルライブラリ
  8. Tensorflow
    機械学習に用いるためのソフトウェアライブラリ。
  9. Keras
    機械学習プラットフォームTensorFlow上で実行されるディープラーニングAPI。
  10. DEAP
    進化的計算フレームワーク
  11. (未)IPython
    強化されたインタラクティブコンソール
  12. (未)SymPy
    記号数学
  13. Optuna
    ハイパーパラメータ自動最適化フレームワーク

NumPy

多次元配列オブジェクト(ndarray)、様々な派生オブジェクト(マスクされた配列や行列など)、
そして、数学的、論理的、形状操作、ソート、選択、I/O、離散フーリエ変換、基本的な線形代数、基本的な統計演算、ランダムシミュレーションなど、配列に対する高速な操作のためのルーチンの数々を提供するPythonライブラリ。

リンク
(公式):リファレンス
NumPy で行列計算

関数メモ
# 0または1で3*3のndarrayをランダムに作成
ndarr = np.random.randint(0, 2, (3, 3))

# numpy配列(ndarray)内の値を正否反転
np.logical_not(ndarr)

Scipy

数値積分、補間、最適化、線形代数、統計など、多くのユーザーフレンドリーで効率的な数値ルーチンを提供する。

リンク
(公式):リファレンス

関数メモ

Scikit-learn

機械学習ライブラリ。サイキットラーンと読む。
以下の様な様々な分類、回帰、クラスタリングアルゴリズムを備えており、Pythonの数値計算ライブラリのNumPyとSciPyとやり取りするよう設計されている。サンプルデータセットも多数用意されている。

  • サポートベクターマシン(SVM)
  • ランダムフォレスト
  • Gradient Boosting
  • k-近傍法
  • DBSCAN など...

リンク
(公式):リファレンス
scikit-learn「アルゴリズム・チートシート」
Scikit-learn 備忘録 → 情報が膨大な為、別記事作成。

Pandas

データ解析を支援する機能を提供するライブラリ。
特に、数値テーブルと時系列を操作するためのデータ構造と操作を提供する。
DataFrameなどの独自のデータ構造が提供されており、様々な処理が可能。
表形式のデータをSQLまたはRのように操作することができ、かつ高速で処理出来る。

リンク
(公式):リファレンス
Pandas でデータフレームを扱う

関数メモ
# データの詳細を確認する方法(pandas_profiling )
!pip install -U -q pandas_profiling
from pandas_profiling import ProfileReport
# レポートの作成 df:DataFrame
report = ProfileReport(df)
report

matplotlib

PythonおよびNumPyのためのグラフ描画ライブラリ。
オブジェクト指向のAPIを提供しており、様々な種類のグラフを描画する能力を持つ。
描画できるのは主に2次元のプロットだが、3次元プロットの機能も追加されてきている。

リンク
(公式):APIの概要
matplotlib でグラフ作成

関数メモ

# 画像-----------------------------------------------------------
# 画像の表示
import matplotlib.pyplot as plt
# 灰色で表示
plt.imshow(img, cmap = "gray")
plt.show()

# 並べて画像表示
n_data = 4 # 表示するデータ数
row= 2 # 行数
col= 2 # 列数
fig, ax = plt.subplots(nrows=row, ncols=col)
for i, img in enumerate(list_img):
    _r= i//col
    _c= i%col
    ax[_r,_c].axes.xaxis.set_visible(False) # X軸を非表示に
    ax[_r,_c].axes.yaxis.set_visible(False) # Y軸を非表示に
    ax[_r,_c].imshow(img, cmap='gray') # 画像を表示
# -----------------------------------------------------------

seaborn

データ可視化ライブラリ。
魅力的で有益な統計グラフィックを描画するための高レベルのインターフェイスを提供する。
洗練された図を描くことができ、matplotlibと比べて少ないコードで図が描ける。

リンク
(公式):リファレンス
Seaborn でグラフ作成

関数メモ

PyTorch

コンピュータビジョンや自然言語処理で利用されているTorchを元に作られた、Pythonのオープンソースの機械学習ライブラリ。
PyTorchは次の2つの高度な機能を備えている。

  • 強力なGPUサポートを備えた(NumPyのような)Tensor演算ができる
  • テープベースの自動微分システムの上に構築された深層ニューラルネットワークが利用できる

リンク
(公式):PYTORCH DOCUMENTATION

関数メモ
# Pytorch tensor と numpy ndarray の変換
# numpy → tensor
x = torch.from_numpy(x.astype(np.float32)).clone()
# tensor to numpy
x = x.to('cpu').detach().numpy().copy()
# 前方次元追加し、tensor(float32)に変換
torch.tensor(x.values.reshape(1, -1), dtype=torch.float32)

# 訓練データセットの属性を確認
vars(train_dataset)
# 分類クラスの確認
train_dataset.classes

# モデルにcuda指定
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
net = net.to(device)

PyTorchエコシステム
PyTorchに対する新機能の追加や学習・推論の高速化などを支援するツールやライブラリを認定するもの。画像処理や自然言語処理などのパッケージライブラリが存在する。

pytorch_lightning
ディープラーニングフレームワーク

関数メモ
# アーキテクチャの確認
net = Net().cuda() # GPU
summary(net, input_size=(1, 100, 100))

torchvision
一般的なデータセット、モデルアーキテクチャ、およびコンピュータビジョン用の一般的な画像変換で構成されている。

Tensorflow

Googleが開発しオープンソースで公開している、機械学習に用いるためのソフトウェアライブラリ。
ニューラルネットワークなどの機械学習のアプリケーションに適用できる多くのシンボリックな数学ライブラリが用意されている。
TensorFlow の高レベル API は、ニューラル ネットワークを定義しトレーニングするための Keras API 仕様をベースとしている。

リンク
(公式):All symbols in TensorFlow 2
pytorch Tensor操作チートシート

Keras

Pythonで記述されたディープラーニングAPIであり、機械学習プラットフォームTensorFlow上で実行される。
ディープニューラルネットワークを用いた迅速な実験を可能にするよう設計され、最小限、モジュール式、拡張可能であることに重点を置いて開発された。
現在はTensorFlowに取り込まれ、tf.kerasの形で使われるのが一般的。

リンク
(公式):リファレンス ※日本語サイトもあるがサイドバーが見づらい。。

DEAP

進化的計算フレームワーク。
アルゴリズムを明示的にし、データ構造を透過的にすることを目指している。

リンク
(公式):リファレンス

遺伝的アルゴリズム
データ(解の候補)を遺伝子で表現した「個体」を複数用意し、適応度の高い個体を優先的に選択して交叉・突然変異などの操作を繰り返しながら解を探索する。

Optuna

ディープラーニングの各種のパラメータを自動で調整するライブラリ。

リンク
(公式):API Reference

関数メモ
# SVCによるハイパーパラメータの探索
def objective(trial, x, t, cv):
  # 1.ハイパーパラメータごとに探索範囲を指定
  # C = trial.suggest_loguniform(name, low, high) # 連続パラメーターの値
  # C = trial.suggest_int(name, low, high[, step, log]) # integerパラメーターの値
  # gamma = trial.suggest_categorical(name, choices) # カテゴリパラメータの値
  C = trial.suggest_int('C', 2, 100) 
  gamma = trial.suggest_categorical('gamma', ['scale', 'auto'])

  # 2.学習に使用するアルゴリズムを指定
  estimator = SVC(C=C, gamma=gamma)

  # 3.学習の実行、検証結果の表示
  trial.params # 最適化するパラメータを返す。
  cross_val_score(estimator, x, t, cv=cv).mean() # 正解率
  return accuracy

cv = 5 # 交差検証の分割数
# study オブジェクトの作成
study = optuna.create_study(direction='maximize') # direction:最適化の方向
# 目的関数を最適化(10 回試行)
study.optimize(lambda trial: objective(trial, x_train, t_train, cv), n_trials=10)

# 最高の検証結果を返す。
study.best_trial

備考

NumPyとScipyの違い
NumpyはScipyと比べると機能がコンパクト。

matplotlibとseabornの違い
SeabornはMatplotlibの使い勝手を良くしたライブラリ。
Pythonの可視化パッケージの使い分け

ディープラーニング(深層学習)フレームワークの違い
TensorflowとKeras、PyTorchの比較

3
5
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
3
5