机器学习-Kaggle竞赛-Digit recognizer

第一次接触Kaggle比赛。从练习区开始~~~
做了一个最简单的手写数字识别练习(Digit Recognizer)。
尝试了用KNN,bayes,Logistic Regression,svm。
首页拿到练习数据,digit-recognizer-data
这里写图片描述
下载train.csv test.csv文件
train.csv
train.csv里面是42000*785的数据
每一行代表一个图片~,由784个像素组成(0~255)。
第0列是真实的数字值。
test.csv
train.csv里面是28000*784的数据
比训练数据少了第0列。所以要拿来预测~

KNN

首先将每个图片的像素值都变成010010010形式,即像素值大于0的变成1.
将train.csv变成42000*784的矩阵。

def csv2vector(filename,index=0):
    fr = open(filename)
    filelines = fr.readlines()
    del filelines[0]
    lenlines = len(filelines)
    returnVect = zeros((lenlines,784))
    labellist = [0]*lenlines
    for i in range(lenlines):
        lineStr = filelines[i]
        linearr = lineStr.split(',')
        if len(linearr)< 784:
            continue
        labellist[i] = linearr[0]
        for j in range(index,len(linearr)):
            if linearr[j] != '0':
                returnVect[i,j-index] = 1
            else:
                returnVect[i,j-index] = 0
    fr.close()
    return returnVect,labellist

然后拿一部分训练数据当测试数据,测试下正确率有多少。

>>> trainSet,trainlabel = knn.csv2vector(“train.csv”,1)
>>> knn.testrun(trainSet[20000:30000],trainlabel[20000:30000],trainSet[0:20000],trainlabel[0:20000])

这里选取2w做训练数据,1w当测试数据,查看效果~。
这里要跑好一会的~。如果效果还可以,然后就可以直接上 test.csv数据,然后提交结果。(如何提交下面再讲)。

def testknn(testSet,testlabel,trainSet,trainlabel):
    start = time.clock()
    num=0
    for i in range(len(testSet)):
        tmp =  classify0(testSet[i],trainSet,trainlabel,3)
        if tmp != testlabel[i]:
            num = num + 1
            print tmp,",",testlabel[i]

    print "error:",num
    print "error percent:%f" % (float(num)/len(testSet))
    end = time.clock()
    
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值