从零开始的手写数字识别实战:homemade-machine-learning MNIST分类完整指南
从零开始的手写数字识别实战homemade-machine-learning MNIST分类完整指南【免费下载链接】homemade-machine-learning Python examples of popular machine learning algorithms with interactive Jupyter demos and math being explained项目地址: https://gitcode.com/gh_mirrors/ho/homemade-machine-learning手写数字识别是机器学习入门的经典项目而MNIST数据集则是这个领域的Hello World。本文将带你使用homemade-machine-learning项目实现一个简单而高效的手写数字分类器无需深厚的机器学习背景初学者也能轻松上手。机器学习与手写数字识别机器学习是人工智能的核心技术之一它使计算机能够从数据中学习并做出预测。在众多机器学习任务中图像分类是最直观且应用广泛的领域而手写数字识别正是图像分类的入门级任务。MNIST数据集包含60,000个训练样本和10,000个测试样本每个样本都是28×28像素的手写数字灰度图像数字范围从0到9。homemade-machine-learning项目提供了简化版的MNIST数据集data/mnist-demo.csv非常适合初学者进行实验。准备工作环境搭建1. 克隆项目代码库首先需要获取homemade-machine-learning项目的代码git clone https://gitcode.com/gh_mirrors/ho/homemade-machine-learning cd homemade-machine-learning2. 安装依赖项目需要一些Python依赖库可以通过以下命令安装pip install -r requirements.txtrequirements.txt文件中包含了所有必要的依赖包括numpy、pandas和matplotlib等数据处理和可视化库。数据探索认识MNIST数据集在开始构建模型之前让我们先了解一下数据。MNIST数据集的每个样本包含785个数值第一个数值是标签0-9的数字后面784个数值是28×28像素的灰度值0-255。查看数据集样例项目提供的Jupyter Notebook演示了如何加载和可视化数据# 加载数据 data pd.read_csv(data/mnist-demo.csv) # 显示前10行数据 data.head(10)可视化手写数字通过以下代码可以将像素数据转换为图像显示# 显示25个手写数字 numbers_to_display 25 num_cells math.ceil(math.sqrt(numbers_to_display)) plt.figure(figsize(10, 10)) for plot_index in range(numbers_to_display): digit data[plot_index:plot_index 1].values digit_label digit[0][0] digit_pixels digit[0][1:] image_size int(math.sqrt(digit_pixels.shape[0])) frame digit_pixels.reshape((image_size, image_size)) plt.subplot(num_cells, num_cells, plot_index 1) plt.imshow(frame, cmapGreys) plt.title(digit_label) plt.axis(off) plt.show()这段代码会生成一个5×5的网格显示25个手写数字及其对应的标签。构建模型逻辑回归分类器homemade-machine-learning项目提供了多种机器学习算法的实现我们将使用逻辑回归来构建手写数字分类器。逻辑回归虽然名字中带有回归但实际上是一种常用的分类算法。模型实现位置逻辑回归的实现位于homemade/logistic_regression/logistic_regression.py主要包含模型的训练和预测功能。训练模型以下是训练逻辑回归模型的关键代码# 初始化逻辑回归模型 logistic_regression LogisticRegression( x_train, y_train, polynomial_degree0, sinusoid_degree0, normalize_dataTrue ) # 训练模型 max_iterations 10000 # 梯度下降迭代次数 regularization_param 10 # 正则化参数防止过拟合 (thetas, costs) logistic_regression.train(regularization_param, max_iterations)关键参数说明polynomial_degree多项式特征的阶数用于捕捉非线性关系sinusoid_degree正弦特征的阶数增加数据的表达能力normalize_data是否对数据进行归一化通常建议设为Truemax_iterations梯度下降的最大迭代次数regularization_param正则化参数值越大模型越简单可防止过拟合分析训练过程训练过程中我们可以通过绘制成本函数cost function的变化来观察模型是否收敛# 绘制成本函数变化曲线 labels logistic_regression.unique_labels for index, label in enumerate(labels): plt.plot(range(len(costs[index])), costs[index], labellabels[index]) plt.xlabel(Gradient Steps) plt.ylabel(Cost) plt.legend() plt.show()如果成本函数随着迭代次数增加而逐渐减小并趋于稳定说明模型正在收敛。模型评估测试与可视化计算准确率训练完成后我们需要评估模型在测试集上的表现# 在测试集上进行预测 y_test_predictions logistic_regression.predict(x_test) # 计算准确率 test_precision np.sum(y_test_predictions y_test) / y_test.shape[0] * 100 print(fTest Precision: {test_precision:.4f}%)使用默认参数模型在测试集上的准确率通常可以达到90%左右对于一个简单的逻辑回归模型来说这个结果已经相当不错了。可视化预测结果为了更直观地了解模型的表现我们可以可视化测试集上的预测结果# 显示64个测试样本的预测结果 numbers_to_display 64 num_cells math.ceil(math.sqrt(numbers_to_display)) plt.figure(figsize(15, 15)) for plot_index in range(numbers_to_display): digit_label y_test[plot_index, 0] digit_pixels x_test[plot_index, :] predicted_label y_test_predictions[plot_index][0] # 正确预测显示绿色错误预测显示红色 color_map Greens if predicted_label digit_label else Reds image_size int(math.sqrt(digit_pixels.shape[0])) frame digit_pixels.reshape((image_size, image_size)) plt.subplot(num_cells, num_cells, plot_index 1) plt.imshow(frame, cmapcolor_map) plt.title(predicted_label) plt.axis(off) plt.show()在可视化结果中绿色背景表示模型正确识别的数字红色背景表示识别错误的数字。通过观察错误案例我们可以了解模型容易混淆哪些数字例如5和3、8和9等。进阶实验尝试不同算法homemade-machine-learning项目不仅提供了逻辑回归还实现了其他多种算法你可以尝试用它们来解决同一个问题比较不同算法的性能神经网络homemade/neural_network/multilayer_perceptron.pyK近邻虽然项目中没有直接实现但可以基于现有框架扩展支持向量机可以尝试在现有代码基础上实现神经网络通常能获得更高的准确率你可以查看项目中的notebooks/neural_network/multilayer_perceptron_demo.ipynb来了解如何使用多层感知器进行手写数字识别。总结与扩展通过本文的学习你已经掌握了使用homemade-machine-learning项目实现手写数字识别的基本流程数据加载与探索模型选择与训练模型评估与可视化这个简单的项目展示了机器学习的核心思想你可以通过以下方式进一步提升调整模型参数观察对准确率的影响尝试使用不同的特征工程方法实现更复杂的神经网络结构探索Fashion MNIST数据集data/fashion-mnist-demo.csv希望这个指南能帮助你入门机器学习和计算机视觉领域。homemade-machine-learning项目的优势在于代码简洁易懂每个算法都有详细的数学解释和注释非常适合初学者深入学习机器学习的原理。祝你在机器学习的探索之路上取得更多成果【免费下载链接】homemade-machine-learning Python examples of popular machine learning algorithms with interactive Jupyter demos and math being explained项目地址: https://gitcode.com/gh_mirrors/ho/homemade-machine-learning创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2589619.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!