5.3.1 数据集说明
Digit Recognizer数据集:https://www.kaggle.com/competitions/digit-recognizer。
文件train.csv中包含手绘数字(从0到9)的灰度图像,每张图像为28×28像素,共784像素。每个像素有一个0到255的值表示该像素的亮度。
文件第1列为标签,之后784列分别为784个像素的亮度值。
![图片[1]-5.3 案例:手写数字识别-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-104.png)
5.3.2 逻辑回归实现手写数字识别
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from sklearn.linear_model import LogisticRegression
# 加载数据集
digit = pd.read_csv("data/train.csv")
plt.imshow(digit.iloc[10, 1:].values.reshape(28, 28), cmap="gray")
plt.show()
![图片[2]-5.3 案例:手写数字识别-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-105.png)
# 划分训练集和测试集
X = digit.drop("label", axis=1) # 特征
y = digit["label"] # 标签
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=100)
# 归一化
preprocessor = MinMaxScaler()
x_train = preprocessor.fit_transform(x_train)
x_test = preprocessor.transform(x_test)
# 模型训练
model = LogisticRegression(max_iter=500)
model.fit(x_train, y_train)
# 模型评估
model.score(x_test, y_test)
# 预测
plt.imshow(digit.iloc[123, 1:].values.reshape(28, 28), cmap="gray")
plt.show()
print(model.predict(digit.iloc[123, 1:].values.reshape(1, -1)))
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
















请登录后查看评论内容