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

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

関連記事

Python3.5&Anaconda4.2のインストール手順(CentOS6)とHelloWorldの方法

(0)目次&概説 (1) インストール資源の入手  (1-1) ディストリビューション  (1-2) GitHubのpyenvのリポジトリのコピーを取得する (2) インストールの実施  (2-1) …

SlackのAPIでユーザー一覧を取得する方法をご紹介

  <目次> (1) SlackのAPIでユーザー一覧を取得する方法をご紹介  (1-0) やりたいこと  (1-1) STEP1:Slackボットの作成  (1-2) STEP2:サンプル …

脳波をPythonプログラムで取得して、解析できるようにしたい

  <目次> 脳波をPythonプログラムで取得して、解析できるようにしたい  やりたいこと  STEP1:前提条件(事前準備)  STEP2:デバイス(MindWave Mobile 2) …

Slackで自動返信の投稿をするボットをPythonで作る手順(ngrokでローカルPCをサーバーに見立てて)

  <目次> (1) Slackで自動返信の投稿をするボットをPythonで作る手順(ngrokでローカルPCをサーバーに見立てて)  (1-1) STEP1:Slackアプリの新規作成&権 …

Slackアプリで「The top-level `text` argument is missing」の対処

<目次> Slackアプリで「The top-level `text` argument is missing」の対処  エラー内容  直接原因  直接原因への対処  根本原因  根本原因への対処   …

  • English (United States)
  • 日本語
Top