• 安装kaggle工具获取数据源(linux 环境)
  • 采用sklearn的KNeighborsClassifier训练数据
  • 通过K折交叉验证来选取K值是正确率更高

1.安装kaggle,获取数据源

pip install kaggle

将数据下载到目录/data/data-test/digit_recognize/下

cd /data/data-test/digit_recognize/
kaggle competitions download -c digit-recognizer

2.安装anaconda3作为python3环境,自带sklearn,pandas,numpy等常用工具包

3.代码实现

import pandas as pd
from sklearn.model_selection import cross_val_score
from sklearn.neighbors import KNeighborsClassifier
import pickle # 文件路径
project_path = '/data/data-test/digit_recognize/'
clf_file = project_path + 'knn.pickle' def get_data_chunk(file_name):
# 文件太大分块读取文件 9000万条
reader = pd.read_csv(file_name, iterator=True)
loop = True
chunk_size = 100000
chunks = []
while loop:
try:
chunk = reader.get_chunk(chunk_size)
chunks.append(chunk)
print(len(chunks))
except StopIteration:
loop = False
print("Iteration is stopped.")
res = pd.concat(chunks, ignore_index=True)
return res def save_clf(clf_s):
clf_f = open(clf_file, 'wb')
pickle.dump(clf_s, clf_f)
clf_f.close() def get_clf():
clf_f = open(clf_file, 'rb')
res = pickle.load(clf_f)
return res # 对测试数据集预测结果
def predict():
knn_clf = get_clf()
test_data = get_data_chunk(project_path + "test.csv")
res_data = knn_clf.predict(test_data)
df = pd.DataFrame()
df["imageId"] = test_data["imageId"]
df["Label"] = res_data
df.to_csv(project_path + 'res.csv', index=False) def train():
train_data = get_data_chunk(project_path + "train.csv")
print(train_data.info())
print(train_data)
train_lable = train_data['label']
x = train_data.drop(columns=['label']) max = 0
max_k = 5 # k取值从5,15用K折交叉验证算出正确率分数
for k in range(5, 15):
clf = KNeighborsClassifier(n_neighbors=k)
# cv为2折
scores = cross_val_score(clf, x, train_lable, cv=2, scoring='accuracy')
mean = scores.mean()
print(k, mean)
if mean > max:
max_k = k
print("maxK=", max_k)
# 用max_k作为knn参数训练模型
clf = KNeighborsClassifier(n_neighbors=max_k)
clf.fit(x, train_lable)
# 存储模型到pickle文件
save_clf(clf) if __name__ == '__main__':
train()
predict()

kaggle-Digit Recognizer的更多相关文章

  1. Kaggle—Digit Recognizer竞赛

    Digit Recognizer 手写体数字识别  MNIST数据集 本赛 train 42000样例 test 28000样例,原始MNIST是 train 60000 test 10000 我分别 ...

  2. kaggle实战记录 =>Digit Recognizer

    date:2016-09-13 今天开始注册了kaggle,从digit recognizer开始学习, 由于是第一个案例对于整个流程目前我还不够了解,首先了解大神是怎么运行怎么构思,然后模仿.这样的 ...

  3. Kiggle:Digit Recognizer

    题目链接:Kiggle:Digit Recognizer Each image is 28 pixels in height and 28 pixels in width, for a total o ...

  4. DeepLearning to digit recognizer in kaggle

    DeepLearning to digit recongnizer in kaggle 近期在看deeplearning,于是就找了kaggle上字符识别进行练习.这里我主要用两种工具箱进行求解.并比 ...

  5. Kaggle入门(一)——Digit Recognizer

    目录 0 前言 1 简介 2 数据准备 2.1 导入数据 2.2 检查空值 2.3 正则化 Normalization 2.4 更改数据维度 Reshape 2.5 标签编码 2.6 分割交叉验证集 ...

  6. Kaggle 项目之 Digit Recognizer

    train.csv 和 test.csv 包含 1~9 的手写数字的灰度图片.每幅图片都是 28 个像素的高度和宽度,共 28*28=784 个像素点,每个像素值都在 0~255 之间. train. ...

  7. kaggle赛题Digit Recognizer:利用TensorFlow搭建神经网络(附上K邻近算法模型预测)

    一.前言 kaggle上有传统的手写数字识别mnist的赛题,通过分类算法,将图片数据进行识别.mnist数据集里面,包含了42000张手写数字0到9的图片,每张图片为28*28=784的像素,所以整 ...

  8. 适合初学者的使用CNN的数字图像识别项目:Digit Recognizer with CNN for beginner

    准备工作 数据集介绍 数据文件 train.csv 和 test.csv 包含从零到九的手绘数字的灰度图像. 每张图像高 28 像素,宽 28 像素,总共 784 像素.每个像素都有一个与之关联的像素 ...

  9. SMO序列最小最优化算法

    SMO例子: 1 from numpy import * 2 import matplotlib 3 import matplotlib.pyplot as plt 4 5 def loadDataS ...

  10. How do I learn machine learning?

    https://www.quora.com/How-do-I-learn-machine-learning-1?redirected_qid=6578644   How Can I Learn X? ...

随机推荐

  1. Java线程池的构造以及使用

    有时候,系统需要处理非常多的执行时间很短的请求,如果每一个请求都开启一个新线程的话,系统就要不断的进行线程的创建和销毁,有时花在创建和销毁线程上的时间会比线程真正执行的时间还长.而且当线程数量太多时, ...

  2. SpringMVC中的Interceptor拦截器及与Filter区别

    SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...

  3. HTML第二篇

    1>压缩文件格式:使用.zip格式较好 2>charset(字符集)  国内最新字符集格式为:gb18030   国际上通用的字符集是:UTF-8 3>添加图片 <img sr ...

  4. FT_ND_API.dll

    ePass1000ND https://blog.csdn.net/li34442779/article/details/44276989 https://www.cnblogs.com/lidabo ...

  5. left join on 和where中条件的放置位置

    转自:http://blog.csdn.net/muxiaoshan/article/details/7617533 select * from td  left join (select case_ ...

  6. drf1 rest & restful规范

    web服务交互 我们在浏览器中能看到的每个网站,都是一个web服务.那么我们在提供每个web服务的时候,都需要前后端交互,前后端交互就一定有一些实现方案,我们通常叫web服务交互方案. 目前主流的三种 ...

  7. Centos7部署Kubernetes集群

    目录贴:Kubernetes学习系列 1.环境介绍及准备: 1.1 物理机操作系统 物理机操作系统采用Centos7.3 64位,细节如下. [root@localhost ~]# uname -a ...

  8. Vmware Vtop基本使用

      俗话说:"最了解孩子的莫过于亲妈",算了编不下去了,简而言之就是我们想知道虚机的详情可以通过Vmware Vtop登录宿主机进行查看,直接上干货.   有这些信息我们可以从Vt ...

  9. DevExpress--TreeList节点添加图片

    这个过程相对来说比较简单,网上也有不少资料,但是自己在做过之后为了记住,算是给自己写一个博客吧. 下面直接上具体的流程 1.前提 控件使用的都是DevExpress和winform的原生控件两种: 2 ...

  10. 使用ILMerge 打包C# 绿色免安装版程序

    使用ILMerge工具,将C#项目debug目录下的exe及其依赖的dll文件打包成一个exe文件,直接双击就可运行. 使用工具: ILMerge :http://www.microsoft.com/ ...