【scikit-learn】機械学習チュートリアル-2【Python】

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

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

https://www.yosoaidol.com/p/scikit-learnpython.html
よりも少しだけ高度な内容になっています。

「機械学習チュートリアル-1」はこちら

サンプルデータのロード

scikit-learnには手軽にAIモデルの作成の練習ができるように、分類用の「アヤメの品種」や「手書き文字」、回帰用の「糖尿病患者のデータ」などが用意されています。

今回はそのデータの呼び出し方やデータについて解説します。
公式ページではインタプリタを使用していますが、本ページではjupyter notebookでコードを動かしています。
次のコードで「アヤメの品種」と「手書き文字」のデータセットをロードします。

from  sklearn  import  datasets
#アヤメのデータセットを呼び出し
iris = datasets.load_iris()
#手書き文字のデータセットを呼び出し
digits = datasets.load_digits()

データセットは、全てのデータとデータに関するメタデータを保持するオブジェクトです。このデータの特徴は「.data」に格納されます。詳細は今後のブログでも解説予定ですが、公式はこちら

例えば、次のコードでは「手書き文字」のデータセットの特長量が表示されます。
※手書き文字データは「8×8」の画像データを1次元配列で表現しています。
digits.data
‘’’
array([[ 0., 0., 5., …, 0., 0., 0.],
[ 0., 0., 0., …, 10., 0., 0.],
[ 0., 0., 0., …, 16., 9., 0.],

そしてこちらで教師データを確認することができます。
どの画像がどの数字を表しているかを配列で格納されています。

digits.target
#array([0, 1, 2, ..., 8, 9, 8])

データ配列の形状は常に正しく表現されている訳ではありません。例えば先ほどの手書き文字のデータであれば、本来2次元で表されるべき画像データが、1次元の配列で表現されていました。
正しく表示させたい場合は、以下のコードで出力できます。

digits.images[0]
'''
array([[ 0., 0., 5., 13., 9., 1., 0., 0.],
[ 0., 0., 13., 15., 10., 15., 5., 0.],
[ 0., 3., 15., 2., 0., 11., 8., 0.],
[ 0., 4., 12., 0., 0., 8., 8., 0.],
[ 0., 5., 8., 0., 0., 9., 8., 0.],
[ 0., 4., 11., 0., 1., 12., 7., 0.],
[ 0., 2., 14., 5., 10., 12., 0., 0.],
[ 0., 0., 6., 13., 10., 0., 0., 0.]])
'''

詳細はこちらで解説していますが、今後本ブログでも記事にする予定です。

外部データの読み込みenter link description hereも可能です。こちらも今後記事にする予定です。