Part1 内容介绍
在给大家分享知识的过程中,发现很多同学在学习竞赛都存在较多的问题:
而上述问题都是一个竞赛选手、一个算法工程师所必备的。因此我们将从本月组织一次竞赛训练营活动,希望能够帮助大家入门数据竞赛。在活动中我们将布置具体竞赛任务,然后参与的同学们不断闯关完成,竟可能的帮助大家入门。
10 月份的竞赛活动将以以下三个比赛展开:
Part2 活动安排
- 请各位同学添加下面微信,并回复【结构化、CV、NLP】,即可参与。

Part3 积分说明和奖励
为了激励各位同学完成的学习任务,将学习任务根据难度进行划分,并根据是否完成进行评分难度高中低的任务分别分数为 3、2 和 1。在完成 10 月学习后,将按照积分顺序进行评选 Top3 的学习者。
Top3 的学习者将获得以下奖励:
注:
- Coggle 数据科学保留活动期间和结束后修改奖励和规则的权利。
- 如果有违反竞赛规则的情况,Coggle 数据科学保留取消相关参赛者的参与排名的权利。
Part4 结构化赛题学习
赛题介绍
https://tianchi.aliyun.com/competition/entrance/231784/information
赛题以预测二手车的交易价格为任务,数据集报名后可见并可下载,该数据来自某交易平台的二手车交易记录,总数据量超过 40w,包含 31 列变量信息,其中 15 列为匿名变量。为了保证比赛的公平性,将会从中抽取 15 万条作为训练集,5 万条作为测试集 A,5 万条作为测试集 B,同时会对 name、model、brand 和 regionCode 等信息进行脱敏。
评价标准为 MAE(Mean Absolute Error)。

