数据来源:https://github.com/Janly238/Digit_Recognizer/tree/master/data

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sat Jul 22 14:31:35 2017
Digit Recognizer
@author: janny
"""import csv
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn import neighbors
from sklearn import metrics
from sklearn.svm import SVC
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression
from sklearn import treedef ReadCSV(name):path='data/'csvfile=open(path+name,'r')csvfileData=csv.reader(csvfile)csvData=[]for line in csvfileData:csvData.append(line)csvData.pop(0)intData=np.array(csvData).astype(np.int32)return intDatadef LoadTrainData():Data=ReadCSV("train.csv")  trainLable=Data[0:37000,0]trainData=Data[0:37000,1:]testLable=Data[37000:,0]trainData=Data[37000:,1:]trainData=np.where(trainData>0,1,0)testData=np.where(testData>0,1,0)return trainData,trainLable, testData,testLable  def LoadTestData():Data=ReadCSV("test.csv")  testLable_sub=Data[:,0]testData_sub=Data[:,1:]testData_sub=np.where(testData_sub>0,1,0)return testData_sub,testLable_sub def saveResult(result,csvName):with open(csvName,'wb') as myFile:    myWriter=csv.writer(myFile)for i in result:tmp=[]tmp.append(i)myWriter.writerow(tmp)def RandomForest(trainData,trainLable,testData,testLable):print ('RF is running') md = RandomForestClassifier(n_estimators = 50, n_jobs = 4)md.fit(trainData, trainLable)rfPredict = md.predict(testData)rfScore=metrics.accuracy_score(testLable, rfPredict)return rfPredict,rfScoredef Knn(trainData,trainLable,testData,testLable):knn = neighbors.KNeighborsClassifier(n_neighbors=5,algorithm='kd_tree', weights='distance', p=3) knn.fit(trainData, trainLable) knnPredict = knn.predict(testData)knnscore=metrics.accuracy_score(testLable, knnPredict)saveResult(knnPredict,'knn_Result.csv')return knnPredict,knnscoredef SVM(trainData,trainLable,testData,testLable):clf = SVC(kernel='rbf', C=10)clf.fit(trainData, trainLable)svmPredict=clf.predict(testData)     svmScore=metrics.accuracy_score(testLable, svmPredict)return svmPredict,svmScoredef SvmClassify(trainData,trainLable,testData,testLable):    #adding PCApca = PCA(n_components=0.8, whiten=True)train_x = pca.fit_transform(trainData)test_x = pca.transform(testData)svc = SVC(kernel='rbf', C=10)svc.fit(train_x, trainLable)svmPredict2 = svc.predict(test_x)svmScore2=metrics.accuracy_score(testLable, svmPredict)return svmScore2def LogClassify():clf = LogisticRegression()clf.fit(trainData, trainLable)logPredict = clf.predict(testData)logScore=metrics.accuracy_score(testLable, logPredict)return logPredict,logScoredef treeClassify(trainData,trainLable,testData,testLable):clf = tree.DecisionTreeClassifier()clf.fit(trainData,trainLable)treePredict=clf.predict(testData)treeScore=metrics.accuracy_score(testLable, treePredict)return treePredict,treeScoredef cnn(X_train, y_train, X_test, y_test):from keras.models import Sequential  from keras.layers.core import Dense, Dropout, Activation  from keras.optimizers import RMSpropfrom keras.datasets import mnist  import numpymodel = Sequential()  model.add(Dense(512, input_shape=(784,))) # 输入层,28*28=784  model.add(Activation('relu')) # 激活函数是tanh  model.add(Dropout(0.2)) # 采用50%的dropoutmodel.add(Dense(512)) # 隐层节点500个  model.add(Activation('relu'))  model.add(Dropout(0.2))model.add(Dense(10)) # 输出结果是10个类别,所以维度是10  model.add(Activation('softmax')) # 最后一层用softmaxmodel.summary()model.compile(loss='categorical_crossentropy', optimizer=RMSprop(), metrics=['accuracy']) # 使用交叉熵作为loss函数#(X_train, y_train), (X_test, y_test) = mnist.load_data() # 使用Keras自带的mnist工具读取数据(第一次需要联网)X_train = X_train.reshape(X_train.shape[0], X_train.shape[1] * X_train.shape[2]) # 由于mist的输入数据维度是(num, 28, 28),这里需要把后面的维度直接拼起来变成784维  X_test = X_test.reshape(X_test.shape[0], X_test.shape[1] * X_test.shape[2])  Y_train = (numpy.arange(10) == y_train[:, None]).astype(int) # 参考上一篇文章,这里需要把index转换成一个one hot的矩阵  Y_test = (numpy.arange(10) == y_test[:, None]).astype(int)model.fit(X_train, Y_train, batch_size=200, nb_epoch=10, verbose=1, validation_data=(X_test,Y_test))  print ('test set' )model.evaluate(X_test, Y_test, batch_size=200, show_accuracy=True, verbose=1)  def DigitalRecognizer():trainData,trainLable, testData,testLable  =LoadTrainData()pca = PCA(n_components=0.8, whiten=True)train_x = pca.fit_transform(trainData)test_x = pca.transform(testData)svmPredict,svmScore=SVM(train_x,trainLable,test_x,testLable)treePredict,treeScore=treeClassify(train_x,trainLable,test_x,testLable)rfPredict,rfScore=RandomForest(train_x,trainLable,test_x,testLable)ensembleData=np.zeros(len(treePredict),5)for i in range(len(treePredict)):ensembleData[i,:]=knnPredict[i],svmPredict[i],logPredict[i],treePredict[i],rfPredict[i]testData_sub,testLable_sub   =LoadTestData()rfPredict,rfScore=RandomForest(ensembleData,testLable,testData_sub,testLable_sub)return rfPredict,rfScorerfPredict,rfScore=DigitalRecognizer()

手写数字识别 随机森林 代码相关推荐

  1. Python不同方法实现手写数字识别结果和代码

    一.背景 手写数字识别是符号识别的一个分支,虽然只是识别简单的10个数字,但却有着非常大的实用价值.在我们的日常生活中,每天都要进行大量的文档处理工作,比如税单,银行支票,汇款单,信用卡账单的处理,以 ...

  2. 【手写数字识别】基于Lenet网络实现手写数字识别附matlab代码

    1 内容介绍 当今社会,人工智能得到快速发展,而模式识 别作为人工智能的一个重要应用领域也得到了飞 速发展,它利用计算机通过计算的方法根据样本的 特征对样本进行分类,其中的光学字符识别技术受 到广大研 ...

  3. 手写数字识别神经网络完整代码,带详细注释。

    神经网络使用的两个数据集:一个是训练集(60000条),一个是测试测试集(10000条),下载后直接放在程序目录下就可以了 mnist手写字体训练集6000条,mnist_train.csv mnis ...

  4. (一)Lenet5 手写数字识别原理及代码解析

    模型简单,本地可跑 论文参考:Gradient-based learning applied to document recognition MNIST手写数据集 50000个训练数据 10000个测 ...

  5. 基于卷积神经网络的手写数字识别(附数据集+完整代码+操作说明)

    基于卷积神经网络的手写数字识别(附数据集+完整代码+操作说明) 配置环境 1.前言 2.问题描述 3.解决方案 4.实现步骤 4.1数据集选择 4.2构建网络 4.3训练网络 4.4测试网络 4.5图 ...

  6. python cnn代码详解图解_基于TensorFlow的CNN实现Mnist手写数字识别

    本文实例为大家分享了基于TensorFlow的CNN实现Mnist手写数字识别的具体代码,供大家参考,具体内容如下 一.CNN模型结构 输入层:Mnist数据集(28*28) 第一层卷积:感受视野5* ...

  7. 深度学习笔记:01快速构建一个手写数字识别系统以及张量的概念

    深度学习笔记:01快速构建一个手写数字识别系统 神经网络代码最好运行在GPU中,但是对于初学者来说运行在GPU上成本太高了,所以先运行在CPU中,就是慢一些. 一.安装keras框架 使用管理员模式打 ...

  8. 深度学习-Pytorch:项目标准流程【构建、保存、加载神经网络模型;数据集构建器Dataset、数据加载器DataLoader(线性回归案例、手写数字识别案例)】

    1.拿到文本,分词,清晰数据(去掉停用词语): 2.建立word2index.index2word表 3.准备好预训练好的word embedding 4.做好DataSet / Dataloader ...

  9. TensorFlow笔记(3)——利用TensorFlow和MNIST数据集训练一个最简单的手写数字识别模型...

    前言 当我们开始学习编程的时候,第一件事往往是学习打印"Hello World".就好比编程入门有Hello World,机器学习入门有MNIST. MNIST是一个入门级的计算机 ...

最新文章

  1. 数据蒋堂 | 非常规聚合
  2. php动态生成apk渠道包,Android自动生成渠道包
  3. Cesium环境搭建成功和初步看一下它的示例
  4. .net core 生成html,ASP.NET Core 中如何将 .cshtml 视图文件生成为 .cs 文件
  5. fiber报错 (type *big.Int has no field or method FillBytes)
  6. 在iview + vue项目中使用自定义icon图标
  7. 蓝牙通信-搜索附近的蓝牙设备
  8. 28. git 常用命令
  9. cartographer探秘第二章之论文解析
  10. uva 12230 - Crossing Rivers(概率)
  11. python打包exe与反编译exe文件与防止反编译方式生成exe
  12. 五子课堂---第一课(连珠基础一)
  13. 92年程序员发帖晒薪资称自己很迷茫,网友:老弟你可以了
  14. 创建APPLEID 和申请成为开发者
  15. Xilinx AXI Crossbar相关调试记录
  16. 群聊比单聊,为什么复杂这么多?
  17. error: need 'typename' before '.......'的解决方法
  18. Linux进程与计划任务
  19. Scrapy爬取知乎用户信息(代理池,MongoDB,非分布式)
  20. 盛京剑客系列33:基本面真谛

热门文章

  1. 20180918-1 词频统计
  2. Visual Studio的语法着色终于调得赏心悦目
  3. Struts2 注解模式
  4. how tomcat works(第15章: Digester)
  5. python检查字典中是否已存在给定键
  6. SpringBoot,用200行代码完成一个一二级分布式缓存
  7. Oracle 空间查询, 数据类型为 sdo_geometry
  8. ApacheCN 深度学习译文集 20201229 更新
  9. 安卓应用安全指南 5.2.3 权限和保护级别 高级话题
  10. django 1.8 官方文档翻译: 2-6-2 遗留的数据库