kaggle的手写识别比赛(python sklearn-KNN)
2016-02-28 23:46
751 查看
如果你想知道怎么玩一下kaggle?那这篇文章就非常适合你了。
Kaggle练手项目:https://www.kaggle.com/c/digit-recognizer 0~9的手写体识别。
项目简要:
训练集:第一列为标签列,其余784列为对应像素点的明亮程度(28*28的图像)
测试集:给你N*784列的像素点,让你判断这N样本的手写输入。
解题思路:使用KNN算法,测算临近5个训练集是什么数字,选择投票最高的。
使用sklearn-KNN算法完成kaggle的手写识别比赛测试代码如下:
使用完成后的感受:knn原始算法虽然简单,但是速度很慢。
后续处理方案:
1、改进knn稀疏矩阵的运算方案。(将像素为0的特征去除)
2、使用并行化的神经网络算法。
请期待后续blog更新~
另求机器学习组,讨论工程与算法~~~谢谢
Kaggle练手项目:https://www.kaggle.com/c/digit-recognizer 0~9的手写体识别。
项目简要:
训练集:第一列为标签列,其余784列为对应像素点的明亮程度(28*28的图像)
测试集:给你N*784列的像素点,让你判断这N样本的手写输入。
解题思路:使用KNN算法,测算临近5个训练集是什么数字,选择投票最高的。
使用sklearn-KNN算法完成kaggle的手写识别比赛测试代码如下:
# coding: utf-8 #读取表头信息 import csv import sklearn.cross_validation as cross_validation from sklearn import neighbors from sklearn import neighbors import sklearn.metrics as metrics csvfile = open(r'F:\pythonstudy\kaggle-Knn\data\train.csv', 'rb') reader=csv.reader(csvfile) headers = reader.next() print headers #读取特征信息和结果信息 featureList=[] labelList=[] for row in reader: labelList.append(row[0]) featureList.append(row[1:]) #将原始信息按9:1分割为训练集与测试集 train_data, test_data, train_target, test_target = cross_validation.train_test_split(featureList,labelList, test_size=0.1, random_state=0) #输入默认模型 knn=neighbors.KNeighborsClassifier() #训练模型 knn.fit(train_data,train_target) #预测测试集 predict_test=knn.predict(test_data) #现实预测结果 print metrics.classification_report(test_target, predict_test) precision recall f1-score support 0 0.98 0.99 0.98 422 1 0.97 0.99 0.98 473 2 0.98 0.96 0.97 409 3 0.97 0.97 0.97 426 4 0.97 0.96 0.97 429 5 0.94 0.97 0.96 382 6 0.97 0.99 0.98 412 7 0.96 0.97 0.96 469 8 0.98 0.91 0.94 384 9 0.95 0.95 0.95 394 avg / total 0.97 0.97 0.97 4200 #输出结果你就可以上传啦~~ f = open(r"f:\result.csv", "w") for i in predict_test: f.write(i+'\n') f.close()
使用完成后的感受:knn原始算法虽然简单,但是速度很慢。
后续处理方案:
1、改进knn稀疏矩阵的运算方案。(将像素为0的特征去除)
2、使用并行化的神经网络算法。
请期待后续blog更新~
另求机器学习组,讨论工程与算法~~~谢谢
相关文章推荐
- python(4) - 装饰器
- python 系统学习笔记(十二)---os os.path os.walk
- 使用python来批量抓取网站图片
- python类
- vim+python+OpenCV学习四 : 像素通道分割
- Python100之第一例
- python实现二叉树的前、中、后序遍历及按层遍历
- 第二天 Python3.4.2 函数是第一等公民 装饰器
- 第二天 Python3.4.2 函数的调用过程 生成器 yield
- Python图像处理库PIL的ImageFont模块介绍
- python学习笔记-Day6(2)
- PAT 1006. 换个格式输出整数 (15);JAVA;Python实现
- 1、提供推荐 Python代码
- 20160228python中文乱码
- Python 模块
- 最近在自学python,想以后自己搭服务器
- Windows64 系统下Python、NumPy与matplotlib 安装方法
- LeetCode:Majority Element
- [Python]time模块以及时间戳的使用
- python常用异常