首页 > 编程知识 正文

kaggle入门,eccv2021截稿时间

时间:2023-05-05 05:01:46 阅读:155408 作者:1023

Kaggle决定将他们每月的表格比赛持续到2022年。 这对我们来说是非常好的消息。 另外,Kaggle表示他们已经考虑到了大家的评论,这意味着他们将不再使用巨大到让系统崩溃的数据集,希望这次1月的比赛数据集不是很大。

我认为2022年1月的竞赛问题是对涵盖几年的销售额的预测。 这可以通过机器学习构成时间序列。

以下屏幕快照包含一些问题描述,其中包含与此竞赛问题相关的代码

本文使用HistGradientBoostingRegressor进行测试。

首先,运行程序所需的库、numpy、Pandas、matplotlib、seaborn:-

然后,使用Pandas读取csv并将其转换为df

用seaborn分析目标。 [‘num _ sold’]需要预测销售额。 当我分析它时,你会发现它很偏颇,有一些异常值。 -

然后我决定删除异常值。 我希望预测能像这样得到改善。 以下屏幕截图中的代码是我用于删除异常值的代码。 虽然本文没有记录,但将乘数改为2.25而不是1.5,发现预测略有改善: -

将异常值转换为null后,检查并删除了这些null值: -

我创建了变量target。 这是用于预测的。

我再次分析目标,删除异常值后,数据列的形状得到了很大的改善: -

我制作了新的df。 此df包含train和test数据: -

除此之外,还删除了id_row。 因为那不是必须的: -

然后,使用pandas处理时间特性。 -

将日期转换为时间戳后,创建一个新列[‘day _ of _ week’],并使用datetime确定该日期属于一周中的哪一天。

然后我排了另一排。 [‘is _ weekend’]判断当天是否为周末: -

然后,将列[‘is _ weekend’]乘以1以将其转换为整数。 -

我使用datetime库创建了“‘year’”、“‘month’”、“‘day’”三个新列。 -

年月日确定后,可以确认哪个日子是假期。 我做的第一件事是确定这一天是否到了12月25日,将这些数据放入布尔列[‘xmas 1’],然后将其转换为整数。 -

然后,使用上述格式检查相关日期是否为12月26日,并将该信息放入新创建的列[‘xmas 2’]中。

我还检查了一天是否在新年,并将这个信息放入了制作的列中。 [‘new _ year’]:-

要找出是不是复活节有点困难。 因为复活节不是固定的日子。 -

将假期放在相应的列中后,使用sklearn创建for循环,并对属于dtype对象的所有列进行顺序编码。 -

然后,使用datetime将日期转换为新创建的列“‘date_num”中的数字,并将该数字转换为整数。 -

然后,删除了“date”和“year”列。 因为这些在进行预测时不会提供有价值的信息。 -

以下定义x、y和X_test变量: y变量是目标,x变量由combi到train的长度组成,X_test变量由combi到train的长度组成。 -

然后,使用sklearn的train_test_split将x和y变量划分为训练和验证集。 -

然后我定义了模型。 在本例中,我们决定使用sklearn的HistGradientBoostingRegressor。 (虽然只使用了默认值,但是如果我也使用了grid_search_cv的话,分数可能会更高。 )

然后我用验证集预测了: -

检查了指标。 理想情况下,分数应该尽可能低。 -

我用matplotlib绘制预测值和真值的关系图: -

然后我在测试集中预测到: -

预测测试集后,可以提交的数据: -

我拿到的分数可以从下面的截图中看出。 -

总之,我只是在一天内完成了这个竞赛问题的程序,但是我可以提高分数,比如更改用于删除异常值的表达式,或者使用GridSearchCV确定要使用的最佳参数。 我可以参加更多的节日活动。

我很高兴使用不会让计算机崩溃的小数据集。

本文的代码可以链接到这里。 https://www.over fit.cn/post/133 e 223 e 59324 f e69 cf 81 f E3 bfc 69 d6b

作者:结实的自行车

xndsl翻译

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。