scikit-learn
概要
Scikit-learnとは
scikit-learn (サイキット・ラーン)は Python用のオープンソース (BSD ライセンス) の機械学習ライブラリで、NumPy, SciPy や Matplotlib と互換性を持つように開発されています。データの前処理、分類、回帰、クラスタリングなど、機械学習のアルゴリズムを幅広く実装しています。
分類(クラス分類)向きのものと、回帰(予測)向きのもの、計7つの定番データサンプルも同梱されています。
図版:https://scikit-learn.org/stable/tutorial/machine_learning_map/
Scikit-learn のインストール
Python 言語のライブラリとしてのインストールになるので、一般の Python3 の環境であれば、Terminalから以下のコマンドでインストールできます。
$ pip3 install scikit_learn $ pip3 list ← 念のため一覧表示
Scikit-learnを使った分類プログラムの流れ
データ読み込み > 訓練データとテストデータに分割 > 学習(fit)> 予測(predict)> 評価(score)という流れで、評価結果に応じて学習方法をチューニング・・というのが開発の定番スタイルです。
- 1. ライブラリとデータセットの読み込み
from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn import svm from sklearn import metrics digits = datasets.load_digits()
- 2. 訓練データとテストデータの用意
X = digits.data y = digits.target X_train, X_test, y_train, y_test = train_test_split( X, y, test_size = 0.2 )
一般に、train は訓練データ、test は評価用のテストデータの意味です。
関数モデルを y = f(X) と書いた場合の、X が説明変数で、y が目的変数です。
一般に ベクトルである X は大文字、値である y は小文字で書くのが慣例です。
- 3. アルゴリズムの指定と学習
clf = svm.SVC( gamma=0.001 ) clf.fit( X_train, y_train )
clf は一般に classifier(分類器)の略です。
- 4. モデルの評価
accuracy = clf.score( X_test, y_test ) print( "正解率 {accuracy} ") predicted = clf.predict( X_test ) print( metrics.classification_report( y_test, predicted ) )
predict は「予測」の意味です
代表的な機械学習の手法
教師あり学習
- 分類|Classification
- LogisticRegression
- LinearSVM
- DecisionTree
- RandomForest
- SupportVectorMachine(SVM)
- GradientTreeBoosting
- NaiveBayes
- NeuralNetwork(Supervised)
- 回帰|Regression
- LinearRegression
- RidgeRegression
- Lasso
- SVR
- BaggingRegressor
- GradientBoostingREgressor
教師なし学習
- クラスタリング|Clustering
- k-means
- MeanShift
- GaussianMixtureModels(GMM)
- SpectralClustering
- 異常値検知|Novelty and Outlier Detection
- Isolation Forest
- Local OutlierFactor
- One-Class SVM
- 次元削減(圧縮)|Dimension Reduction
- PrincipalComponentAnalysis(PCA)
- SpectralEmbedding
データセット
- 一般データセットAPI (General dataset API)
- トイデータセット (Toy datasets)
- リアルワールドデータセット (Real world datasets)
- 生成データセット (Generated datasets)
- その他 (Loading other datasets)