Kaggle案例——用python从进网站到获得评测结果

news/2024/4/27 11:46:38/文章来源:https://blog.csdn.net/weixin_34150224/article/details/88803933

最近写了Kaggle的一个playground项目——预测科比投篮是否命中https://www.kaggle.com/c/kobe...,主要使用python的pandas和sklearn包。 这里和大家分享一下。

首先就是进入Kaggle官网https://www.kaggle.com/,Kaggle是一个专门数据竞赛的网站。经常会有一些有奖的竞赛,当然入门也可以选101和playground的有趣的例子进行练习。官网给出的经典例子就是预测Titanic乘客的生存概率。

当然第一步就是注册。

注册后就可以直接选择自己想参加的竞赛了,本文都以预测科比投篮命中为例。注册之后我们点击上方的Competions,也就是图中上方第一个红框来进入竞赛选择页面。接着点击下图第二个红框ALL来显示所有的竞赛。然后我们可以选第三个红框,里面有getting started(101)和playground。都是难度稍低的竞赛很适合练习。

clipboard.png

竞赛选择页面

其中在gettind started里面的项目应该都是有tutorials的,都会有相关的数据处理和模型选择的教程。https://www.kaggle.com/c/tita... 想做数据处理的也可以先看这个例子。我们仍以预测科比投篮为例,从all的playground里找到(https://www.kaggle.com/c/kobe... 。

clipboard.png

进去之后大概就是这个样子的,我们点击Data,进入数据页面,上面data.csv.zip是总的数据,包括训练集和测试集。下面的sample_submission....是提交结果的demo。

这里给之前没接触过机器学习的同学讲解一下什么是训练集和测试集,了解机器学习的请跳过这三段。训练集是用来训练你的机器学习模型的。就比如我给了你一堆猫和狗的图片,并且我给每张图片都标记上了这张图是‘猫’还是‘狗’。而我们的目的是为了解决如果给你很多(比如1亿张)新的猫或狗的图片,而且没有标记到底是猫还是狗,你一定懒得去做(对,我不相信有人能这么有毅力!!!)会想让机器解决。但机器学习,你也要教它一些事实,比如长得像图片A的就是狗,长得像图片B的就是猫。也就是把图片和正确的标记给机器,让机器能够根据你给他的这些数据来学习到一个判别方法,而给它的‘图片和正确的标记’就是训练集。

给了训练集之后机器是学习了,但它学的好不好呢?这就需要用到测试集,测试集也包含图片和正确的标记。这就好比我们学生时代的考试,你要去考考机器,看它学的怎么样,从而才知道你训练的好不好。但测试集不能和训练集重复,防止它死记硬背,就像当年考数学,老师会把题修改一下让你做一样。

所以我们一般会将得到的所有标记好的图片(包含对应正确标记)分为两组大致9比1的样子,分别是训练集和测试集。来对机器进行训练和测试。

回到正轨,解压上面下载的文件,打开csv文件。我们会看到——

clipboard.png

除了表头,一共有30697行,而且有数字有字符串,看得头都大了,怎么办!

还好我们有电脑,有python,有别人写好的工具包pandas!

第一步,我们进入python,在命令行输入python

第二步,导入pandas

>>import pandas as pd

如果报错,说明你没安装pandas,去安装吧

第三步,载入csv文件并查看数据,下面的文件名写你自己的文件路径

>>data = pd.read_csv('data/data.csv')>>print data.info()

打印结果如下,可以看出显示了csv文件的各列名称,数量,是否全空,类型(这里不是数字都是object),还有一些统计信息等等。

其中shot_made_flag就是投进与否,也就是结果/标签/分类。1表示投进,0表示没进。

clipboard.png

第4步,我们可以查看数值类数据的一些分布情况,这里只是部分。

>>print data.describe()

clipboard.png

第5步,查看非数值类数据分布

>>print data.describe(include=['O'])

clipboard.png

但是这样我们还是不知道这些离散值有哪几类,比如shot_type到底一共有哪几种呢?像这样。

>>print set(data['shot_type'].tolist())

打印结果:set(['3PT Field Goal', '2PT Field Goal'])

如果你还想看每类下面的统计数字。再像这样。

>>> print data['shot_type'].value_counts()2PT Field Goal 242713PT Field Goal 6426Name: shot_type, dtype: int64

总之,pandas的功能超乎你想象。

不过只能看数据分布是不够的,机器现在还是只能识别数字,所以上面的object类型的数据,我们还是要转换成数字。这里我们用最简单的映射办法来实现,映射按照次数来实现,比如上面的‘shot_type’,我们按照出现的次数从0向上排,比如这里2分球我们认为是0,3分球认为是1。

除了这些问题之外,我们还发现有些数据是没有用处的,比如team_id、team_name都是湖人,没什么用,还有就是shot_distant和loc_x、loc_y其实是有重复信息的。所以我们进行了筛选和处理了一部分,这一步在数据处理术语叫数据预处理。从而得到一个新的数据表pretreated_data(pandas的DataFrame格式)。代码地址https://github.com/Cauchyzhou... 。

