【scikit-learn】入門-1解説【Python】

本ページでは以下のページを要約するとともに、個人的な解説も記載しています。独特な解釈をしている部分があるので、誤りなどの指摘はtwitterまでお願いします。

参考ページ
はじめに — scikit-learn 1.1.2 ドキュメント
https://scikit-learn.org/stable/getting_started.html
閲覧日:2022年10月5日

はじめに

このガイドはscikit-learnで提供される主な機能を紹介しています。
機械学習の前提知識をある程度持っていることを前提としています。※のように記載がありますが、なるべく誰でもわかるようにコメントを挟みます。
scikit-learnのインストール方法については、こちらに掲載されています。本ページでも、今後掲載する予定です。

Scikit-learnは教師あり学習と教師なし学習をサポートするオープンソースの機械学習ライブラリです。また、前処理、モデルの選択、モデルの評価、その他の多くのツールを提供します。

Fitting と predicting: estimator の基本

※プログラム中にこちらの単語がよく使われるので、あえて英単語を残しました。fitting、predicting,estimatorについて簡単に解説します。
「fitting,fit」 :学習データと教師データを組み合わせ、任意のアルゴリズムにて学習させることを指します。教師なし学習の場合は教師データは必要ありません。
「predicting,predict」:学習させたAIモデルに、未知のデータを読み込ませ結果を予測させることを指します。
「estimator」:学習するときのアルゴリズムのこと。AIモデルには決定木や回帰モデルなど様々なアルゴリズムがあるが、どれを使うかで精度なども変わってきます。
推定や推論、推定器などの日本語訳はありますが、漢字が似ているせいで使い分けが難しいです。英語の方が区別がつきやすいですし、直接コードの中で使われますので覚えるならこちらで覚えたほうをおすすめします。

実際にRandomForestClassifierというアルゴリズムを使用して、未知の値を予測するAIを作ってみます。

from  sklearn.ensemble  import  RandomForestClassifier 
clf = RandomForestClassifier(random_state=0) 
X = [[ 1, 2, 3], # 3つの特徴量を持つ2つのデータ(学習データ) 	
    [11, 12, 13]] 
y = [0, 1] # それぞれの分類 (教師データ)
clf.fit(X, y) #学習データと教師データを使用してモデルに学習させる。

fitメソッドは通常2つの引数を使用します。
学習データ:特徴量が列で表現され、2つめ3つめのデータは行として表現されています。今回のXの行列だと[1,2,3]と[11,12,13]という特徴量を持ったデータを学習データとして使用していることになります。
教師データ:教師データは回帰の場合は実数で、分類の場合は分類用の数値で表されます。今回使用したRandomForestClassifierは分類を行うためのアルゴリズムなので、教師データであるyは[0]か[1]のグループに分類しています。通常は学習データの行に対応する教師データが1次元配列で格納されます。

学習データX,教師データyはnumpy形式の配列や配列であることが多いですが、一部のestimatorでは要素がほとんどゼロの行列である「疎行列」が使われることがあります。(※疎行列が具体的に何を指すのかは、今後の記事で明らかになる予定です。)

学習が終わると未知の値の分類を予測することができます。再度学習、「fit」させる必要はありません。
以下のコードで予測をすることができます。

clf.predict(X) # predict classes of the training data
#array([0, 1]) と表示
clf.predict([[4, 5, 6], [14, 15, 16],[2,3,5]]) # predict classes of new data
#array([0, 1, 0]) と表示)

基本的にはこのような流れでどのestimatorも未知の値を予測するAIモデルを作成し予測を行うことができます。今回は配列を直接指定しましたが、CSV形式などでインポートすることにより大量のデータを使って学習したり、予測したりすることが可能になります。