Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Python

fetch_openmlの使い方について

投稿日:2022年11月2日 更新日:

 

<目次>

fetch_openmlの使い方について
 STEP1:データをダウンロードする
 STEP2:データの形状を確認する
 STEP3:データを加工する
 STEP4:データを表示する

fetch_openmlの使い方について

機械学習のデータをダウンロードする際に使用するfetch_openmlの概要と基本的な使い方についてご紹介します。

<fetch_openmlの概要>
・fetch_openmlはOpenMLからデータをダウンロードするメソッドです。
・sklearn.datasetsモジュールをインポートして使います。
・OpenMLは機械学習の実験用のデータベースで、オンライン上から誰でも無料でアクセスできます。

STEP1:データをダウンロードする

・今回はOpenMLのmnist_784というデータセットをダウンロードします。
(図111)
・ダウンロードはfetch_openmlメソッドで行います。(data, target)を返却しますが、dataは画像データ(28×28)のピクセル情報、targetは正解値のデータです(例:数字の4の画像なら4)。今回はdataをmnist_X、targetをmnist_yとして受け取っています。
# データを「https://www.openml.org/d/554」からロードする
mnist_X, mnist_y = fetch_openml("mnist_784", version=1, data_home=".", return_X_y=True, as_frame=False)
(補足)
パラメータ「data_home」でデータのダウンロード先を指定しています。
「=”.”」でPythonモジュールと同じ階層にダウンロード。例えば、配下の「tmp」フォルダ内に入れたい場合は「=”.\tmp”」と記載します(\はエスケープするため二つ連結)

STEP2:データの形状を確認する

mnist_784の場合、ダウンロードしたデータは70000行(データ数)あり、この各行が画像データになっています。各行は784列(ピクセル数)あり、28×28ピクセルの画像データです。
(図120)
(図121)

目次にもどる

STEP3:データを加工する

fetch_openml関数で取得した値は255で割って正規化します(0~1の値にする)。正規化の目的として、値を小さくする事によりニューラルネットワーク上で扱いやすくする目的があります。
# 255で割って画像を正規化。
mnist_X = mnist_X / 255.0
ピクセルは2^8=255通りなので、255で割ると0~1の範囲に収まります。

STEP4:データを表示する

・matplotlibライブラリを使ってデータを表示します。
・imshowメソッドで画像として表示する事ができます。
・第1引数にピクセルデータを与えます。
・配列の784ピクセル分のデータをreshapeメソッドで、縦28×横28ピクセルに分解して与えます。
・cmap=’gray’でグレースケールデータに変更
# データを表示する
plt.imshow(X_train[0].reshape((28, 28)), cmap='gray')
plt.show()
(図131)

目次にもどる

サンプルプログラム

上記STEP1~4を全て繋げたプログラムを掲載します。

(サンプルプログラム)

import matplotlib.pyplot as plt
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split

print("======== 処理START ========")

# データを「https://www.openml.org/d/554」からロードする
mnist_X, mnist_y = fetch_openml("mnist_784", version=1, data_home=".\\openml_data", return_X_y=True, as_frame=False)

print("===BEFORE===")
print(mnist_X[0])

# 255で割って画像を正規化。
mnist_X = mnist_X / 255.0

print("===AFTER===")
print(mnist_X[0])

# テストデータを「学習用」と「テスト用」に分ける
X_train, X_test, y_train, y_test = train_test_split(mnist_X, mnist_y, random_state=0, train_size=0.8)

# データの形状を確認する
print(X_train.shape)
print(y_train.shape)
print(X_test.shape)
print(y_test.shape)

# データを表示する
plt.imshow(X_train[0].reshape((28, 28)), cmap='gray')
plt.show()

print("======== 処理END ========")

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-Python
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Pythonでargparseを用いて引数を受け取って実行する方法

<目次> (1) Pythonでargparseを用いて引数を受け取って実行する方法  (1-1) argparseとは?  (1-2) 基本的な使い方  (1-3) サンプルプログラム (2) 参考 …

PythonでAzure Blob Storageからcsvを取得する方法について

  <目次> (1) PythonでAzure Blob Storageからcsvを取得する方法について  (1-1) STEP1:Pythonの依存性解決  (1-2) STEP2:Azu …

Anacondaのインストール手順(Windows 10の例)

  <目次> (1) Anacondaのインストール手順(Windows 10の例)  (1-1) STEP1:インストーラーの入手と起動  (1-2) STEP2:インストール  (1-3 …

SlackボットのInteractiveメッセージとは?使い方の手順もご紹介

  <目次> SlackボットのInteractiveメッセージとは?使い方の手順もご紹介  やりたいこと/概要  STEP0:前提条件  STEP1:SlackボットでInteractiv …

Azure Machine Learningで「OSError: Could not find kaggle.json」が出た時の原因と対処方法について

  <目次> (1) Azure Machine Learningで「OSError: Could not find kaggle.json」が出た時の原因と対処方法について  (1-1) …

  • English (United States)
  • 日本語
Top