clipboard.png

预处理后的数据

接着我们还要拆分数据到训练集和测试集,注意保存的路径也要根据自己的实际情况来。

PS:这里的测试集没有结果/标签,是因为我们的测试是直接将预测的结果传到网站上,网站会返回一个预测结果与真实结果的误差。

>>notnull = pretreated_data['target'].notnull()>>isnull = ~ notnull>>train_set = pretreated_data[notnull]>>predict_set = pretreated_data[isnull]>>train_set.to_csv('data/train_set.csv')>>predict_set.to_csv('data/predict_set.csv')

到这里,数据预处理基本就结束了。

接着我们就要用训练集,训练了,我们这里使用传统的机器学习方法,而传统方法,最好的就是用sklearn这个工具包,全名scikit-learn。官网地址:http://scikit-learn.org/stable/

这个包有多粗暴呢,就是粗暴到你可以不了解任何算法细节,直接调用就好了(当然还是推荐理解一下算法,毕竟没有最好的算法,只有最合适的算法)

这里我们就用最简单的决策树来预测结果。

>>from sklearn import tree>>import pandas as pd>>data = pd.read_csv('data/train_set.csv')>>X = data.drop('target',axis=1) #去掉结果/标签列>>Y = data['target'] #训练集的结果>>clf = tree.DecisionTreeClassifier()>>clf.fit(X,Y)

经过上面几句话,我们就获得了训练好的模型clf。接着我们就可以用这个模型来预测测试集的结果了。

>>predict = pd.read_csv('data/predict_set.csv')>>X_ = predict.drop('target',axis=1)>>out = clf.predict(X)

这样就预测好了,是不是很粗暴!接下来保存结果。

>>OutDf = pd.DataFrame(index= predict['shot_id'].values,columns=['shot_made_flag'])>>OutDf['shot_made_flag'] = out>>OutDf.to_csv('DT_out.csv')

好了,这样我们整体的一个机器学习的简单项目就完成,但我们还是要看一下效果。我们生成的csv文件是这样式的~第一列是shot_id,第二列是shot_made_flag

clipboard.png

我们需要在线提交,这里保存的结果格式是点击红框(这里可能不太一样,因为我曾经提交过,不是第一次提交)

clipboard.png

然后我们就会进入到这个页面,找到绿色背景的数字1那里,我们把自己的csv文件拖进去,就会出现2那里的损失得分,越小越好,因为我用的是最简单的决策树,只能处理线性问题,显然这个问题并不是线性的,所以得分很差。

因为这个竞赛已经结束了,所以不会有排名,只能进到3Leaderboard根据自己的得分来得出自己的排名。

clipboard.png

按照123步查看自己训练的模型结果

这样,我们的一个整体的kaggle竞赛的流程就结束了,没想到码博客还是挺累的,而且简书修改博客竟然会导致重新上传图片。写了2个半小时,改了半个小时格式。写的还是比较仓促,希望大家多提意见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_811858.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PageAdmin CMS网站建设教程:自动任务执行时间设置

PageAdmin Cms发布文章时候有一个上线时间设置和下线时间设置,网站编辑人员可以利用这个功能来实现定时发布,在信息发布界面,如下图: 设置后就会自动加入定时任务中,注意这个功能需要再系统设置>>自动任务执行间…

10种AJAX/JavaScript特效实例让你的网站更吸引人

今天的话题是如何改进自己网站的界面或提高网站的视觉体验,从而让用户记忆犹新。我们有三种主要的方法(从难到易):自己动手写脚本;使用类似于jQuery和mooTools的JavaScript框架(可以让编写代码变得更容易些);使用能工作于现有的JavaScript框架下的提前预置好的脚本或…

国内在线学习网站汇总

2019独角兽企业重金招聘Python工程师标准>>> 一、什么是在线学习网站 在线学习是通过计算机互联网,或是通过手机无线网络,在一个网络虚拟教室进行网络授课、学习的方式。在线学习网站(社区)跟多是通过互联网的方式实现…

大型网站技术架构(四)网站的高性能架构

2019独角兽企业重金招聘Python工程师标准>>> 网站性能是客观的指标,可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。 1、性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间,指从发出请求到最后收到响应数据所需要的时…

推荐几个高质量图片网站,再也不怕没图装X了

这几个图片网站都是高质量的图片网站,建议收藏! 找个高逼格的图片发票圈,不再难了。 Unsplash 网址:https://unsplash.com Unsplash是一个免费高质量照片的网站,照片都是真实的摄影,照片分辨率也很大,全是生活中的景象作品,清新的…

关于最近学习的自动登录网站技术以及post get请求

