使用SVM对手写体数字图片分类 实验目的: 会用Python创建多分类SVM模型; 使用多分类SVM模型对手写体数字图片分类; 会对分类结果进行评价。 实验内容: 使用sklearn.svm类对手写体数字图片进行分类 训练数据:digits_training.csv 测试数据:digits_testing.csv 第1列是类别,其他列是特征属性。 先对1类和2类的数据进行计算,得到1类和2类的分割超平面,然后对2类和3类的数据进行计算,以此类推,直到两两类别分别完成计算。 在用模型做预测时,对两两类别之间的分割超平面分别进行匹配,统计有多少次判别将其华分类1类,多少次判别为2类…,判定所属类别次数最多的就是最后预测的类别。 载入训练数据、分出特征属性和类别,对特征属性标准化,显示读入数据的行数 xTrain = trainData[:,1:NTrain] yTrain = trainData[:,0] 标准化函数 def normalizeData(X): return (X - X.mean())/X.max() 训练多分类SVM模型 model = svm.SVC(decision_function_shape='ovo') 保存训练模型名字为“svm_classifier_model1.m” 载入测试数据,分出特征属性和类别,对特征属性标准化,显示读入数据的行数 使用模型对测试集进行预测,显示预测错误数据的数目、预测数据的准确率和模型内建正确率 的实现v代码

时间: 2024-03-22 14:39:48 浏览: 14
以下是基于SVM的手写数字识别的Python代码实现,包含了上述实验内容: ```python import numpy as np from sklearn import svm from sklearn.metrics import accuracy_score from sklearn.preprocessing import StandardScaler # 载入训练数据和测试数据 trainData = np.loadtxt('digits_training.csv', delimiter=',') testData = np.loadtxt('digits_testing.csv', delimiter=',') # 分出特征属性和类别 NTrain = trainData.shape[1] xTrain = trainData[:, 1:NTrain] yTrain = trainData[:, 0] xTest = testData[:, 1:NTrain] yTest = testData[:, 0] # 对特征属性进行标准化 scaler = StandardScaler() xTrain = scaler.fit_transform(xTrain) xTest = scaler.transform(xTest) # 训练多分类SVM模型 num_classes = len(np.unique(yTrain)) models = [] for i in range(1, num_classes+1): for j in range(i+1, num_classes+1): X = xTrain[np.logical_or(yTrain==i, yTrain==j)] Y = yTrain[np.logical_or(yTrain==i, yTrain==j)] y_binary = np.zeros(Y.shape) y_binary[Y == i] = 1 y_binary[Y == j] = -1 model = svm.SVC(kernel='linear', decision_function_shape='ovo') model.fit(X, y_binary) models.append((i, j, model)) # 保存训练好的模型 import joblib joblib.dump(models, 'svm_classifier_model1.m') # 使用模型对测试集进行预测 yPred = np.zeros(yTest.shape) for i in range(len(models)): a, b, model = models[i] y_binary = np.zeros(yTest.shape) y_binary[yTest == a] = 1 y_binary[yTest == b] = -1 yPred_binary = model.predict(xTest) yPred[np.where(yPred_binary == 1)] = a yPred[np.where(yPred_binary == -1)] = b # 计算预测错误的数据数量、预测数据的准确率以及模型内建的正确率 num_errors = sum(yPred != yTest) accuracy = accuracy_score(yTest, yPred) built_in_accuracy = np.mean(yPred == yTest) print('Number of errors: %d' % num_errors) print('Accuracy: %.2f%%' % (accuracy * 100)) print('Built-in accuracy: %.2f%%' % (built_in_accuracy * 100)) ``` 需要注意的是,在实现中使用了sklearn.preprocessing模块中的StandardScaler类来实现标准化,使用了sklearn.metrics模块中的accuracy_score函数来计算准确率。此外,保存训练好的模型使用了joblib库中的dump函数,而不是像原始代码中所写的保存为.m文件。

相关推荐

最新推荐

recommend-type

python实现基于SVM手写数字识别功能

主要为大家详细介绍了python实现基于SVM手写数字识别功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

python,sklearn,svm,遥感数据分类,代码实例

对于分类,SVM最初用于解决二分类问题,多分类问题可通过构建多个SVM分类器解决。SVM具有两大特点:1.寻求最优分类边界,即求解出能够正确划分训练数据集并且几何间隔最大的分离超平面,这是SVM的基本思想;2.基于核...
recommend-type

使用Python做垃圾分类的原理及实例代码附

主要介绍了用Python做垃圾分类的实现原理,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
recommend-type

Python中支持向量机SVM的使用方法详解

主要为大家详细介绍了Python中支持向量机SVM的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

Python使用sklearn库实现的各种分类算法简单应用小结

主要介绍了Python使用sklearn库实现的各种分类算法,结合实例形式分析了Python使用sklearn库实现的KNN、SVM、LR、决策树、随机森林等算法实现技巧,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

spring添加xml配置文件

1. 创建一个新的Spring配置文件,例如"applicationContext.xml"。 2. 在文件头部添加XML命名空间和schema定义,如下所示: ``` <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。