资源简介
python语言实现kaggle中的数字挖掘入门实例数字识别,附代码用到的数据与算法运行得到的结果,算法运行时间大概为4小时左右,主要是因为knn算法计算量较大。
代码片段和文件信息
#-*-coding:utf-8-*-
import sysos
import csv
from numpy import *
import operator
path=sys.path[0]
def loadTrainData():
trdata=list()
with open(path+‘/train.csv‘) as file:
lines=csv.reader(file)
for line in lines:#839*785
trdata.append(line)
trdata.remove(trdata[0])
trdata=array(trdata)
rowcol=len(trdata)len(trdata[0])
print ‘train‘rowcol
label=[]
data=zeros((rowcol-1))
for i in range(0row):
label.append(trdata[i][0])
for j in range(1col):
data[i][j-1]=trdata[i][j]
label=array(label).reshape(len(label)1)
data=array(data).reshape(len(label)len(trdata[0])-1)
label=toint(label)
data=toint(data)
return nomalizing(data)label
def loadTestdata():
tedata=list()
with open(path+‘/test.csv‘) as file:
i=1
lines=csv.reader(file)
for line in lines:
tedata.append(line)
tedata.remove(tedata[0])
rowcol=len(tedata)len(tedata[0])
print ‘test‘rowcol
data=zeros((rowcol))
for i in range(0row):
for j in range(0col):
data[i][j]=tedata[i][j]
data=toint(data)
return nomalizing(data)
def loadTestResult():
#28001*2
terdata=list()
label=list()
with open(path+‘/sample_submission.csv‘) as file:
lines=csv.reader(file)
for line in lines:
terdata.append(line)
terdata.remove(terdata[0])
rowcol=len(terdata)len(terdata[0])
print ‘test‘rowcol
for i in range(0row):
label.append(terdata[i][1])
label=array(label).reshape(len(label)1)
return toint(label)
def nomalizing(array):
mn=shape(array)
for i in xrange(m):
for j in xrange(n):
if array[i][j]!=0:
array[i][j]=1
return array
def toint(array):
mn=shape(array)
print mn
newdata=zeros((mn))
for i in xrange(m):
for j in xrange(n):
newdata[i][j]=int(array[i][j])
return newdata
def classify(inX dataSet labels k):
inX=mat(inX)#1*28000
dataSet=mat(dataSet)#42000*784
labels=mat(labels)#1*42000
dataSetSize = dataSet.shape[0] #42000
diffMat = tile(inX (dataSetSize1)) - dataSet # 将数组inX作为元素构成42000*784的矩阵,即将inX重复42000遍,并与dataSet相减,求出inX与每一个train向量之间的距离
sqDiffMat = array(diffMat)**2 #对矩阵中的每个元素求平方
distances = sqDiffMat.sum(axis=1)#对矩阵中的每一行求和,得到42000*1的矩阵
#distances = sqDistances**0.5
sortedDistIndicies = distances.argsort()#对距离矩阵由小到大排序,得到排序矩阵,其中存储每个值的索引
classCount={}
for i in range(k):
voteIlabel = labels[0sortedDistIndicies[i]]
classCount[voteIlabel] = classCount.get(voteIlabel0) + 1
sortedClassCount = sorted(classCount.iteritems() key=operator.itemgetter(1) reverse=True)
return sortedClassCount[0][0]
def saveResult(result):
l=array(result).reshape(len(result)1)
rowcol= shape(l)
l1=[]
for i in range(row):
for j in range(col):
l1.append(int(float(l[i][j])))
print l1
j=1
with open(‘result3.csv‘‘wb‘) as file:
myW=csv.writer(file)
tmp=[]
tmp.append(‘ImageId‘)
tmp.append(‘Label‘)
myW.writerow(tmp)
for i in l1:
tmp=[]
tmp.append(str(j))
j+=1
tmp.append(i)
myW.writerow(tmp)
#with open(path+‘/re
相关资源
- python智能垃圾分类串口控制arduino.zi
- ArcGIS平台中的Python开发
- Python编程案例教程
- 最新Python离线帮助文档PDF格式-Python
- 用Python写网络爬虫PDF&源码.rar
- python pandas 手册
- tesseract-ocr以及中文包
- Python操作Word、EXCELACCESS
- Python爬虫教学PPT
- Python 自动化测试框架-pytest.pdf
- Python算法教程_中文版高清带书签
- 基于django的博客系统源码_python学习项
- 千峰凯哥python第4章 Tornado
- Hands-On Transfer Learning with Python
- 吴恩达机器学习课后作业python代码
- 最基础的Python入门课件和代码-整理
- 机器学习字母分类-python
- python Django 学生会管理系统.zip
- OpenCV3计算机视觉_Python语言实现 _刘波
- 自动化测试实战基于Python语言(虫师
- 灰帽python (Gray Hat Python) 中文版
- python3中文识别词库模型
- OpenCV3计算机视觉Python语言实现源代码
- 微博情感分析_python代码
- opencv_python‑3.4.3‑cp37‑cp37m‑win_amd
- 吴恩达机器学习编程作业python3版本
- Python Unix和Linux系统管理指南
- opencv_python-3.4.2-cp37-cp37m-win_amd64.whl
- Michael Nielsen 的《Neural Networks and Deep
- Python Data Science Handbook(英文pdf带目录
评论
共有 条评论