Transformer Attention Is All You Need 是 Google 于 2017 年发表的论文,这篇论文提出了一种新的神经网络架构: Transformer,它完全摒弃了传统的 CNN 和 RNN 结构,基于 Attention 机制来实现 Seq2Seq 的建模。 Transformer 的出现是人工智能领域的重大突破,它不仅在机器翻译任务上取得了 SOTA 的效果,而且在其他 NLP 任务上也有着非常好的表现,后续更是被广泛应用于 CV 领域。 位置编码 本文主要介绍 Transformer 中的位置编码,它是 Transformer 中非常重要的一部分。 什么是位置编码以及为什么需要位置编码 词的位置和顺序是任何语言的重要组成部分。它们决定着语法,因此也决定了句子的实际语义。 卷积神经网络(CNN)使用卷积核来捕获单词之间的相对位置信息,但其仅能捕获固定大小的局部上下文信息。 循环神经网络(RNN)在处理序列信息上会有更好的效果,其依靠循环结构,将序列信息逐步传递,这其中就引入了单词的位置和顺序信息。但随着序列长度的增加,RNN 会慢慢忘记早前的信息, ...
资源分享
未读Kaggle Kaggle,成立于 2010 年,于 2017 年 3 月被谷歌收购,目前已是全球最大、最权威的数据科学竞赛平台。Kaggle 以数据科学竞赛为主,同时也提供了 Datasets、Code、Discussions、Learn 等功能。 Kaggle 为初学者提供了很多学习资源,同时也设置了很多入门级别的练习赛,如经典的泰坦尼克号生还预测、波士顿房价预测、手写数字识别等,可以帮助初学者快速入门。Kaggle 上的竞赛往往有很高的奖金,吸引了全球的数据科学家参与其中,竞赛的难度也很大,往往需要团队合作才能取得好成绩。 平台链接:https://www.kaggle.com/ 天池 天池,阿里云旗下的开发者竞赛平台,提供丰富的 AI 学习、实验、研究、创新和展示资源,包括学习课程、编程工具、数据集、在线编程、实验室等,目前是国内最大的数据科学竞赛平台。 天池也为初学者设置了许多学习赛,并且以中文为主,更加适合国内的初学者。赛事的举办方往往是知名企业或者高校、科研机构,对于数据科学家来说,天池是一个很好的展示平台。 平台链接:https://tianchi.aliyun.c ...
实用教程
未读数学建模竞赛简介 数学建模竞赛的基本要求 通常由三人组成团队,团队分工通常为建模手、编程手和论文手 在规定时间内,解决相应的问题,并给出解决方案,通常包含一篇结构完整、思路清晰的论文和一份能够运行并得出结果的程序代码 数学建模竞赛的基本过程 由建模手将问题转化为数学模型 由编程手根据数学模型编写程序代码 将数据输入程序,得到结果 由论文手将问题、数学模型、结果整理成论文 论文与程序代码构成问题最终的解决方案 主流数学建模竞赛介绍 “高教社杯”全国大学生数学建模竞赛 全国大学生数学建模竞赛,简称国赛,由中国工业与应用数学学会主办,高等教育出版社独家冠名赞助,是世界上规模最大的数学建模竞赛。 比赛时间:通常为每年的 9 月中上旬 比赛时长:通常为 3 天 比赛语言:中文 比赛题目:通常 ABCDE 五个题目,其中 ABC 为本科生组题目,DE 为专科生组题目 比赛奖项: 国家级:一等奖、二等奖 省级:一等奖、二等奖、三等奖 赞助商特别奖项 美国大学生数学建模竞赛 美国大学生数学建模竞赛,简称美赛,由美国数学及其应用联合会(COMAP)主办,,分为 MCM(The Ma ...
t-SNE 简介 t-SNE 的全称为 t-Distributed Stochastic Neighbor Embedding,是一种非线性降维算法,它可以将高维数据映射到低维空间,同时保持数据间的相对距离不变。t-SNE 通常用于可视化高维数据,它可以将高维数据映射到二维或三维空间,从而可以通过图形的方式展示数据的特征。 相比于 PCA 等线性降维算法,t-SNE 能够更好地保留数据的局部结构,因此在可视化高维数据时,t-SNE 通常能够展示出更好的效果。 sklearn 中的 t-SNE sklearn 中的 t-SNE 位于 sklearn.manifold.TSNE,它的主要参数有: n_components:降维后的维度,默认为 2 perplexity:困惑度,用于控制每个点周围的邻域大小,默认为 30,通常取值在 5 到 50 之间 early_exaggeration:控制 t-SNE 与原始空间距离的关注度,值越大,t-SNE 与原始空间距离越大,默认为 12 learning_rate:学习率,默认为 200,通常取值在 10 到 1000 之间 n_iter:迭 ...
超参数搜索 在建模时模型的超参数往往会对精度造成一定影响,而设置和调整超参数的取值,往往称为调参。 在实践中调参往往依赖人工来进行设置调整范围,然后使用机器在超参数范围内进行搜索,找到最优的超参数组合。 在 sklearn 中,提供了四种超参数搜索方法: GridSearchCV RandomizedSearchCV HalvingGridSearchCV HalvingRandomSearchCV 默认参数 为了方便起见,我们先定义一个默认参数的模型,用于后续的超参数搜索。 1234567891011121314151617181920212223242526272829303132# 导入相关库import randomimport numpy as npimport pandas as pdfrom sklearn import datasetsfrom sklearn.experimental import enable_halving_search_cvfrom sklearn.model_selection import ( train_test_split, ...
Category Encoders 简介 Category Encoders 是一个用于将分类变量编码为数值的 Python 库,它提供了多种不同的编码技术。这些编码技术可以将分类变量转换成数值表示,以便在机器学习算法中使用。这个库的设计与 scikit-learn 类似,因此可以很容易地与 scikit-learn 的流程和工具集成。 以下是 Category Encoders 库的一些主要特点: 对 Pandas DataFrame 的原生支持:它支持 Pandas DataFrame 直接作为输入,也可以指定输出类型为 Pandas DataFrame。 灵活的列配置:你可以通过列名或索引来明确配置要编码的列,或者让它自动推断出非数值列,无论输入的数据类型如何。 低方差列的删除:它可以基于训练集可选地删除方差非常低的列,以避免给模型带来噪音。 可移植性:你可以在数据上训练一个编码器,将其保存为 pickle 文件,以后可以重新使用它,而且可以得到相同的结果。 兼容 scikit-learn:它可以像其他转换器一样接受类似数组的数据集,可以无缝地与 scikit-learn 的 ...
数据集与 Notebook 数据集:70 Dog Breeds-Image Data Set Notebook:「ResNet-18」70 Dog Breeds-Image Classification 环境准备 12import warningswarnings.filterwarnings('ignore') 禁用警告,防止干扰。 1!pip install lightning --quiet 安装 PyTorch Lightning。 1234567import randomimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snssns.set_theme(style="darkgrid", font_scale=1.5, font="SimHei", rc={"axes.unicode_minus":False}) 导入常用的库,设置绘图风格。 123456 ...
数据集与 Notebook 数据集:70 Dog Breeds-Image Data Set Notebook:「MobileNet V3」70 Dog Breeds-Image Classification 环境准备 12import warningswarnings.filterwarnings('ignore') 禁用警告,防止干扰。 1!pip install lightning --quiet 安装 PyTorch Lightning。 1234567import randomimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snssns.set_theme(style="darkgrid", font_scale=1.5, font="SimHei", rc={"axes.unicode_minus":False}) 导入常用的库,设置绘图风格。 123 ...
X1 A1 特征类型:类别特征 缺失率:91.9869% 训练集与测试集中每个类别的个数分布: 训练集 测试集 总和 A9 504 364 868 A1 28 19 47 A5 5 6 11 A4 1 3 4 复购频率的分布: 意见:不宜采用自然数编码;缺失严重 A2 特征类型:类别特征, M / W 缺失率:0% 训练集与测试集中每个类别的个数分布: 训练集 测试集 总和 M 4522 3406 7928 W 2192 1594 3786 复购频率的分布: 意见:性别特征 A3 特征类型:字符串,X + 6 位数字 缺失率:0% 意见:较为稀疏,意义不明,用户归属地特征?(存疑) A4 特征类型:字符串,6 位数字 缺失率:0% 意见:邮政编码特征 A5 特征类型:数值特征,整数 缺失率:0% 复购频率的分布: 意见:年龄特征 A6 特征类型:数值特征,整数 缺失率:1.9660% 意见:较为稀疏,1 的个数较多,意义不明 A7 特征类型:数值特征,整数 缺失率:0.0149% 复购频率的分布: 意见:99 的个数较 ...
imblearn 简介 imblearn(全名为 imbalanced-learn )是一个用于处理不平衡数据集的 Python 库。在许多实际情况中,数据集中的类别分布可能是不均衡的,这意味着某些类别的样本数量远远超过其他类别。这可能会导致在训练机器学习模型时出现问题,因为模型可能会偏向于学习多数类别。 imblearn 库提供了一系列处理不平衡数据集的方法,包括: 欠采样方法:减少多数类别的样本以使其与少数类别相匹配。 过采样方法:通过生成合成样本来增加少数类别的样本数量,使其与多数类别相匹配。 组合采样方法:结合了欠采样和过采样的技术,以获得更好的平衡。 imblearn 库包含了许多常用的不平衡数据处理算法,例如 SMOTE(Synthetic Minority Over-sampling Technique)、Tomek Links、RandomUnderSampler、RandomOverSampler 等等。 这个库对于处理各种类型的不平衡数据问题非常有用,可以提升在这类数据上训练模型的性能。 imblearn 安装 imblearn 库可以通过 pip 安装: 1 ...