在谷歌输入 kaggle digit recognizer进入比赛页面。首先我们来分析训练数据集train.csv,我们取第一行举例说明,第一行是数字1的手写体,
我们单独取第一行来分析,留下第一行其他删除命名为one.csv放在jupyter的一个目录里面,这个表格所代表的含义:用anaconda的jupyter来运行下面的代码得到图像
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 读取CSV文件
data = pd.read_csv('one.csv')
# 提取标签和像素值
label = data['label'].values
pixels = data.drop('label', axis=1).values
# 选择第一张图像(手绘数字1)
one_image = pixels[0]
# 将像素值转换为28x28矩阵
image_matrix = np.reshape(one_image, (28, 28))
# 创建一个足够大的图像,每个像素填上灰度值
plt.figure(figsize=(25, 25))
plt.imshow(image_matrix, cmap='gray', vmin=0, vmax=255, interpolation='none') # 设置vmin和vmax显示灰度值范围
plt.colorbar() # 显示颜色条,即灰度值对应的颜色
plt.title(f"Hand-drawn digit: {label[0]}")
# 在每个像素上添加灰度值标签
for i in range(28):
for j in range(28):
plt.text(j, i, str(int(image_matrix[i, j])), color='red', ha='center', va='center')
plt.show()
有28*28个像素。每个像素的灰度值是0-255,数值越大越亮。这个是理解train.csv的第一步。
我们再用同样的方法看看第13行,代表的图片9
现在我们很清楚train.csv所代表的含义了。