机器学习第二十七讲:Kaggle → 参加机器学习界的奥林匹克

机器学习第二十七讲:Kaggle → 参加机器学习界的奥林匹克

资料取自《零基础学机器学习》。

查看总目录:学习大纲

关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南


Kaggle详解:超市销量预测竞赛全流程解析\^10-2

Kaggle竞赛的权威性

  • 全球影响力:Kaggle是全球最大的数据科学社区和竞赛平台,拥有超过1200万开发者、学者及企业团队。其竞赛吸引了全球各地的数据科学家和机器学习爱好者,参赛者来自不同的国家和地区,具有广泛的国际影响力。
  • 行业认可度:Kaggle竞赛在数据科学和机器学习领域具有极高的认可度,其竞赛结果和参赛者的表现受到业界和学术界的广泛关注。许多知名科技公司,如Google、Facebook、Microsoft等,都在Kaggle上举办过数据挖掘比赛,这进一步提升了Kaggle竞赛的权威性和影响力。

以"超市月度销量预测"竞赛为例,结合买菜、会员日促销等生活场景,展示完整Kaggle参赛流程:
报名竞赛 下载数据 分析销售规律 处理节假日数据 训练预测模型 提交结果 优化模型

一、数据初探(第三章)

销售数据分析四步法:

python 复制代码
import pandas as pd
import matplotlib.pyplot as plt

# 读取数据(类似查看超市进货记录)
sales_data = pd.read_csv('/kaggle/input/supermarket-sales/sales.csv')  # [^7-1]

# 可视化分析(发现周末销量激增)
plt.plot(sales_data['日期'], sales_data['销量'])  # 每周六出现波峰 [^2-2]

关键特征矩阵:

特征 处理方式 章节引用
温度 标准化处理\^4-1 第四章第二节
是否节假日 二进制编码\^4-3 第四章第四节
历史销量 滑动窗口平均值\^4章 第四章第三节
促销活动 直接保留原始值\^5章 第五章第一节
二、特征烹饪(第四章)

销量数据加工流水线:
温度标准化 节假日编码 创建周累计销量 添加天气影响

  1. 温度标准化:

    python 复制代码
    from sklearn.preprocessing import StandardScaler
    scaler = StandardScaler()
    sales_data['温度'] = scaler.fit_transform(sales_data[['温度']])  # [^4-1]
  2. 节假日编码:

    python 复制代码
    # 将"春节/国庆"转为1,平常日转为0
    sales_data['节日'] = sales_data['节日'].apply(lambda x: 1 if x != '无' else 0)  # [^4-3]
  3. 创建历史特征:

    python 复制代码
    # 计算前3天平均销量(类似观察近期趋势)
    sales_data['3日平均'] = sales_data['销量'].rolling(window=3).mean()  # [^4章]
三、模型训练(第五章)

多模型对比策略:
基础模型 线性回归 决策树 模型融合

代码实现:

python 复制代码
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import cross_val_score  # [^8-2]

# 线性回归训练(类似画销售趋势线)
lr = LinearRegression()
print(cross_val_score(lr, X, y, cv=5).mean())  # 交叉验证[^8-2]

# 决策树训练(类似多条件判断)
tree = DecisionTreeRegressor(max_depth=5)
tree.fit(train_X, train_y)  # [^5-2]

模型对比表:

模型 MAE误差 训练时间 章节知识点
线性回归 23.5 0.8s 第五章第一节\^5-1
决策树 18.7 1.2s 第五章第三节\^5-2
随机森林 15.3 3.5s 第七章第一节\^7-1
四、结果优化(第八章)

三级提升方法:

  1. 添加周末特征:

    python 复制代码
    sales_data['周末'] = sales_data['日期'].dt.weekday.apply(lambda x: 1 if x >=5 else 0)
  2. 网格搜索调参:

    python 复制代码
    from sklearn.model_selection import GridSearchCV
    params = {'max_depth': [3,5,7], 'min_samples_split': [2,5]}  # [^8-3]
    grid = GridSearchCV(tree, params, cv=5)
  3. 正则化处理:

    python 复制代码
    from sklearn.linear_model import Ridge
    ridge = Ridge(alpha=0.5)  # 控制模型复杂度[^8-4]
