LoginSignup
113
114

More than 3 years have passed since last update.

scikit-learnのモジュール全部説明する

Last updated at Posted at 2020-04-09
  • scikit-learn(機械学習のpythonライブラリ)のモジュールを全部説明しました
  • モチベ:スクラッチで実装した後で「あ〜組み込みであったのかよ〜」となり、悲しみが発生したため
  • 公式 API Referenceを参考に書いています
  • 公式用語集と合わせてご覧ください
  • 個人的によく使うものは太字にしています
  • 記事内容にプルリクがある場合はコメントいただけると嬉しいです
名前 説明
base 文字通り他のクラスや関数のベースになるもの。
これらを継承すればクラス等を自作できる。()
calibration 分類器の確率のCalibrationに使う。
つまり、分類器が各ラベルに割当てた確率と実際の確率を近づける。(解説)
cluster クラスタリングとバイクラスタリング。
compose transformer(fit_transformメソッド等を持つ変換器)をpandas DataFrameに適用できる。
covariance 母集団の共分散行列を推定する。
cross_decomposition 正準相関分析(CCA)等。
datasets ①iris等のトイデータセットをロードする。
②オンライン上の有名データセットをDLしてロードする。
 (ローカルにキャッシュがあればそれを使う。)
③自分で好きなデータを作る。
decomposition PCA、ICA等の次元削減・行列分解。
discriminant_analysis 判別分析。ハイパラ調整が必須ではない分類器。
①LDA(線形判別分析) : 次元削減にも使える。
②QDA(二次判別分析) : 非線形分類が出来る。
dummy ダミー推定器。(ランダムな二値分類器等)
各Metricのベースライン値を得られる。
ensemble ランダムフォレスト等のアンサンブル学習。
(個人的にこの章は読み物としても面白くて好きです。)
exceptions 警告とエラーが定義されている。自分で使うことは無いかも。
experimental 試験的に導入されているもの。
今はここにしかないクラスやメソッドはない。
feature_extraction 生データ(画像、テキスト)からの特徴抽出。
feature_selection 高次元データの特徴選択。値を閾値でカット、大きい順にN個、等
gaussian_process GP(ガウシアンプロセス)ベースの回帰、分類。
推定値や推定クラスを確率分布で表現出来るが、計算量が高い。(解説)
impute 欠損値の補完。
inspection 特徴量がモデルに与える影響の検査。モデルの解釈に使える。
①Partial dependence : 特徴量と出力の関係を見る。(解説)
②Permutation importance : 特徴量の重要性を見る。(解説)
isotonic 単調回帰(Isotonic regression)。
出力が単調増加になる制約を与えた線形回帰。
kernel_approximation フーリエ変換を用いたカーネル近似。
kernel_ridge カーネルリッジ回帰。
linear_model 線形モデル。ロジスティック回帰等。
manifold 多様体学習。t-SNEやisomap等の非線形次元削減。
metrics cos類似度、AUC、f1値等様々な指標(Metric)
mixture 混合ガウス分布のフィッティング。
model_selection モデル選択・ハイパラ探索。
①train_test_split系
②GridSearchCV系
③cross_validate系
multiclass 推定器をマルチラベル化するのに使う。
multioutput マルチクラス回帰・分類。だが、scikit-learnの全ての推定器はマルチクラス出力機能があるので要らない子。
naive_bayes スパムフィルタ等に使われるナイーブベイズ分類器。軽い。
確率分布としてガウス/多項/カテゴリ/ベルヌイ分布等を仮定可能。
neighbors kNN法。ユークリッド距離だと高次元で弱い。(cos類似度等を用いる)
①教師なしkNN : k近傍はどのデータか?をバイナリ正方行列で返す。
②分類 : 距離に応じて重み付けも可能。
- k-NN(近い順にk個のデータの投票)
- Radius-N(半径内データの投票) : サンプリングが不均一な時、有効。
③回帰 :データラベルを連続変数と考え、分類の手法を応用する。
neural_network ニューラルネット。PyTorch等の専用ライブラリ使ったほうが良い。
(sklearnはGPUサポートが無く、今後対応する予定もない。)
pipeline transformer(fit_transformメソッド等を持つ変換器)を繋ぎ、
最後にestimator(分類器や回帰器)に渡すパイプライン。
コードが読みやすくなる。
memoryオプションでキャッシュ利用し、メモリ使用量削減可。
preprocessing 前処理。(解説1解説2)
①連続変数 : バイナリ化、量子化、正規化、標準化等
②離散変数 : バイナリ化等(他クラスだけでなく他ラベルでも可)
③その他 : Polynomial featureの生成等
random_projection Random projection。乱数を使った次元削減。PCA等より軽い。
相対誤差は発生するが、高次元空間でのユークリッド距離を保ったまま低次元に射影できる。(この論文のIntroductionがわかりやすい)
その性質を利用して、本来高次元で効かないkNNを高次元データに使える。
射影先の次元が低すぎるとJohnson-Lindenstrauss lemmaが成立しない。
成立する下限はBurr et al., 2018で示された。
semi_supervised 半教師あり学習。
少量のラベル付きデータと大量のラベルなしデータを用いて分類。
svm サポートベクトルマシン。回帰・分類どちらでも使える。
特徴量がN次元の時、各サンプルとのマージン(距離)が最大となるN-1次元の超平面を求める。
カーネルトリックで超平面を非線形に拡張出来る。
正則化は必須だが、サンプルサイズ<<特徴量数 の時に強い。
分類時の確率はキャリブレーションされていないので注意。
tree 決定木。回帰でも分類でも可のノンパラ手法。
データからif文の閾値を学習させる。
utils 効率的なアルゴリズム等、Developer向けの便利機能。
他のモジュール内で使われている。自分で使うことは無いかも。
113
114
1

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
113
114