下面要列出2段内容,一个是目前做的工作,一个是之后要继续进行的工作.(以后完成一部分工作就将后者放到前者内容里面去更新) 1.目前进行的工作: 其实模拟自动登录就是用httpwatch软件进行抓包,,找到你想要的页面,分析post get请求,然后用程序进行模拟就好了,难点就是这个分析抓包…

IOS破解软件,比较全的网站。

转载于:https://blog.51cto.com/14259888/2369621

mouseenter和mouseover的区别

mouseover:当鼠标移入目标元素或者移入目标元素的子元素,都会触发该事件。所以有一个重复触发,冒泡的过程。对应的一出事件mouseout。 mouseenter:当鼠标移入目标元素时(不包括子元素),会触发该…

好久没有更新了,上传一个网站上通用的验证效果的函数吧。

之前觉得在注册表单的时候,当填写表单失去焦点进行验证的效果很酷,自己也经历了很多的版本的改进,不过都是JS的代码,现在感觉已经成形了。所以发到网上让大家PK一下。 1/**//* 2 函数名:检验表单的函数 3 作者&a…

列出一些当前所见到过的基于sharepoint的漂亮的internet网站(update 2007-10-18)

老外的网站:传说中的夏威夷航空网站 一个食品网站一个提供解决方案的公司门户 update(10-18) 几个非常不错的 sharepoint网站 中文的: sharepoint爱好者易联工作室 sharepoint中国台湾的一个sharepoint教学网 update (2007-10-16) KenTCj的个人网站 转载…

为什么一个网站的资源会存在于多个域名中?

转自:http://www.toutiao.com/i6432298910575755777/ 大致可以这样理解,为什么一个网站的资源会存在于多个域名中? 在很多的网站中,如果我们打开开发者工具查看source选项,会发现下面会有很多个域名。例如某度首页的so…

Step by Step WebMatrix网站开发之二:使用WebMatrix(1)

第一次运行WebMatrix会看到如图1所示的窗口。 图1 第一次运行WebMatrix显示的窗口 我的网站 进入“我的网站”可看到自己设计过的网站。 从Web库创建网站 可以从“从Web库创建网站“中理由网络上开源的网站系统创建网站,如名气比较响的WordPress、phpwind等…

自定义事件和windows phone访问网站取得数据

昨天看了一位园友的自定义事件的文章,我以前学习过这方面的内容,但在实际工作中基本没用过自定义事件,前天就边看着,自己写了写代码把这个知识点复习了。下面上代码 事件类代码 public class EvevtClass:EventArgs {public st…

减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)...

在网站开发过程中,对于页面的加载效率一般都想尽办法求快。那么,怎么让才能更快呢?减少页面请求 是一个优化页面加载速度很好的方法。上一篇博文我们讲解了 “利用将小图标合成一张背景图来减少HTTP请求”,那么,这一篇…

请求的站点不可用或无法找到怎么解决_seo优化怎么做能快速被收录

原标题:seo优化怎么做能快速被收录网站在做seo优化时,不被收录是一件头疼的事,网站不被收录会影响接下来的seo优化工作,无法做关键词优化,但是网站被收录都有一个时间过程,很少有网站秒收录的,快…

利用github pages做免费静态网站个人免费域名空间

如图所示点击加号新建一个项目,然后填写 xxx.github.ip 为项目名 xxx表示你的账号 别填错了,乱填也无法开通。 必须是public属性,勾选readme 最后点创建 在项目里新建index.html文件 和CNAM文件 按图示新建即可 为保能快速开通 建议加上CNAM 如果不知道怎…

如何把自己的网站部署在网上_如何制作自己的网站,你需要看看这篇

在这个互联网时代,有许多的人已经有了属于自己的博客,自己的网站,你是不是都会羡慕不已呢?有了自己的网站就可以发表一些自己的文章,好的文章也可以给你的网站带来不少的粉丝。今天八爪网就给大家分享如何制作自己的网…

技术干货:使用静态缓存提升网站性能的五种方法!

摘要: 静态缓存,一般指web类应用中,将图片、js、css、视频、html等静态文件/资源通过磁盘/内存等缓存方式,提高资源响应方式,减少服务器压力/资源开销的一门缓存技术。本文主要通过五个方面展开,跟着小编一…

ASP.NET学习(1)-网站配置文件读取/保存

虽然做了几个网站,但是一直有个问题困扰我,就是网站配置文件的保存问题,网上有人说保存在数据库,有人说保存在XML中。保存在数据库中是个方便的选择,但是有个问题,每张表都应该有个主键,如果网站…

Matomo – 搭建一个属于自己的网站统计分析站点

https://www.sooele.com/index.php/2018/03/18/%E3%80%8E%E6%95%99%E7%A8%8B%E3%80%8Fmatomo-%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AA%E5%B1%9E%E4%BA%8E%E8%87%AA%E5%B7%B1%E7%9A%84%E7%BD%91%E7%AB%99%E7%BB%9F%E8%AE%A1%E5%88%86%E6%9E%90%E7%AB%99/地址 http://www.bigf.inf…