Kaggle入门——使用scikit-learn解决DigitRecognition问题
来源:互联网 发布:js canva绘制渐变色线 编辑:程序博客网 时间:2024/06/06 16:25
Kaggle入门——使用scikit-learn解决DigitRecognition问题
@author: wepon
@blog: http://blog.csdn.net/u012162613
1、scikit-learn简介
scikit-learn是一个基于NumPy、SciPy、Matplotlib的开源机器学习工具包,采用Python语言编写,主要涵盖分类、
回归和聚类等算法,例如knn、SVM、逻辑回归、朴素贝叶斯、随机森林、k-means等等诸多算法,官网上代码和文档
都非常不错,对于机器学习开发者来说,是一个使用方便而强大的工具,节省不少开发时间。
scikit-learn官网指南:http://scikit-learn.org/stable/user_guide.html
上一篇文章《大数据竞赛平台—Kaggle入门》 我分两部分内容介绍了Kaggle,在第二部分中,我记录了解决Kaggle上的竞赛项目DigitRecognition的整个过程,当时我是用自己写的kNN算法,尽管自己写歌kNN算法并不会花很多时间,但是当我们想尝试更多、更复杂的算法,如果每个算法都自己实现的话,会很浪费时间,这时候scikit-learn就发挥作用了,我们可以直接调用scikit-learn的算法包。当然,对于初学者来说,最好还是在理解了算法的基础上,来调用这些算法包,如果有时间,自己完整地实现一个算法相信会让你对算法掌握地更深入。
OK,话休絮烦,下面进入第二部分。
2、使用scikit-learn解决DigitRecognition
我发现自己很喜欢用DigitRecognition这个问题来练习分类算法,因为足够简单。如果你还不知道DigitRecognition问题是什么,请先简单了解一下:Kaggle DigitRecognition ,在我上一篇文章中也有描述:《大数据竞赛平台—Kaggle入门》 。下面我使用scikit-learn中的算法包kNN(k近邻)、SVM(支持向量机)、NB(朴素贝叶斯)来解决这个问题,解决问题的关键步骤有两个:1、处理数据。2、调用算法。
(1)处理数据
这一部分与上一篇文章《大数据竞赛平台—Kaggle入门》 中第二部分的数据处理是一样的,本文不打算重复,下面只简单地罗列各个函数及其功能,在本文最后部分也有详细的代码。
“处理数据”部分,我们从train.csv、test.csv文件中获取了训练样本的feature、训练样本的label、测试样本的feature,在程序中我们用trainData、trainLabel、testData表示。
(2)调用scikit-learn中的算法
kNN算法
kNN算法包可以自己设定参数k,默认k=5,上面的comments有说明。
更加详细的使用,推荐上官网查看:http://scikit-learn.org/stable/modules/neighbors.html
SVM算法
SVC()的参数有很多,核函数默认为'rbf'(径向基函数),C默认为1.0
更加详细的使用,推荐上官网查看:http://scikit-learn.org/stable/modules/svm.html
朴素贝叶斯算法
上面我尝试了两种朴素贝叶斯算法:高斯分布的和多项式分布的。多项式分布的函数有参数alpha可以自设定。
更加详细的使用,推荐上官网查看:http://scikit-learn.org/stable/modules/naive_bayes.html
使用方法总结:
第一步:首先确定使用哪种分类器,这一步可以设置各种参数,比如:
第二步:接这个分类器要使用哪些训练数据?调用fit方法,比如:
fit(X,y)说明:
X: 对应trainData
array-like, shape = [n_samples, n_features],X是训练样本的特征向量集,n_samples行n_features列,即每个训练样本占一行,每个训练样本有多少特征就有多少列。
y: 对应trainLabel
array-like, shape = [n_samples],y必须是一个行向量,这也是上面为什么使用numpy.ravel()函数的原因。
第三步:使用分类器预测测试样本,比如:
第四步:保存结果,这一步是取决于我们解决问题的要求,因为本文以DigitRecognition为例,所以有:
(3)make a submission
上面基本就是整个开发过程了,下面看一下各个算法的效果,在Kaggle上make a submissionknn算法的效果,准确率95.871%
朴素贝叶斯,alpha=1.0,准确率81.043%
SVM,linear核,准确率93.943%
3、工程文件
CSDN下载:Kaggle 入门-使用scikit-learn解决DigitRecoginition
Github:https://github.com/wepe/Kaggle-Solution
贴一下代码:
0 0
- Kaggle入门——使用scikit-learn解决DigitRecognition问题
- Kaggle入门——使用scikit-learn解决DigitRecognition问题
- Kaggle入门——使用scikit-learn解决DigitRecognition问题
- Kaggle入门——使用scikit-learn解决DigitRecognition问题
- Scikit-Learn 学习 —— kNN使用
- Scikit-learn入门
- scikit-learn——Classification
- Scikit-learn——SVM
- scikit -learn 的使用
- Scikit-Learn使用总结
- 初步使用scikit-learn
- Scikit-learn使用总结
- Scikit-learn使用总结
- Scikit-learn使用总结
- Scikit-learn使用总结
- Scikit-learn使用总结
- scikit-learn使用总结
- Scikit-learn使用总结
- [IMWeb训练营作业] Vue.js 仿今日头条
- 深入理解 Java 垃圾回收机制
- 第2章 IPC机制
- 基于 Django1.10 文档的深入学习(6)—— Translation 之 short_description
- java注解
- Kaggle入门——使用scikit-learn解决DigitRecognition问题
- 详解SQLite中的数据类型
- 常用STL算法1_遍历
- nandflash控制器
- DeepLearning tutorial(1)Softmax回归原理简介+代码详解
- Joda-Time的使用以及其与jdk中时间类型的相互转换
- codeforces 779A
- springboot项目创建问题
- 有符号整数的移位运算