kaggle-Digit Recognizer
- 安装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的更多相关文章
- Kaggle—Digit Recognizer竞赛
Digit Recognizer 手写体数字识别 MNIST数据集 本赛 train 42000样例 test 28000样例,原始MNIST是 train 60000 test 10000 我分别 ...
- kaggle实战记录 =>Digit Recognizer
date:2016-09-13 今天开始注册了kaggle,从digit recognizer开始学习, 由于是第一个案例对于整个流程目前我还不够了解,首先了解大神是怎么运行怎么构思,然后模仿.这样的 ...
- Kiggle:Digit Recognizer
题目链接:Kiggle:Digit Recognizer Each image is 28 pixels in height and 28 pixels in width, for a total o ...
- DeepLearning to digit recognizer in kaggle
DeepLearning to digit recongnizer in kaggle 近期在看deeplearning,于是就找了kaggle上字符识别进行练习.这里我主要用两种工具箱进行求解.并比 ...
- Kaggle入门(一)——Digit Recognizer
目录 0 前言 1 简介 2 数据准备 2.1 导入数据 2.2 检查空值 2.3 正则化 Normalization 2.4 更改数据维度 Reshape 2.5 标签编码 2.6 分割交叉验证集 ...
- Kaggle 项目之 Digit Recognizer
train.csv 和 test.csv 包含 1~9 的手写数字的灰度图片.每幅图片都是 28 个像素的高度和宽度,共 28*28=784 个像素点,每个像素值都在 0~255 之间. train. ...
- kaggle赛题Digit Recognizer:利用TensorFlow搭建神经网络(附上K邻近算法模型预测)
一.前言 kaggle上有传统的手写数字识别mnist的赛题,通过分类算法,将图片数据进行识别.mnist数据集里面,包含了42000张手写数字0到9的图片,每张图片为28*28=784的像素,所以整 ...
- 适合初学者的使用CNN的数字图像识别项目:Digit Recognizer with CNN for beginner
准备工作 数据集介绍 数据文件 train.csv 和 test.csv 包含从零到九的手绘数字的灰度图像. 每张图像高 28 像素,宽 28 像素,总共 784 像素.每个像素都有一个与之关联的像素 ...
- SMO序列最小最优化算法
SMO例子: 1 from numpy import * 2 import matplotlib 3 import matplotlib.pyplot as plt 4 5 def loadDataS ...
- 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? ...
随机推荐
- Selenium 笔记
1. 截屏:get_screenshot_as_file(“C:\\b1.jpg”) 2. 退出:(1).close----关闭当前窗口 (2).quit()-----用于结束进程,关闭所有的窗口 一 ...
- node.js中express框架的基本使用
express是一个基于node.js平台的,快速,开放,极简的web开发框架. 一.安装 express npm install express --save 二.简单使用 express //引入 ...
- 配置apache虚拟域名(phpStudy2016)
以前也一个个的配置过apache.php和mysql,现在嫌麻烦,就用的phpStudy. 装好之后,发现127.0.0.1可以访问,但是localhost就不可以访问.大概是因为apache没有配置 ...
- 杨其菊201771010134《面向对象程序设计(java)》第一周学习总结
第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.com 安迪儿 程序设计评测:https://pintia.cn/ 迷路的麋鹿回不来家了 代码 ...
- 第六次spring会议
昨天所做之事: 我对软件加上了保密功能. 今天所做内容: 我对软件加上了一键解密功能. private void 一键还原ToolStripMenuItem_Click(object sender, ...
- Knockout.js组件系统的详解之(一) - 组件的定义和注册
(Knockout版本:3.4.1 ) KO的组件主要从以下四个部分进行详细介绍: 1.组件的定义和注册 2.组件绑定 3.使用自定义元素 4.自定义组件加载器(高级) 目录结构 1.通过" ...
- mysql---select的五种子句学习(where、group by、having、order by、limit)
mysql---select的五种子句学习(where.group by.having.order by.limit) 分类: Mysql学习2012-09-27 16:14 1533人阅读 评论 ...
- 我的idea突然没有SVN了是怎么回事
总结一下没有svn选项的几种情况: 情况1:IntelliJ IDEA打开带SVN信息的项目不显示SVN信息,项目右键SVN以及图标还有Changes都不显示解决方法 在VCS菜单中有个开关,叫Ena ...
- eclipse怎么删除多余的tomcat server(2)
首先你的Server要是可用状态,就是说当前这个tomcat处于可用状态才能点击那个Create Launch Configuration
- httphandler httpmodule一些个人理解
asp.net 对于http请求需要走一个管道就行一层一层的过滤:比如身份验证,根据请求的资源不同分发给具体哪个dll来处理 这些管道中就是httpmodule.所以我们自己写的httpmodule实 ...