赞
踩
由于选修了数据挖掘课程,课程作业是完成Kaggle上的一个比赛,所以在机缘巧合下就知道了Kaggle这个平台,事实上我认为这是用来练手数据挖掘的一个绝佳场所。这篇文章适合和我一样刚接触Kaggle的朋友,对于已经熟悉这个平台的朋友,欢迎指出我的错误,必定虚心受教。本文分为两个部分,第一部分简单介绍在上面完成比赛的流程,第二部分以手写数字识别为例子详细描述完成比赛的整个过程。
首先进入Kaggle网站,注册登陆后拉下来会看到进行中的比赛
其中对于我们新手而言更关心的是101练习赛先用来熟悉整个流程
点击digit Recognizer进入比赛,我们可以看到主要有三个部分是我们关心的,比赛介绍,数据获取和提交答案,如下图是刚点击进去就能够看到的比赛描述
点击Get the data跳转到一下页面就可以获取数据
点击Make a submission就会跳转到提交界面,在此界面点击click or drop your submission here,将我们跑出来的答案文件上传,再点击submit提交即可,然后就会跳转到排名版(learder board),我们就可以看到自己的排名以及准确率了。
关于比赛的细节:
1、我们下载得到的数据都是csv格式的数据,因为最后只需要提交结果,所以这中间我们使用任何语言任何算法都是可以的,没有任何限制
2、初始数据中训练集是有Label的,而测试数据是没有Label的,我们要做的是用训练集来训练模型,然后推测出测试集每个元组的Label,这些推测出来的Label组成的文件就是我们最后要提交的文件,必须以规定的形式,而且必须是csv格式。
3、系统会从最终数据中选25%的数据作为初评,也就是我们一提交看到的准确率和排名都是根据这25%的数据得出的。准确率的计算时,比如10个Label你的预测对了9个,那么准确率就是90%。并不是初评排名高就好,因为比赛结束后终评是使用剩下的75%的数据进行评测,所以最后准确率还是有可能有很大的变化。
def toInt(array): array=mat(array) m,n=shape(array) newArray=zeros((m,n)) for i in xrange(m): for j in xrange(n): newArray[i,j]=int(array[i,j]) return newArray def nomalizing(array): m,n=shape(array) for i in xrange(m): for j in xrange(n): if array[i,j]!=0: array[i,j]=1 return array def loadTrainData(): l=[] with open('train.csv') as file: lines=csv.reader(file) for line in lines: l.append(line) #42001*785 l.remove(l[0]) l=array(l) label=l[:,0] data=l[:,1:] return nomalizing(toInt(data)),toInt(label) #label 1*42000 data 42000*784 #return trainData,trainLabel
def loadTestData():
l=[]
with open('test.csv') as file:
lines=csv.reader(file)
for line in lines:
l.append(line)#28001*784
l.remove(l[0])
data=array(l)
return nomalizing(toInt(data)) # data 28000*784
#return testData
from sklearn.ensemble import RandomForestClassifier
def RFClassify(trainData,trainLabel,testData):
nbClf=RandomForestClassifier(n_estimators=100)
nbClf.fit(trainData,ravel(trainLabel))
testLabel=nbClf.predict(testData)
saveResult(testLabel,'RF_Result.csv')
return testLabel
def saveResult(result,csvName):
with open(csvName,'wb') as myFile:
myWriter=csv.writer(myFile)
myWriter.writerow(["ImageId","Label"])
index=0;
for i in result:
tmp=[]
index=index+1
tmp.append(index)
tmp.append(i)
#tmp.append(int(i))
myWriter.writerow(tmp)
</div>
</div>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。