Menu
CoddyTech

数字をひと目で

CoddyのMachine Learningジャーニー「データとプロット」セクションの一部。レッスン 59/60。

load_digitsには1,797個の手書き数字が含まれています。各サンプルは64個のピクセルの明るさで構成され、8×8の画像を行ごとに並べたもので、値は0(空白)から16(インクで塗りつぶされた状態)までです。

4の書き方は人それぞれです:

load_digitsから取り出した手書きの4が10個、5個ずつ2段に並んでいる。黒地に白いインクで描かれ、それぞれ少しずつ傾きや形が異なる

教師が求めているのは、典型的なもの、つまり各ピクセルについて、数字のすべてのサンプルにわたるそのピクセルの平均値をとった平均画像です。

challenge icon

チャレンジ

難しい

プログラムは数字 d を読み込みます。as_frame を指定せずに数字データを読み込むと、.data と .target は NumPy 配列になります。

  1. 数字 d の平均画像を計算します。
  2. 最も明るいピクセルの行と列を、0から数えて出力します。
  3. 平均インク量を出力します。これは64個のピクセル平均値の平均で、np.round を使って小数点以下2桁に丸めます。
  4. gray の8×8画像として描画し、タイトルを Average と数字にします。

4の場合、次のようになります。

タイトルがAverage 4の8×8のグレー画像。黒地にぼんやりした白い4があり、書き手の多くが線を交差させる部分が最も明るい

入力が 4 の場合、出力全体は次のとおりです。

Brightest pixel: row 5, column 4
Average ink: 4.85
Charts drawn: 1
Title: Average 4
Images: 1
Size: 8 rows, 8 columns
Color map: gray
Row 0: [0.0, 0.0, 0.5, 7.1, 11.5, 2.0, 0.2, 0.1]
Row 1: [0.0, 0.1, 3.5, 13.3, 8.5, 2.0, 1.1, 0.3]
Row 2: [0.0, 0.7, 10.5, 11.4, 4.9, 5.8, 3.8, 0.3]
Row 3: [0.0, 4.6, 14.5, 6.4, 7.4, 10.6, 6.1, 0.0]
Row 4: [0.0, 8.6, 14.6, 9.7, 13.0, 14.0, 5.3, 0.0]
Row 5: [0.1, 6.3, 11.3, 12.4, 14.6, 10.4, 1.6, 0.0]
Row 6: [0.1, 1.1, 2.9, 7.8, 13.5, 4.2, 0.0, 0.0]
Row 7: [0.0, 0.0, 0.6, 7.8, 11.8, 2.0, 0.0, 0.0]

自分で試してみよう

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits

d = int(input())

# 以下にコードを書いてください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

データとプロットのすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