这篇文章主要讲下Kaggle要怎么整活
我们首先进入Kaggle官网,注册自己的账号,然后选中左方的Compete找到Digit Recognizer这个比赛并参加。
接下来,我们可以看到
kaggle competitions download -c digit-recognizer
这样一行命令,这行命令的作用是通过kaggle的api直接下载kaggle的数据集,不得不说,这点确实要比天池做的好,一套齐活了,首先我们要安装下kaggle的接口,做法也简单。
pip3 install -i https://pypi.douban.com/simple kaggle
这样一来就安装好了kaggle的接口,我们就直接把数据集给下载过来吧,下载之后,我们用下面的指令解压一下数据集。
unzip digit-recognizer.zip
接下来我们会看到解压后的三个文件,分别对应训练集,测试集和提交样本,训练集就不解释了,测试集是没有label的,需要我们把测试集的label结果算出来,然后以提交样本的格式来提交csv文件:
sample_submission.csv 提交样本
test.csv 测试集
train.csv 训练集
数据格式一般会在比赛的data页里面声明,
我们看下这个比赛的data页,我们可以知道训练集的设计是采用了第一列标签页,后面特征的方式,同样的,我们也可以看到测试集的数据格式,拥有了数据集之后,我们就可以进行下面一步的计算了。这里由于主要是介绍Kaggle怎么玩,我们不会把太多的时间花费在算法设计上,我们这里就用sklearn里面的随机森林。(其实比较好的方法是先设计一个网络结构计算偏移,然后再设计一个branch识别偏移后的图像,但是这里为了快就不追求成绩了)
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
def read_train_file(filename):
data = pd.read_csv(filename)
data = data.to_numpy()
Y = np.transpose(data[:, 0])
X = data[:, 1:]
return X, Y
def read_test_file(filename):
data = pd.read_csv(filename)
data = data.to_numpy()
return data
def split_train_dataset(X, y):
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
return X_train, X_test, y_train, y_test
def updatetosubmission(y):
pass
def train_and_evaluate(X, y):
clf = RandomForestClassifier()
X_train, X_test, y_train, y_test = split_train_dataset(X, y)
clf.fit(X_train, y_train)
y_result = clf.predict(X_test)
accuracy = np.sum(y_test == y_result)/y_test.shape[0]
print("accuracy: %r"%(accuracy))
def train_and_submit_test(trainX, trainY, testX):
clf = RandomForestClassifier()
clf.fit(trainX, trainY)
result = clf.predict(testX)
result = np.transpose(result)
df = pd.DataFrame(result,columns=["Label"])
df.index = df.index + 1
df = df.to_csv("submission.csv")
def main():
train_X, train_y = read_train_file("train.csv")
test_X = read_test_file("test.csv")
train_and_submit_test(train_X, train_y, test_X)
if __name__ == '__main__':
main()
这份代码,为了方便我直接用了index,但实际上写的时候最好加上ImageId这一列,我是后面手动输入了这个单词,接下来我们只需要直接提交结果就可以了。
点击提交按钮把自己生成的csv文件给提交上去就可以了,同时也可以通过jump to your position in the leaderboard看到自己的比赛结果,欢迎来到召唤师峡谷,您已经完成新手教程(好像串台了)。