五、完整参赛示例
python 复制代码
# 超市销量预测完整流程(含数据预处理、建模、提交)
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.preprocessing import OneHotEncoder

# 数据读取(相当于拿到进货记录)
train = pd.read_csv('/kaggle/input/supermarket-sales/train.csv')
test = pd.read_csv('/kaggle/input/supermarket-sales/test.csv')

# 处理天气数据(晴天=1,雨天=0)
weather_mapping = {'晴':1, '雨':0}
train['天气'] = train['天气'].map(weather_mapping)  # [^4-3]

# 添加温度影响分档
train['温度区间'] = pd.cut(train['温度'], bins=5, labels=False)  # [^4章]

# 选择关键特征
features = ['温度', '节日', '周末', '促销活动']
X = train[features]
y = train['销量']

# 训练随机森林(类似综合多个店员经验)
model = RandomForestRegressor(n_estimators=200)  # [^5-2]
model.fit(X, y)

# 生成提交文件
test_pred = model.predict(test[features])
submission = pd.DataFrame({'ID': test['ID'], '销量': test_pred})
submission.to_csv('submission.csv', index=False)  # [^10-2]
六、竞赛进阶技巧

Kaggle四大法宝:
40% 30% 20% 10% 重要技术分布 特征工程 模型集成 参数调优 数据分析

新手避坑指南:

  1. 避免数据泄露 → 不要用未来数据预测过去(如用全量数据计算均值)\^8-2
  2. 理解评估指标 → 选择MAE还是RMSE影响优化方向\^8-1
  3. 学习优秀方案 → 在Kaggle的Kernel区查看金牌解法\^10-2

特征增强示例:

原始特征 增强方法 效果提升
日期 提取"月份"和"周数" +3%
温度 添加"温差"特征 +2.5%
历史销量 计算7日移动平均 +4%

目录:总目录

上篇文章:机器学习第二十六讲:官方示例 → 跟着菜谱学做经典菜肴


\^2-2《零基础学机器学习》第二章数据分析

\^4-1《零基础学机器学习》第四章标准化

\^4-3《零基础学机器学习》第四章编码处理

\^4章《零基础学机器学习》第四章特征工程

\^5-1《零基础学机器学习》第五章线性回归

\^5-2《零基础学机器学习》第五章树模型

\^7-1《零基础学机器学习》第七章工具使用

\^8-1《零基础学机器学习》第八章评估指标

\^8-2《零基础学机器学习》第八章交叉验证

\^8-3《零基础学机器学习》第八章参数调优

\^8-4《零基础学机器学习》第八章正则化

\^10-2《零基础学机器学习》第十竞赛指导

相关推荐
嘉行文5 小时前
传统机器学习与深度学习的特点与选择
人工智能·深度学习·机器学习
咕泡科技5 小时前
深度学习碾压机器学习?经典机器学习是否真的无用了?从LLM底层逻辑到工业落地全景解析
人工智能·深度学习·机器学习·llm·nlp
饼饼学习空间智能6 小时前
机器人规模化部署平台怎么选?Fleet、VDA 5050、多机器人调度与运营闭环解析
大数据·深度学习·机器学习
腾讯云大数据6 小时前
腾讯云AI Native数据平台功能发布合集【9月】
人工智能·腾讯云
谢客诚科技6 小时前
镀膜脆性薄片,不能接触镀膜面,脆性薄片搬运选伯努利还是边缘承靠式末端模组?
人工智能·机器人
我喜欢就喜欢6 小时前
纳米 AI 搜索实战应用场景指南
人工智能
GlobalInfo6 小时前
上新 | 全球及中国反无人机综合防御系统行业研究报告(2026版):市场现状、行业前景与占有率分析
人工智能·无人机
9i编程6 小时前
6. 带 AI 从零搭低代码平台·踩坑实录:实测与大回归,实操又跑偏逐条清零
人工智能·openai·ai编程
IT_陈寒6 小时前
为什么你应该学习Java?
前端·人工智能·后端