LR 手写数字识别课堂代码复现

    技术2022-07-10  156

    from sklearn.model_selection import train_test_split from sklearn import preprocessing from sklearn.metrics import accuracy_score from sklearn.datasets import load_digits from sklearn.svm import SVC import matplotlib as plt from sklearn.metrics import confusion_matrix import seaborn as sns # 数据可视化的包

    加载数据

    digits = load_digits() data = digits.data

    查看数据集大小

    data.shape

    数据集介绍

    1797个样本,每个样本包括88像素的图像和一个[0, 9]整数的标签。 array矩阵类型数据,保存88的图像,里面的元素是float64类型,共有1797张图片 用于显示图片。

    获取第一张图片的像素数

    print(digits.images[0])

    将25%的数据作为测试集,其余作为训练集

    train_x, test_x, train_y, test_y = train_test_split(data, digits.target, test_size=0.25, random_state=33)

    采用Z-Score规范化

    ss = preprocessing.StandardScaler() train_ss_x = ss.fit_transform(train_x) test_ss_x = ss.transform(test_x) from sklearn.linear_model import LogisticRegression

    创建LR分类器

    lr = LogisticRegression(random_state = 1) lr.fit(train_ss_x, train_y) predict_y = lr.predict(test_ss_x) print('LR准确率: %0.4lf' % accuracy_score(test_y, predict_y)) #查看模型的混淆矩阵,可以看出模型哪些地方做的不够好 lr_cm = confusion_matrix(test_y, predict_y) sns.heatmap(lr_cm, square=True, annot=True, cbar=False)
    Processed: 0.014, SQL: 9