SVM对sklearn自带手写数字数据集进行分类
来源:互联网 发布:英雄联盟17173数据库 编辑:程序博客网 时间:2024/06/10 10:09
sklearn自带一些数据集,其中手写数字数据集可通过load_digits加载,我找到load_digits里头是这样
def load_linnerud(): """Load and return the linnerud dataset (multivariate regression). Samples total: 20 Dimensionality: 3 for both data and targets Features: integer Targets: integer Returns ------- data : Bunch Dictionary-like object, the interesting attributes are: 'data' and 'targets', the two multivariate datasets, with 'data' corresponding to the exercise and 'targets' corresponding to the physiological measurements, as well as 'feature_names' and 'target_names'. """ base_dir = join(dirname(__file__), 'data/') # Read data data_exercise = np.loadtxt(base_dir + 'linnerud_exercise.csv', skiprows=1) data_physiological = np.loadtxt(base_dir + 'linnerud_physiological.csv', skiprows=1) # Read header with open(base_dir + 'linnerud_exercise.csv') as f: header_exercise = f.readline().split() with open(base_dir + 'linnerud_physiological.csv') as f: header_physiological = f.readline().split() with open(dirname(__file__) + '/descr/linnerud.rst') as f: descr = f.read() return Bunch(data=data_exercise, feature_names=header_exercise, target=data_physiological, target_names=header_physiological, DESCR=descr)有数据说明,很详细,也可以看到实际那批数据来自一个csv文件,可以按照提示挑一个样例show一下看看
import pylab as pldigits = load_digits()# 数据纬度,1797幅图,8*8# 显示一副图片# pl.gray()# pl.matshow(digits.images[0])# pl.show()
言归正传,调用sklearn的svm包里的LinearSVC做一下分类实验
# -*- coding:utf-8 -*-import sysfrom sklearn.datasets import load_digits # 加载手写数字识别数据import pylab as plfrom sklearn.cross_validation import train_test_split # 训练测试数据分割from sklearn.preprocessing import StandardScaler # 标准化工具from sklearn.svm import LinearSVCfrom sklearn.metrics import classification_report # 预测结果分析工具reload(sys)sys.setdefaultencoding('utf-8')digits = load_digits()# 数据纬度,1797幅图,8*8print digits.data.shape# 分割数据X_train, X_test, Y_train, Y_test = train_test_split(digits.data, digits.target, test_size=0.25, random_state=33)ss = StandardScaler()# fit是实例方法,必须由实例调用X_train = ss.fit_transform(X_train)X_test = ss.transform(X_test)lsvc = LinearSVC()lsvc.fit(X_train, Y_train)Y_predict = lsvc.predict(X_test)print classification_report(Y_test, Y_predict, target_names=digits.target_names.astype(str))
训练集与测试集1比3分割,分类预测的性能如下:
precision recall f1-score support 0 0.92 1.00 0.96 35 1 0.96 0.98 0.97 54 2 0.98 1.00 0.99 44 3 0.93 0.93 0.93 46 4 0.97 1.00 0.99 35 5 0.94 0.94 0.94 48 6 0.96 0.98 0.97 51 7 0.92 1.00 0.96 35 8 0.98 0.84 0.91 58 9 0.95 0.91 0.93 44avg / total 0.95 0.95 0.95 450
需要记住几个性能指标的含义
precision为精确率,是真阳结果与所有被判为阳性结果的比。
recall为召回率, 是真阳结果与所有实际为阳性数据的比。
真阳者,实际为真且判为真。
0 0
- SVM对sklearn自带手写数字数据集进行分类
- sklearn 自带手写字体数据集
- sklearn 自带手写字体数据集(二)
- 【机器学习 sklearn】手写数字识别 SVM
- sklearn中SVM与AdaBoost对手写体数字进行识别
- python进行文本分类,基于word2vec,sklearn-svm对微博性别分类
- 使用tensorflow利用神经网络分类识别MNIST手写数字数据集,转自随心1993
- 使用SVM对多类多维数据进行分类
- 使用PCA + KNN对MNIST数据集进行手写数字识别 python
- 使用不同的SVM对iris数据集进行分类并绘出结果
- 机器学习应用——sklearn自带数据集训练(支持向量机分类)
- 关于手写数字Multiple+Features数据集的贝叶斯分类
- SVM手写数字图像分类
- mnist数据集在caffe(windows)上的训练与测试及对自己手写数字的分类
- 使用OpenCV自带的神经网络对MNIST手写字体进行识别
- 在Kaggle手写数字数据集上使用Spark MLlib的RandomForest进行手写数字识别
- SVM 手写数字检测
- SVM - 手写数字识别
- 构造函数
- python matplotlib 编码问题
- TensorFlow 官方文档中文版解读之2——tf.sparse_to_dense的用法
- 判断传入的参数是否是数组
- 验证码开源类库Kaptcha
- SVM对sklearn自带手写数字数据集进行分类
- 进程间通信之文件映射
- 拷贝构造 赋值构造
- 常见的进程调度算法
- 文章标题 UVA 12299 : RMQ with Shifts(线段树+点修改)
- TensorFlow 官方文档中文版解读之1 ——tf.concat的用法的用法
- android View绘制流程与机制
- The sum problem
- Java简单的生产者与消费者实现