kaggle竞赛流程简介——以手写识别为例
2017-12-26 16:23
477 查看
下载数据集
https://www.kaggle.com/c/digit-recognizer/data数据包含三个csv文档。训练集 train.csv、测试集 test.csv、结果提交模版 sample_submission.csv。
数据说明
数据文件train.csv和test.csv包含的手绘位灰度图像,从0到9。每一行代表一个数字,不同的是train.csv中包含标签列,test.csv不包含标签列。图片的像素大小为 28 x 28 ,每个像素具有与它相关联的单个像素值,表示像素的亮度或暗度,数字越大意味着较暗。这个像素值是0到255(含)之间的整数。也就是说 0 为白色,255 为黑色。
建模过程
二值化由于训练集的像素值包含了0-255之间不同的值,因此我们需要对每个图片的特征进行二值化。二值化的处理方式是:设置一个阈值,大于该阈值的设置成255,小于该阈值的设置成0。
import pandas as pd from sklearn import metrics from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier # load train data train = pd.read_csv('F:/GitHub/kaggle/Digit Recognizer/train.csv') # split feature and label feature = train.drop('label', axis=1) label = train[['label']] # 设置一个阈值,为0-255之间,大于该值的设置为 255, 小于该值的设置为0 threshold = 100 feature[feature >= threshold] = 255 feature[feature < threshold] = 0
分离训练集
从训练集中提取一部分做训练,另一部分做验证。
# split train and test data train_feature, test_feature, train_label, test_label = train_test_split(feature, label, test_size=0.2, random_state=0)
拟合模型
# fit classifier model clf = KNeighborsClassifier(n_neighbors=5) clf.fit(train_feature, train_label) # predict test_feature predict_test = clf.predict(test_feature) # print result print(metrics.classification_report(test_label, predict_test))
查看打印的预测结果评估
可以看到,该模型的预测成功率为96%,这个准确率在这个项目中算低的,但本次旨在学习如何参加kaggle项目,以及上传预测结果,因此对准确率不做高要求。
预测测试数据,并按提交要求保存结果。
# predict test data, test = pd.read_csv('F:/GitHub/kaggle/Digit Recognizer/test.csv') # 设置一个阈值,为0-255之间,大于该值的设置为 255, 小于该值的设置为0 threshold = 100 test[test >= threshold] = 255 test[test < threshold] = 0 # you need save file as .csv like sample_submission.csv predict = clf.predict(test) predict = pd.DataFrame(predict) predict.to_csv('predict.csv') # 注意:这里保存的结果需要把第一行改成模版中的两个字段 ImageId, label, 而且ImageId是从1开始的,不是从0开始。
最后在网页界面把刚刚保存的predict.csv文件上传到提交结果的地方即可。
结果上传之后,就会根据你的结果,给出评分,下拉即可看到你在所有人中的排名。大家可以看到,我这个比较水,都排到1716名去了。前十名的预测率已经是100%了。
关于kaggle竞赛流程,大概就是这个样子,对于想提高正确率的,可以在调整模型参数或使用其他算法之后,从新预测结果,再上传就可以了。
相关文章推荐
- Kaggle竞赛排名Top 10% —— 手写数字识别Digit Recognizer
- 基于机器学习多种方法的kaggle竞赛入门之手写数字的图像识别预测
- Kaggle 手写识别题
- kaggle+mnist手写字体识别
- kaggle+mnist实现手写字体识别
- Kaggle入门模板:以手写识别Digit Recognizer为例
- 使用Theano实现kaggle手写识别:multilayer perceptron
- 在Kaggle手写数字数据集上使用Spark MLlib的朴素贝叶斯模型进行手写数字识别
- 在Kaggle手写数字数据集上使用Spark MLlib的RandomForest进行手写数字识别
- 用TensorFlow做Kaggle“手写识别”达到98%准确率-详解
- 转: Kaggle入门模板:以手写识别Digit Recognizer为例
- Sklearn-手写数字识别 & kaggle
- 【Kaggle笔记】手写数字识别分类(线性支持向量机)
- 【Kaggle】参加竞赛基本流程(以Titanic为例)
- kaggle Code :手写识别 TensorFlow
- kaggle-Digit Recognition(手写数字识别)
- 使用Caffe进行手写数字识别执行流程解析
- Python神经网络代码识别手写字具体流程(二):矩阵的前向传播
- tensorflow 实现kaggle手写识别Digit Recognizer(二)卷积神经网络
- Kaggle竞赛入门教程之Kaggle简介(新手向)