在给大家分享知识的过程中,发现很多同学在学习竞赛都存在较多的问题:
而上述问题都是一个竞赛选手、一个算法工程师所必备的。因此我们将从本月组织一次竞赛训练营活动,希望能够帮助大家入门数据竞赛。在活动中我们将布置具体竞赛任务,然后参与的同学们不断闯关完成,竟可能的帮助大家入门。
7月份的竞赛活动将以下两个比赛展开:
2020-06-27 直播录屏:活动任务介绍
2020-07-01 直播录屏:数据分析、特征工程、BERT基础
直播代码:
为了激励各位同学完成的学习任务,将学习任务根据难度进行划分,并根据是否完成进行评分难度高中低的任务分别分数为3、2和1。在完成学习后(本次活动,截止7月24),将按照积分顺序进行评选 Top3 的学习者。
打卡链接:https://shimo.im/forms/bnWE5XKAHkQi6Ky4/fill
打卡可以写在一个地址,每次有新完成的可以重复提交打卡!
Top1的学习者将获得以下奖励:
Top10的学习者将获得以下奖励:
昵称 | 糖尿病挑战赛 | 汽车多语种挑战赛 | 总积分 |
---|---|---|---|
qqh | 12 | 11 | 23 |
请叫我子源 | 12 | 9 | 21 |
valleyBeyond | 12 | 9 | 21 |
D·尼卡 | 12 | 9 | 21 |
Mjj | 12 | 7 | 19 |
MichstaBe_L_ | 12 | 7 | 19 |
白金生 | 12 | 7 | 19 |
Trinitylo | 12 | 5 | 17 |
Cary | 12 | 5 | 17 |
LittleDream_hjy | 12 | 5 | 17 |
zuozuo | 5 | 11 | 16 |
若辰 | 12 | 3 | 15 |
斩 三 煞 | 7 | 7 | 14 |
不忘初心@147751***@qq.com | 9 | 5 | 14 |
阿维 | 9 | 4 | 13 |
梁 | 12 | 1 | 13 |
liuyang198953 | 12 | 12 | |
Miào然 | 9 | 3 | 12 |
白金生 | 12 | 12 | |
ivyxue16 | 11 | 11 | |
圆脸银 | 7 | 3 | 10 |
谁谁谁 | 10 | 10 | |
辉鸿 | 2 | 6 | 8 |
徐乜乜 | 7 | 7 | |
钱杰 | 7 | 7 | |
Mjj | 7 | 7 | |
Linzijiandevx | 7 | 7 | |
Ben | 3 | 3 | 6 |
Matrix战队 | 5 | 1 | 6 |
LiamPayne | 3 | 2 | 5 |
Amihua Lau | 5 | 5 | |
RylonW | 5 | 5 | |
月君 | 2 | 3 | 5 |
月君 | 4 | 4 | |
本来是蒋 | 2 | 2 | 4 |
凸🐰 | 4 | 4 | |
April | 4 | 4 | |
纯粹 | 3 | 3 | |
雪山包和润包 | 3 | 3 | |
BobM | 3 | 3 | |
Ada | 2 | 2 | |
是光。 | 2 | 2 | |
张琳这 | 2 | 2 | |
ivyxue16 | 1 | 1 | 2 |
hm812328 | 2 | 2 | |
转一圈 | 1 | 1 | 2 |
rua_corgi | 1 | 1 | |
San | 1 | 1 | |
值得信赖的小海豚 | 1 | 1 | |
佛系车队 | 1 | 1 | |
Lstreams | 1 | 1 | |
刘驰宇 | 0 | 0 | 0 |
Jason Freed | 0 | 0 | 0 |
paulsh | 0 | 0 | 0 |
dylan24 | 0 | 0 | 0 |
小小的香辛料 | 0 | 0 | 0 |
Shea | 0 | ||
wangbin221 | 0 | ||
真想 | 0 | ||
丙子年 | 0 | ||
欢乐马 | 0 | ||
Shea | 0 | ||
April-伟萍 | 0 | ||
魔人派大星 | 0 | ||
王锦鲤 | 0 | ||
年糕 | 0 | ||
悟空 | 0 | ||
answey | 0 | ||
L | 0 | ||
少辉gogogo | 0 | ||
catchlove666 | 0 | ||
冬帘 | 0 | ||
美滋滋 | 0 | ||
Sinclair | 0 | ||
欧文 | 0 | ||
鸭鸭鸭 | 0 | ||
小马褂顶天立地 | 0 | ||
D1、pa_ | 0 | ||
LYJ | 0 | ||
摩天居士 | 0 | ||
? | 0 | ||
Jason Freed | 0 | ||
Lstreams | 0 | ||
东东 | 0 |
本教程主要是针对糖尿病遗传风险检测挑战赛开展,将讲解数据比赛中具体使用的知识点和细节。 在本次学习中我们将学习特征工程、特征筛选和模型调参过程。
比赛报名地址:http://challenge.xfyun.cn/topic/info?type=diabetes&ch=ds22-dw-zmt05
在这次比赛中,您需要通过训练数据集构建糖尿病遗传风险预测模型,然后预测出测试数据集中个体是否患有糖尿病,和我们一起帮助糖尿病患者解决这“甜蜜的烦恼”。对于测试数据集当中的个体,您必须预测其是否患有糖尿病(患有糖尿病:1,未患有糖尿病:0),预测值只能是整数1或者0。
训练集(比赛训练集.csv)一共有5070条数据,用于构建您的预测模型(您可能需要先进行数据分析)。数据的字段有编号、性别、出生年份、体重指数、糖尿病家族史、舒张压、口服耐糖量测试、胰岛素释放实验、肱三头肌皮褶厚度、患有糖尿病标识(最后一列),您也可以通过特征工程技术构建新的特征。
测试集(比赛测试集.csv)一共有1000条数据,用于验证预测模型的性能。数据的字段有编号、性别、出生年份、体重指数、糖尿病家族史、舒张压、口服耐糖量测试、胰岛素释放实验、肱三头肌皮褶厚度。
任务名称 | 难度 |
---|---|
任务1:比赛报名 | 低、1 |
任务2:比赛数据分析 | 低、1 |
任务3:逻辑回归尝试 | 低、1 |
任务4:特征工程 | 中、2 |
任务5:特征筛选 | 中、2 |
任务6:高阶树模型 | 中、2 |
任务7:多折训练与集成 | 高、3 |
import pandas as pd
train_df = pd.read_csv('./糖尿病遗传风险预测挑战赛公开数据/比赛训练集.csv', encoding='gbk')
test_df = pd.read_csv('./糖尿病遗传风险预测挑战赛公开数据/比赛测试集.csv', encoding='gbk')
print(train_df.shape, test_df.shape)
print(train_df.dtypes, test_df.dtypes)
.corr()
计算字段之间的相关性;# 缺失值计算
train_df.isnull().mean(0)
test_df.isnull().mean(0)
# 相关性计算
train_df.corr()
train_df['性别'].value_counts().plot(kind='barh')
sns.countplot(x='患有糖尿病标识', hue='性别', data=train_df)
sns.boxplot(y='出生年份', x='患有糖尿病标识', hue='性别', data=train_df)
sns.violinplot(y='体重指数', x='患有糖尿病标识', hue='性别', data=train_df)
任务3:逻辑回归尝试
任务4:特征工程(使用pandas完成)
任务5:特征筛选
任务6:高阶树模型
任务7:多折训练与集成
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import MinMaxScaler
from sklearn.pipeline import make_pipeline
train_df = pd.read_csv('./糖尿病遗传风险预测挑战赛公开数据/比赛训练集.csv', encoding='gbk')
test_df = pd.read_csv('./糖尿病遗传风险预测挑战赛公开数据/比赛测试集.csv', encoding='gbk')
dict_糖尿病家族史 = {
'无记录': 0,
'叔叔或姑姑有一方患有糖尿病': 1,
'叔叔或者姑姑有一方患有糖尿病': 1,
'父母有一方患有糖尿病': 2
}
train_df['糖尿病家族史'] = train_df['糖尿病家族史'].map(dict_糖尿病家族史)
test_df['糖尿病家族史'] = test_df['糖尿病家族史'].map(dict_糖尿病家族史)
train_df['舒张压'].fillna(89, inplace=True)
test_df['舒张压'].fillna(89, inplace=True)
# 构建模型
model = make_pipeline(
MinMaxScaler(),
DecisionTreeClassifier()
)
model.fit(train_df.drop(['编号', '患有糖尿病标识'], axis=1), train_df['患有糖尿病标识'])
# 模型预测
test_df['label'] = model.predict(test_df.drop(['编号'], axis=1))
test_df.rename({'编号': 'uuid'}, axis=1)[['uuid', 'label']].to_csv('submit.csv', index=None)
import pandas as pd
import numpy as np
import seaborn as sns
from sklearn.model_selection import KFold
import lightgbm as lgb
# 读取数据
train_df = pd.read_csv('./糖尿病遗传风险预测挑战赛公开数据/比赛训练集.csv', encoding='gbk')
test_df = pd.read_csv('./糖尿病遗传风险预测挑战赛公开数据/比赛测试集.csv', encoding='gbk')
# 基础特征工程
train_df['体重指数_round'] = train_df['体重指数'] // 10
test_df['体重指数_round'] = train_df['体重指数'] // 10
train_df['口服耐糖量测试'] = train_df['口服耐糖量测试'].replace(-1, np.nan)
test_df['口服耐糖量测试'] = test_df['口服耐糖量测试'].replace(-1, np.nan)
dict_糖尿病家族史 = {
'无记录': 0,
'叔叔或姑姑有一方患有糖尿病': 1,
'叔叔或者姑姑有一方患有糖尿病': 1,
'父母有一方患有糖尿病': 2
}
train_df['糖尿病家族史'] = train_df['糖尿病家族史'].map(dict_糖尿病家族史)
test_df['糖尿病家族史'] = test_df['糖尿病家族史'].map(dict_糖尿病家族史)
train_df['糖尿病家族史'] = train_df['糖尿病家族史'].astype('category')
test_df['糖尿病家族史'] = train_df['糖尿病家族史'].astype('category')
train_df['性别'] = train_df['性别'].astype('category')
test_df['性别'] = train_df['性别'].astype('category')
train_df['年龄'] = 2022 - train_df['出生年份']
test_df['年龄'] = 2022 - test_df['出生年份']
train_df['口服耐糖量测试_diff'] = train_df['口服耐糖量测试'] - train_df.groupby('糖尿病家族史').transform('mean')['口服耐糖量测试']
test_df['口服耐糖量测试_diff'] = test_df['口服耐糖量测试'] - test_df.groupby('糖尿病家族史').transform('mean')['口服耐糖量测试']
# 模型交叉验证
def run_model_cv(model, kf, X_tr, y, X_te, cate_col=None):
train_pred = np.zeros( (len(X_tr), len(np.unique(y))) )
test_pred = np.zeros( (len(X_te), len(np.unique(y))) )
cv_clf = []
for tr_idx, val_idx in kf.split(X_tr, y):
x_tr = X_tr.iloc[tr_idx]; y_tr = y.iloc[tr_idx]
x_val = X_tr.iloc[val_idx]; y_val = y.iloc[val_idx]
call_back = [
lgb.early_stopping(50),
]
eval_set = [(x_val, y_val)]
model.fit(x_tr, y_tr, eval_set=eval_set, callbacks=call_back, verbose=-1)
cv_clf.append(model)
train_pred[val_idx] = model.predict_proba(x_val)
test_pred += model.predict_proba(X_te)
test_pred /= kf.n_splits
return train_pred, test_pred, cv_clf
clf = lgb.LGBMClassifier(
max_depth=3,
n_estimators=4000,
n_jobs=-1,
verbose=-1,
verbosity=-1,
learning_rate=0.1,
)
train_pred, test_pred, cv_clf = run_model_cv(
clf, KFold(n_splits=5),
train_df.drop(['编号', '患有糖尿病标识'], axis=1),
train_df['患有糖尿病标识'],
test_df.drop(['编号'], axis=1),
)
print((train_pred.argmax(1) == train_df['患有糖尿病标识']).mean())
test_df['label'] = test_pred.argmax(1)
test_df.rename({'编号': 'uuid'}, axis=1)[['uuid', 'label']].to_csv('submit.csv', index=None)
注:
本教程主要是针对汽车领域多语种迁移学习挑战赛开展,将讲解数据比赛中具体使用的知识点和细节。 在本次学习中我们将学习文本分类和关键词提取。
比赛报名地址:http://challenge.xfyun.cn/topic/info?type=car-multilingual&ch=ds22-dw-zmt05
国内车企为提升产品竞争力、更好走向海外市场,提出了海外市场智能交互的需求。但世界各国在“数据安全”上有着严格法律约束,要做好海外智能化交互,本土企业面临的最大挑战是数据缺少。本赛题要求选手通过NLP相关人工智能算法来实现汽车领域多语种迁移学习。
本次迁移学习任务中,讯飞智能汽车BU将提供较多的车内人机交互中文语料,以及少量的中英、中日、中阿平行语料作为训练集,参赛选手通过提供的数据构建模型,进行意图分类及关键信息抽取任务,最终使用英语、日语、阿拉伯语进行测试评判。
1.初赛
2.复赛
任务名称 | 难度 |
---|---|
任务1:比赛报名 | 低、1 |
任务2:文本分析与文本分词 | 低、1 |
任务3:TFIDF与文本分类 | 低、1 |
任务4:正则表达式 | 中、2 |
任务5:BERT模型入门 | 中、2 |
任务6:BERT文本分类 | 中、2 |
任务7:BERT实体抽取 | 中、2 |
import pandas as pd
train_cn = pd.read_excel('汽车领域多语种迁移学习挑战赛初赛训练集/中文_trian.xlsx')
train_ja = pd.read_excel('汽车领域多语种迁移学习挑战赛初赛训练集/日语_train.xlsx')
train_en = pd.read_excel('汽车领域多语种迁移学习挑战赛初赛训练集/英文_train.xlsx')
test_ja = pd.read_excel('testA.xlsx', sheet_name='日语_testA')
test_en = pd.read_excel('testA.xlsx', sheet_name='英文_testA')
import jieba
import jieba.posseg as pseg
words = jieba.lcut("阿水是一个好同志。")
print(words)
# ['阿水', '是', '一个', '好', '同志', '。']
words = pseg.lcut("阿水是一个好同志。")
# [pair('阿水', 'nr'), pair('是', 'v'), pair('一个', 'm'), pair('好', 'a'), pair('同志', 'n'), pair('。', 'x')]
# https://github.com/taishi-i/nagisa
import nagisa
text = 'Pythonで簡単に使えるツールです'
words = nagisa.tagging(text)
print(words)
# Python/名詞 で/助詞 簡単/形状詞 に/助動詞 使える/動詞 ツール/名詞 です/助動詞
print(words.words)
# ['Python', 'で', '簡単', 'に', '使える', 'ツール', 'です']
任务3:TFIDF与文本分类
任务4:正则表达式
任务5:BERT模型入门
任务6:BERT文本分类
任务6:BERT实体抽取
import pandas as pd # 读取文件
import numpy as np # 数值计算
import nagisa # 日文分词
from sklearn.feature_extraction.text import TfidfVectorizer # 文本特征提取
from sklearn.linear_model import LogisticRegression # 逻辑回归
from sklearn.pipeline import make_pipeline # 组合流水线
# 读取数据
train_cn = pd.read_excel('汽车领域多语种迁移学习挑战赛初赛训练集/中文_trian.xlsx')
train_ja = pd.read_excel('汽车领域多语种迁移学习挑战赛初赛训练集/日语_train.xlsx')
train_en = pd.read_excel('汽车领域多语种迁移学习挑战赛初赛训练集/英文_train.xlsx')
test_ja = pd.read_excel('testA.xlsx', sheet_name='日语_testA')
test_en = pd.read_excel('testA.xlsx', sheet_name='英文_testA')
# 文本分词
train_ja['words'] = train_ja['原始文本'].apply(lambda x: ' '.join(nagisa.tagging(x).words))
train_en['words'] = train_en['原始文本'].apply(lambda x: x.lower())
test_ja['words'] = test_ja['原始文本'].apply(lambda x: ' '.join(nagisa.tagging(x).words))
test_en['words'] = test_en['原始文本'].apply(lambda x: x.lower())
# 训练TFIDF和逻辑回归
pipline = make_pipeline(
TfidfVectorizer(),
LogisticRegression()
)
pipline.fit(
train_ja['words'].tolist() + train_en['words'].tolist(),
train_ja['意图'].tolist() + train_en['意图'].tolist()
)
# 模型预测
test_ja['意图'] = pipline.predict(test_ja['words'])
test_en['意图'] = pipline.predict(test_en['words'])
test_en['槽值1'] = np.nan
test_en['槽值2'] = np.nan
test_ja['槽值1'] = np.nan
test_ja['槽值2'] = np.nan
# 写入提交文件
writer = pd.ExcelWriter('submit.xlsx')
test_en.drop(['words'], axis=1).to_excel(writer, sheet_name='英文_testA', index=None)
test_ja.drop(['words'], axis=1).to_excel(writer, sheet_name='日语_testA', index=None)
writer.save()
writer.close()
注:
© 2019-2023 coggle.club 版权所有 京ICP备20022947 京公网安备 11030102010643号