MAE 越小,说明模型预测得越准确。
打卡汇总(满分23)
打卡要求
注:
- 需要使用Python环境下Notebook完成以下任务
(10月5日)任务1:报名比赛,下载比赛数据集并完成读取
- 使用Pandas完成数据集读取(其中zip文件需要解压后读取)
- used_car_sample_submit.csv
- used_car_testB_20200421.zip
- used_car_train_20200313.zip
import pandas as pd
Train_data = pd.read_csv('used_car_train_20200313.csv', sep=' ')
Test_data = pd.read_csv('used_car_testA_20200313.csv', sep=' ')
(10月5日)任务2:对数据字段进行理解,并对特征字段依次进行数据分析
- 分析每个字段的取值、范围(unique)和类型(dtypes)
- 结合比赛页面中具体字段的含义,对字段的取值分布进行分析
- 选择特征字段中与标签强相关的3个字段,绘制其余标签的分布关系图
(10月5日)任务3:对标签进行数据分析,并使用 log 进行转换
(10月11日)任务4:使用特征工程对比赛字段进行编码
https://tianchi.aliyun.com/notebook-ai/detail?postId=95501
Feature+Engineering.pdf0.9MB
- 对数据集中类别字段(取值空间大于2)的进行字段进行onehot操作
from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(handle_unknown='ignore')
X = [['Male', 1], ['Female', 3], ['Female', 2]]
enc.fit(X)
enc.transform([['Female', 1], ['Male', 4]]).toarray()
import pandas as pd
df = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'],
'C': [1, 2, 3]})
pd.get_dummies(df, prefix=['col1', 'col2'])
(10月11日)任务5:使用 Sklearn 中基础树模型完成训练和预测
import numpy as np
from sklearn.model_selection import KFold
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
y = np.array([1, 2, 3, 4])
kf = KFold(n_splits=2)
for train_index, test_index in kf.split(X):
print("TRAIN:", train_index, "TEST:", test_index)
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
- 对标签price按照大小划分成10等分,然后使用StratifiedKFold进行划分
import numpy as np
from sklearn.model_selection import StratifiedKFold
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
y = np.array([0, 0, 1, 1])
skf = StratifiedKFold(n_splits=2)
for train_index, test_index in skf.split(X, y):
print("TRAIN:", train_index, "TEST:", test_index)
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
(10月11日)任务6:成功将树模型的预测结果文件提交到天池
- 使用StratifiedKFold配合随机森林完成模型的训练和预测
- 将多折测试集结果进行求均值,并写入csv提交到天池
(10月25日)任务7:使用 XGBoost 模型完成训练和预测
(10月25日)任务8:成功将 XGBoost 的预测结果文件提交到天池
- 使用StratifiedKFold配合XGBoost完成模型的训练和预测
- 将多折测试集结果进行求均值,并写入csv提交到天池
(10月25日)任务9:使用 LightGBM 模型完成训练和预测
(10月25日)任务10:成功将 LightGBM 的预测结果文件提交到天池
- 使用StratifiedKFold配合LightGBM完成模型的训练和预测
- 将多折测试集结果进行求均值,并写入csv提交到天池
(10月25日)任务11:成功将 LightGBM 的预测结果文件提交到天池
- 使用StratifiedKFold配合LightGBM完成模型的训练和预测
- 将多折测试集结果进行求均值,并写入csv提交到天池
(10月25日)任务11:对 XGBoost、LightGBM 模型进行调参
(10月25日)任务12:使用交叉验证 + Stacking 过程完成模型集成
- 将多折测试集结果进行求均值,并写入csv提交到天池
Part5 CV 赛题学习
赛题介绍
https://challenge.xfyun.cn/topic/info?type=key-points-of-human-face&ch=dw-sq-1
人脸识别是基于人的面部特征信息进行身份识别的一种生物识别技术,金融和安防是目前人脸识别应用最广泛的两个领域。人脸关键点是人脸识别中的关键技术。人脸关键点检测需要识别出人脸的指定位置坐标,例如眉毛、眼睛、鼻子、嘴巴和脸部轮廓等位置坐标等。
给定人脸图像,找到 4 个人脸关键点,赛题任务可以视为一个关键点检测问题。
- 训练集:5 千张人脸图像,并且给定了具体的人脸关键点标注。
- 测试集:约 2 千张人脸图像,需要选手识别出具体的关键点位置。
本次竞赛的评价标准回归 MAE 进行评价,数值越小性能更优,最高分为 0。评估代码参考:
from sklearn.metrics import mean_absolute_error
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
mean_absolute_error(y_true, y_pred)
打卡汇总
打卡要求
注:
- 需要使用Python环境下Notebook完成以下任务
(10月5日)任务1:报名比赛,下载比赛数据集并完成读取
import pandas as pd
import numpy as np
train_df = pd.read_csv('人脸关键点检测挑战赛_数据集/train.csv')
train_img = np.load('人脸关键点检测挑战赛_数据集/train.npy')
test_img = np.load('人脸关键点检测挑战赛_数据集/test.npy')
(10月5日)任务2:对数据集样本进行可视化,统计关键点坐标分布
- 使用opencv 或 matplotlib对人脸进行可视化
(10月11日)任务3:使用 Sklearn 中全连接网络构建简单的关键点回归模型
(10月11日,Keras/Pytorch二选一)任务4:使用 Keras 搭建基础的全连接网络,完成关键点回归
网络结构(输出层是8,且激活函数用relu)
人脸关键点检测-TF.ipynb0.2MB
人脸关键点检测-Pytorch.ipynb0.2MB
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
(10月11日,Keras和Pytorch二选一)任务5:使用 Keras 搭建卷积神经网络,完成关键点回归
(10月11日,Keras和Pytorch二选一)任务6:使用 Keras 预训练模型,修改网络结构完成训练
- 加载ImageNet预训练模型,建议选择ResNet18
- 在训练过程中,每个epoch结尾加入模型存储的过程
(10月11日,Keras和Pytorch二选一)任务7:使用 Pytorch 搭建基础的全连接网络,完成关键点回归
- 导入Pytorch模块,完成基础的MNIST模型训练
(10月11日,Keras和Pytorch二选一)任务8:使用 Pytorch 搭建卷积神经网络,完成关键点回归
(10月11日,Keras和Pytorch二选一)任务9:使用 Pytorch 预训练模型,修改网络结构完成训练
- 加载ImageNet预训练模型,建议选择ResNet18
- 在训练过程中,每个epoch结尾加入模型存储的过程
(10月25日)任务10:训练多个深度学习模型,完成模型集成
(10月25日)任务11:使用伪标签 或 模型蒸馏完成训练和预测
Part6 NLP 赛题学习
赛题介绍
https://tianchi.aliyun.com/competition/entrance/531810/introduction
赛题以匿名处理后的新闻数据为赛题数据,数据集报名后可见并可下载。赛题数据为新闻文本,并按照字符级别进行匿名处理。整合划分出 14 个候选分类类别:财经、彩票、房产、股票、家居、教育、科技、社会、时尚、时政、体育、星座、游戏、娱乐的文本数据。
赛题数据由以下几个部分构成:训练集 20w 条样本,测试集 A 包括 5w 条样本,测试集 B 包括 5w 条样本。为了预防选手人工标注测试集的情况,我们将比赛数据的文本按照字符级别进行了匿名处理。评价标准为类别 f1_score 的均值,选手提交结果与实际测试集的类别进行对比,结果越大越好。
处理后的赛题训练数据如下:
在数据集中标签的对应的关系如下:{'科技': 0, '股票': 1, '体育': 2, '娱乐': 3, '时政': 4, '社会': 5, '教育': 6, '财经': 7, '家居': 8, '游戏': 9, '房产': 10, '时尚': 11, '彩票': 12, '星座': 13}
打卡汇总
打卡要求
注:
- 需要使用Python环境下Notebook完成以下任务
(10月5日)任务1:报名比赛,下载比赛数据集并完成读取
import pandas as pd
train_df = pd.read_csv('train_set.csv', sep='\t', nrows=100)
train_df['word'] = train_df['text'].apply(lambda x: len(x.split(' ')))
(10月5日)任务2:对数据集字符进行可视化,统计标签和字符分布
(10月11日)任务3:使用 TFIDF 提取文本特征
(10月11日)任务4:使用 TFIDF 特征 和 线性模型完成训练和预测
(10月11日)任务5:使用 TFIDF 特征 和 XGBoost完成训练和预测
(10月25日)任务6:学会训练 FastText、Word2Vec 词向量
(10月25日)任务7:使用 Word2Vec 词向量,搭建 TextCNN 模型训练预测
- 使用深度学习框架(推荐Pytorch)搭建TextCNN,完成训练和预测
(10月25日)任务8:使用 Word2Vec 词向量,搭建 BILSTM 模型训练预测
- 使用深度学习框架(推荐Pytorch)搭建BILSTM,完成训练和预测
(10月25日)任务9:学会 Bert 基础,transformer 库基础使用
(10月25日)任务10:使用 Bert 在比赛数据集中完成预训练
(10月25日)任务11:使用 Bert 在比赛数据集上完成微调
Part7 提问&回答
问:具体的活动是怎么安排的?
有任务,自己先尝试,然后之后会视频演示和讨论。
问:本次活动是收费的吗,最终奖品如何发放?
活动是免费的,最终奖品按照积分排行Top3进行发放,如果排名有并列都发送奖励。
问:环境和配置是什么?
linux上进行学习,python3
Part1 内容介绍
在给大家分享知识的过程中,发现很多同学在学习竞赛都存在较多的问题:
而上述问题都是一个竞赛选手、一个算法工程师所必备的。因此我们将从本月组织一次竞赛训练营活动,希望能够帮助大家入门数据竞赛。在活动中我们将布置具体竞赛任务,然后参与的同学们不断闯关完成,竟可能的帮助大家入门。
10 月份的竞赛活动将以以下三个比赛展开:
Part2 活动安排
- 请各位同学添加下面微信,并回复【结构化、CV、NLP】,即可参与。

