#author("2021-12-16T14:43:24+09:00;2020-07-08T13:45:44+09:00","default:inoue.ko","inoue.ko") #author("2023-09-07T14:10:25+09:00;2020-07-08T13:45:44+09:00","default:inoue.ko","inoue.ko") *scikit-learn https://scikit-learn.org/ ~ **概要 ***Scikit-learnとは #image(https://scikit-learn.org/stable/_static/ml_map.png,right,40%) scikit-learn (サイキット・ラーン)は Python用のオープンソース (BSD ライセンス) の機械学習ライブラリで、NumPy, SciPy や Matplotlib と互換性を持つように開発されています。データの前処理、分類、回帰、クラスタリングなど、機械学習のアルゴリズムを幅広く実装しています。 分類(クラス分類)向きのものと、回帰(予測)向きのもの、計7つの定番データサンプルも同梱されています。 #clear &scale(80){図版: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 ) &small(一般に、train は訓練データ、test は評価用のテストデータの意味です。); &small(関数モデルを y = f(X) と書いた場合の、X が説明変数で、y が目的変数です。); &small(一般に ベクトルである X は大文字、値である y は小文字で書くのが慣例です。); -3. アルゴリズムの指定と学習 clf = svm.SVC( gamma=0.001 ) clf.fit( X_train, y_train ) &small(clf は一般に classifier(分類器)の略です。); -4. モデルの評価 accuracy = clf.score( X_test, y_test ) print( "正解率 {accuracy} ") predicted = clf.predict( X_test ) print( metrics.classification_report( y_test, predicted ) ) &small(predict は「予測」の意味です); ~ ~ **代表的な機械学習の手法 ***教師あり学習 -''分類''|Classification --[[LogisticRegression]] --LinearSVM --[[DecisionTree]] --[[RandomForest]] --[[SupportVectorMachine]](SVM) --GradientTreeBoosting --NaiveBayes --[[NeuralNetwork]](Supervised) -''回帰''|Regression --[[LinearRegression]] --RidgeRegression --Lasso // &small(入力に無視して良い変数が混じっている) --SVR --BaggingRegressor --GradientBoostingREgressor ~ ***教師なし学習 -''クラスタリング''|Clustering --[[k-means]] --MeanShift //--VBGMM --GaussianMixtureModels(GMM) --SpectralClustering -''異常値検知''|Novelty and Outlier Detection --Isolation Forest --Local OutlierFactor --One-Class SVM -''次元削減(圧縮)''|Dimension Reduction --[[PrincipalComponentAnalysis]](PCA) --[[PrincipalComponentAnalysis>Statistics/PCA]](PCA) --SpectralEmbedding // その他 //-SGD (Stochastic Gradient Descent) //-最近傍・k近傍法 (Nearest Neighbors) //-ガウス過程(Gaussian Processes) //-十字型分解(Cross decomposition) //-アンサンブル学習(Ensemble methods) //-マルチクラス・マルチラベルアルゴリズム(Multiclass and multilabel algorithms) //-特徴量選択(Feature selection) //-半教師あり学習(Semi-Supervised) //-アイソトニック回帰(Isotonic regression) //-キャリブレーション(Probability calibration) //--Neural network models (Unsupervised) ) //--Biclustering //--共分散推定(Covariance estimation) //--密度推定(Density Estimation) //--Isomap //-t-SNE ~ ~ **データセット -一般データセットAPI (General dataset API) -トイデータセット (Toy datasets) -リアルワールドデータセット (Real world datasets) -生成データセット (Generated datasets) -その他 (Loading other datasets) ~ ~