kaggle 入门
来源:互联网 发布:淘宝原价和现价步骤 编辑:程序博客网 时间:2024/06/05 15:10
kaggle 入门
1,注册kaggle账号
以前从来没有接触过kaggle,有次在某乎上看到还有这东西,于是注册了账号准备试试。
注册的时候邮件验证显示不了验证码,在网上看到说是要翻墙才能看到。于是让能翻墙的同学给我填的验证码。
注册之后就随便摸索一下里面的布局和内容
找一个经典入门项目开始分析,选了个Digit Recognizer,因为在机器学习实战上看到过这个案例,就选了它
点进去是详细介绍,先看看介绍,然后看看数据格式和内容,在把数据下载到本地
使用算法:KNN
算法,python,数据处理都是第一次接触,写的很是low
一共三个数据文件,
- train.csv是训练数据,数据一共是28000*875,第一行是数据描述,第一列是label,将第一行去掉,得到280001*784的数据,第一列拿出来作为trainLabel,其余的是trainSet
- test.csv是测试数据,里面没有label
- sample_submission.csv是提交格式,提交结果就按照这个格式,第一行是ImageId,Label,第一列是序号,第二列为预测结果。
读数据
#csv格式def loadTrainDataSetCsv(): dataMat = [] file = open('train.csv') #读掉第一行,下次再引用file的时候,将file的文件指针指向第二行开始的文件. file.readline() lines = csv.reader(file) for line in lines: dataMat.append(line) dataMatSet = array(dataMat) labelSet = dataMatSet[: , 0] trainSet= dataMatSet[: , 1:] file.close() return autoNorm(toInt(trainSet)),toInt(labelSet)
归一化特征值
#def toInt(dataSet): dataSet= mat(array) m, n = shape(array) newDataSet = zeros((m, n)) for i in range(m): for j in dataSet(n): newDataSet[i, j] = int(dataSet[i, j]) return newDataSet
autoNorm()是将数据中大于0的数字转化为1,toInt是将数据转为int类型,因为csv读出的每行数据放到一个list里,里面是字符串类型的。 接下来是test.csv,该文件第一行没有标签,共28000*784
def loadTestDataSetCsv(): dataMat = [] file = open('test.csv') lines = csv.reader(file) for line in lines: dataMat.append(line) dataMatSet = array(dataMat) print(shape(dataMatSet)) file.close() return autoNorm(toInt(dataMatSet))
sample_submission.csv是提交格式,只需要看看格式就行,将最后的结果保存成为该文件格式
KNN核心代码 ,这个在网上和很多书上都有
#K-近邻算法def classify(inX, dataSet, labels, k): inX = mat(inX) dataSet = mat(dataSet) labels = mat(labels) dataSetSize = dataSet.shape[0] #距离计算 diffMat = tile(inX, (dataSetSize, 1)) - dataSet sqDiffMat =array(diffMat) **2 sqDistances = sqDiffMat.sum(axis=1) distances = sqDistances**0.5 sortedDistIndicies = distances.argsort() classCount= {} for i in range(k): #选择距离最小的k点 voteIlabel = labels[0,sortedDistIndicies[i]] classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1 sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True) return sortedClassCount[0][0]
整体运行
def handwritingClassTest(): #加载训练数据 trainDataSet, trainLabelSet = loadTrainDataSetCsv() #加载测试数据 testDataSet = loadTestDataSetCsv() m, n = shape(testDataSet) errorCount = 0 resultList = [] for i in range(m): classifierResult = classify(testDataSet[i], trainDataSet,trainLabelSet,5) classifierResult=int(classifierResult) resultList.append(classifierResult) #打印每个测试结果 print("the classifier came back with : %d " % classifierResult) #保存结果 saveResult('result.csv',resultList)
#保存结果def saveResult(fileName,result): fr = open(fileName,'w') result1 = str(result) #myWriter = fr.writelines(result1) m = 0 for i in result: temp=[] temp.append(i) m += 1 fr.write(str(m)+','+str(i)+'\n') fr.close()
第一次提交结果不太好,训练数据切割
第二次检查一番数据,发现加载数据的时候切割错了,改正后继续运行
结果如下
阅读全文
0 0
- Kaggle入门
- Kaggle入门
- kaggle 入门
- Kaggle入门
- kaggle入门
- Kaggle入门
- kaggle 入门
- kaggle 入门
- Kaggle 入门 Crime
- kaggle 入门 rossmann randomForest
- kaggle 入门 rossmann xgboost
- Leaf Classification--kaggle入门
- kaggle入门digits Recognizer
- Kaggle入门:Digit Recognizer
- 【学习指导】Kaggle入门
- Kaggle如何入门?
- Kaggle入门 (Titanic XGBoost)
- 笔记-Kaggle竞赛入门
- 使用TortoiseGit为github账号添加SSH keys
- 【观察】解读浪潮云遇上“云上云” 技术赋能驱动数字经济落地
- Angular最新教程-第十节 路由三(路由器钩子函数、路由守卫)
- vue+swiper 轮播
- js和php 在数组处理上的不同
- kaggle 入门
- SSH无密码登录
- php2python
- 8.leetCode627: Swap Salary
- 用jquery动画隐藏显示文本框
- Topcoder SRM 721 Div.2 A. FlightDataRecorder
- Android 在代码中安装 APK 文件
- ffmpeg滤镜专题2-高斯模糊
- Android 编码规范