Part3 积分说明和奖励
为了激励各位同学完成的学习任务,将学习任务根据难度进行划分,并根据是否完成进行评分难度高中低的任务分别分数为 3、2 和 1。在完成 10 月学习后,将按照积分顺序进行评选 Top3 的学习者。
Top3 的学习者将获得以下奖励:
注:
- Coggle 数据科学保留活动期间和结束后修改奖励和规则的权利。
- 如果有违反竞赛规则的情况,Coggle 数据科学保留取消相关参赛者的参与排名的权利。
Part4 结构化赛题学习
赛题介绍
https://tianchi.aliyun.com/competition/entrance/231784/information
赛题以预测二手车的交易价格为任务,数据集报名后可见并可下载,该数据来自某交易平台的二手车交易记录,总数据量超过 40w,包含 31 列变量信息,其中 15 列为匿名变量。为了保证比赛的公平性,将会从中抽取 15 万条作为训练集,5 万条作为测试集 A,5 万条作为测试集 B,同时会对 name、model、brand 和 regionCode 等信息进行脱敏。
评价标准为 MAE(Mean Absolute Error)。

MAE 越小,说明模型预测得越准确。
打卡汇总(满分23)
打卡要求
注:
- 需要使用Python环境下Notebook完成以下任务
(10月5日)任务1:报名比赛,下载比赛数据集并完成读取
- 使用Pandas完成数据集读取(其中zip文件需要解压后读取)
- used_car_sample_submit.csv
- used_car_testB_20200421.zip
- used_car_train_20200313.zip
import pandas as pd
Train_data = pd.read_csv('used_car_train_20200313.csv', sep=' ')
Test_data = pd.read_csv('used_car_testA_20200313.csv', sep=' ')
(10月5日)任务2:对数据字段进行理解,并对特征字段依次进行数据分析
- 分析每个字段的取值、范围(unique)和类型(dtypes)
- 结合比赛页面中具体字段的含义,对字段的取值分布进行分析
- 选择特征字段中与标签强相关的3个字段,绘制其余标签的分布关系图
(10月5日)任务3:对标签进行数据分析,并使用 log 进行转换
(10月11日)任务4:使用特征工程对比赛字段进行编码
https://tianchi.aliyun.com/notebook-ai/detail?postId=95501
Feature+Engineering.pdf0.9MB
- 对数据集中类别字段(取值空间大于2)的进行字段进行onehot操作
from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(handle_unknown='ignore')
X = [['Male', 1], ['Female', 3], ['Female', 2]]
enc.fit(X)
enc.transform([['Female', 1], ['Male', 4]]).toarray()
import pandas as pd
df = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'],
'C': [1, 2, 3]})
pd.get_dummies(df, prefix=['col1', 'col2'])
(10月11日)任务5:使用 Sklearn 中基础树模型完成训练和预测
import numpy as np
from sklearn.model_selection import KFold
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
y = np.array([1, 2, 3, 4])
kf = KFold(n_splits=2)
for train_index, test_index in kf.split(X):
print("TRAIN:", train_index, "TEST:", test_index)
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
- 对标签price按照大小划分成10等分,然后使用StratifiedKFold进行划分
import numpy as np
from sklearn.model_selection import StratifiedKFold
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
y = np.array([0, 0, 1, 1])
skf = StratifiedKFold(n_splits=2)
for train_index, test_index in skf.split(X, y):
print("TRAIN:", train_index, "TEST:", test_index)
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
(10月11日)任务6:成功将树模型的预测结果文件提交到天池
- 使用StratifiedKFold配合随机森林完成模型的训练和预测
- 将多折测试集结果进行求均值,并写入csv提交到天池
(10月25日)任务7:使用 XGBoost 模型完成训练和预测
(10月25日)任务8:成功将 XGBoost 的预测结果文件提交到天池
- 使用StratifiedKFold配合XGBoost完成模型的训练和预测
- 将多折测试集结果进行求均值,并写入csv提交到天池
(10月25日)任务9:使用 LightGBM 模型完成训练和预测
(10月25日)任务10:成功将 LightGBM 的预测结果文件提交到天池
- 使用StratifiedKFold配合LightGBM完成模型的训练和预测
- 将多折测试集结果进行求均值,并写入csv提交到天池
(10月25日)任务11:成功将 LightGBM 的预测结果文件提交到天池
- 使用StratifiedKFold配合LightGBM完成模型的训练和预测
- 将多折测试集结果进行求均值,并写入csv提交到天池
(10月25日)任务11:对 XGBoost、LightGBM 模型进行调参
(10月25日)任务12:使用交叉验证 + Stacking 过程完成模型集成
- 将多折测试集结果进行求均值,并写入csv提交到天池
Part5 CV 赛题学习
赛题介绍
https://challenge.xfyun.cn/topic/info?type=key-points-of-human-face&ch=dw-sq-1
人脸识别是基于人的面部特征信息进行身份识别的一种生物识别技术,金融和安防是目前人脸识别应用最广泛的两个领域。人脸关键点是人脸识别中的关键技术。人脸关键点检测需要识别出人脸的指定位置坐标,例如眉毛、眼睛、鼻子、嘴巴和脸部轮廓等位置坐标等。
给定人脸图像,找到 4 个人脸关键点,赛题任务可以视为一个关键点检测问题。
- 训练集:5 千张人脸图像,并且给定了具体的人脸关键点标注。
- 测试集:约 2 千张人脸图像,需要选手识别出具体的关键点位置。
本次竞赛的评价标准回归 MAE 进行评价,数值越小性能更优,最高分为 0。评估代码参考:
from sklearn.metrics import mean_absolute_error
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
mean_absolute_error(y_true, y_pred)
打卡汇总
打卡要求
注:
- 需要使用Python环境下Notebook完成以下任务
(10月5日)任务1:报名比赛,下载比赛数据集并完成读取
import pandas as pd
import numpy as np
train_df = pd.read_csv('人脸关键点检测挑战赛_数据集/train.csv')
train_img = np.load('人脸关键点检测挑战赛_数据集/train.npy')
test_img = np.load('人脸关键点检测挑战赛_数据集/test.npy')
(10月5日)任务2:对数据集样本进行可视化,统计关键点坐标分布
- 使用opencv 或 matplotlib对人脸进行可视化
(10月11日)任务3:使用 Sklearn 中全连接网络构建简单的关键点回归模型
(10月11日,Keras/Pytorch二选一)任务4:使用 Keras 搭建基础的全连接网络,完成关键点回归
网络结构(输出层是8,且激活函数用relu)
人脸关键点检测-TF.ipynb0.2MB
人脸关键点检测-Pytorch.ipynb0.2MB
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
(10月11日,Keras和Pytorch二选一)任务5:使用 Keras 搭建卷积神经网络,完成关键点回归
(10月11日,Keras和Pytorch二选一)任务6:使用 Keras 预训练模型,修改网络结构完成训练
- 加载ImageNet预训练模型,建议选择ResNet18
- 在训练过程中,每个epoch结尾加入模型存储的过程
(10月11日,Keras和Pytorch二选一)任务7:使用 Pytorch 搭建基础的全连接网络,完成关键点回归
- 导入Pytorch模块,完成基础的MNIST模型训练
(10月11日,Keras和Pytorch二选一)任务8:使用 Pytorch 搭建卷积神经网络,完成关键点回归
(10月11日,Keras和Pytorch二选一)任务9:使用 Pytorch 预训练模型,修改网络结构完成训练
- 加载ImageNet预训练模型,建议选择ResNet18
- 在训练过程中,每个epoch结尾加入模型存储的过程
(10月25日)任务10:训练多个深度学习模型,完成模型集成
(10月25日)任务11:使用伪标签 或 模型蒸馏完成训练和预测
Part6 NLP 赛题学习
赛题介绍
https://tianchi.aliyun.com/competition/entrance/531810/introduction
赛题以匿名处理后的新闻数据为赛题数据,数据集报名后可见并可下载。赛题数据为新闻文本,并按照字符级别进行匿名处理。整合划分出 14 个候选分类类别:财经、彩票、房产、股票、家居、教育、科技、社会、时尚、时政、体育、星座、游戏、娱乐的文本数据。
赛题数据由以下几个部分构成:训练集 20w 条样本,测试集 A 包括 5w 条样本,测试集 B 包括 5w 条样本。为了预防选手人工标注测试集的情况,我们将比赛数据的文本按照字符级别进行了匿名处理。评价标准为类别 f1_score 的均值,选手提交结果与实际测试集的类别进行对比,结果越大越好。
处理后的赛题训练数据如下:
在数据集中标签的对应的关系如下:{'科技': 0, '股票': 1, '体育': 2, '娱乐': 3, '时政': 4, '社会': 5, '教育': 6, '财经': 7, '家居': 8, '游戏': 9, '房产': 10, '时尚': 11, '彩票': 12, '星座': 13}
打卡汇总
打卡要求
注:
- 需要使用Python环境下Notebook完成以下任务
(10月5日)任务1:报名比赛,下载比赛数据集并完成读取
import pandas as pd
train_df = pd.read_csv('train_set.csv', sep='\t', nrows=100)
train_df['word'] = train_df['text'].apply(lambda x: len(x.split(' ')))
(10月5日)任务2:对数据集字符进行可视化,统计标签和字符分布
(10月11日)任务3:使用 TFIDF 提取文本特征
(10月11日)任务4:使用 TFIDF 特征 和 线性模型完成训练和预测
(10月11日)任务5:使用 TFIDF 特征 和 XGBoost完成训练和预测
(10月25日)任务6:学会训练 FastText、Word2Vec 词向量
(10月25日)任务7:使用 Word2Vec 词向量,搭建 TextCNN 模型训练预测
- 使用深度学习框架(推荐Pytorch)搭建TextCNN,完成训练和预测
(10月25日)任务8:使用 Word2Vec 词向量,搭建 BILSTM 模型训练预测
- 使用深度学习框架(推荐Pytorch)搭建BILSTM,完成训练和预测
(10月25日)任务9:学会 Bert 基础,transformer 库基础使用
(10月25日)任务10:使用 Bert 在比赛数据集中完成预训练
(10月25日)任务11:使用 Bert 在比赛数据集上完成微调
Part7 提问&回答
问:具体的活动是怎么安排的?
有任务,自己先尝试,然后之后会视频演示和讨论。
问:本次活动是收费的吗,最终奖品如何发放?
活动是免费的,最终奖品按照积分排行Top3进行发放,如果排名有并列都发送奖励。
问:环境和配置是什么?
linux上进行学习,python3