网站宣传与推广的指导思想,网站开发人员绩效考核,中铁三局招聘身材好,小小课堂seo自学网☁️主页 Nowl
#x1f525;专栏《机器学习实战》 《机器学习》
#x1f4d1;君子坐而论道#xff0c;少年起而行之
文章目录
一、任务描述
二、数据集描述
三、主要代码
#xff08;1#xff09;主要代码库的说明与导入方法
#xff08;2#xff09;数据预…
☁️主页 Nowl
专栏《机器学习实战》 《机器学习》
君子坐而论道少年起而行之
文章目录
一、任务描述
二、数据集描述
三、主要代码
1主要代码库的说明与导入方法
2数据预处理
3模型训练
4模型预测与性能评估
5除数据预处理外的完整代码
四、本章总结 一、任务描述 手写数字识别是机器学习中的一个经典问题通常涉及将手写数字的图像与其对应的数字进行关联。这种问题通常被认为是计算机视觉领域的一个入门任务也是许多深度学习框架和算法的基础测试案例之一。 二、数据集描述 手写数字识别数据集包含了一列数字标签每个数字标签有784个像素值代表这个数字图片的像素值 三、主要代码
1主要代码库的说明与导入方法 import pandas as pd pandas 是一个数据分析库提供了灵活的数据结构如 DataFrame用于处理和分析结构化数据。它常被用于数据清洗、处理和分析。 import matplotlib.pyplot as plt matplotlib 是一个用于绘制图表和可视化数据的库。pyplot模块是 matplotlib 的一个子模块用于创建各种类型的图表如折线图、散点图、直方图等。 import numpy as np NumPy 是用于科学计算的库提供了高性能的数组对象和各种数学函数。它在数据处理和数值计算中被广泛使用尤其是在机器学习中。 import matplotlib as mpl 这里再次导入 matplotlib 库但是这次将其别名设置为mpl。这样做是为了在代码中使用更短的别名以提高代码的可读性。 from sklearn.model_selection import train_test_split scikit-learnsklearn是一个用于机器学习的库。train_test_split函数用于将数据集划分为训练集和测试集这是机器学习模型评估的一种常见方式。 from sklearn.neighbors import KNeighborsClassifier 这里导入了 scikit-learn 中的KNeighborsClassifier类该类实现了 k-近邻分类器用于进行基于邻近样本的分类。 from sklearn.metrics import accuracy_score 从 scikit-learn 中导入accuracy_score函数用于计算分类模型的准确度分数。准确度是分类模型预测的正确样本数占总样本数的比例。 为确保代码能正常运行请先复制以下代码导入本文用到的所有库
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score 当代码无法运行时还有可能是文件路径问题注意改成自己的文件路径
2数据预处理
1.导入数据
使用pandas库导入数据集文件文件路径要换成自己的
digit pd.read_csv(datasets/digit-recognizer/train.csv)
2.划分训练集与测试集
使用train_test_split函数将数据集分为训练集和测试集测试集比例为0.2
再将特征和标签分离出来
train, test train_test_split(digit, test_size0.2)train_x train.drop(columnslabel)
train_y train[label]
test_x test.drop(columnslabel)
test_y test[label] 3.图片显示
我们可以使用matplotlib库将图片显示出来
train_x.iloc[2]选取训练集的第3行数据np.array()将数组转化为numpy数组以便使用reshape函数.reshape(2828)将原来的784个特征转化为(2828)格式的数据这代表一个正方形图片cmapmpl.cm.binary使图片颜色为黑白plt.imshow()函数可以将一个像素数组转化为图片
plt.imshow(np.array(train_x.iloc[2]).reshape(28, 28), cmapmpl.cm.binary)
plt.show()
print(train_y.iloc[2])
显示图片并打印数据标签 我们可以看到图像是一个数字9打印标签也确实是9接下来我们就来训练一个数字识别机器学习模型
3模型训练
由于这是一个分类任务我们可以选择使用KNN近邻算法第一步设置模型第二步训练模型
model KNeighborsClassifier(n_neighbors3)
model.fit(train_x, train_y)
4模型预测与性能评估
寻找最优参数
对于大部分机器学习模型来说设置不同的参数得到的模型性能都不同我们可以绘制不同参数的准确率曲线图来寻找最优参数
accuracy []for i in range(1, 10):model KNeighborsClassifier(n_neighborsi)model.fit(train_x, train_y)prediction model.predict(test_x)accuracy.append(accuracy_score(prediction, test_y))print()plt.plot(range(1, 10), accuracy)
plt.xlabel(neighbors)
plt.ylabel(accuracy)
plt.show() 可以看到当neighbors为3时模型效果最好我们在应用时就将模型参数设置为3
5除数据预处理外的完整代码
这里是舍弃了一些寻找特征等工作的完整模型训练代码
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_scoredigit pd.read_csv(datasets/digit-recognizer/train.csv)train, test train_test_split(digit, test_size0.2)train_x train.drop(columnslabel)
train_y train[label]
test_x test.drop(columnslabel)
test_y test[label]model KNeighborsClassifier(n_neighbors3)
model.fit(train_x, train_y)
prediction model.predict(test_x)
print(accuracy_score(prediction, test_y))
四、本章总结
学习了使用numpy处理图像数据的方法学习了打印准确率曲线来寻找最优参数的方法使用KNN模型来完成分类任务
当然也可以自己处理特征自己选择模型调整参数看看会不会获得更好的结果 感谢阅读觉得有用的话就订阅下本专栏吧