1. 为什么你需要这份公开数据集指南做数据挖掘的朋友们都知道找数据集就像大海捞针。我刚开始做机器学习项目时80%的时间都花在找合适的数据集上结果好不容易找到的数据要么质量差要么格式混乱最后模型效果一塌糊涂。这份指南就是要帮你避开这些坑直接锁定各领域最优质的公开数据集。公开数据集对数据科学工作有多重要首先它们都是经过专业清洗和标注的省去了你90%的数据预处理时间。其次这些数据集往往有完善的文档说明和基准测试结果你可以直接对比自己的模型效果。最重要的是它们全部免费无论是学生做毕业设计还是工程师验证算法甚至是企业做原型开发这些数据集都能满足需求。2. 综合类数据集从入门到进阶2.1 UCI机器学习仓库经典中的经典我把UCI数据集比作机器学习界的九年义务教育教材。它包含660个数据集像著名的鸢尾花(Iris)、葡萄酒分类(Wine)这些教科书级案例都来自这里。每个数据集都明确标注了样本量、特征维度、缺失值情况甚至还会建议适用的算法类型。实际使用中发现个小技巧下载时优先选择.data后缀的原始数据文件比.arff格式的更易处理。比如用Python读取Adult收入预测数据集import pandas as pd columns [age,workclass,fnlwgt,education,education-num, marital-status,occupation,relationship,race, sex,capital-gain,capital-loss,hours-per-week, native-country,income] data pd.read_csv(adult.data, namescolumns, na_values ?)2.2 Kaggle实战派的首选Kaggle的数据集最大特点是接地气。比如疫情期间开放的COVID-19数据集就包含了全球病例统计、医疗资源分布等实时数据。我去年用这个数据集做的传播预测模型准确率比官方机构还高5个百分点。新手注意Kaggle数据集分为竞赛专用和公开探索两类。建议先从Featured Datasets入手比如TMDB 5000电影数据集就特别适合练手包含预算、票房、评分等完整字段做可视化分析效果惊艳。2.3 AWS开放数据云原生的超大规模选择当你的项目需要TB级数据时AWS开放数据是绝佳选择。比如最近在做的气象预测项目直接调用NOAA的全球气象数据集省去了本地存储的麻烦。最方便的是这些数据已经和AWS的EMR、SageMaker等服务深度集成。实测发现个小福利注册AWS教育版(Educate)账号可以免费使用这些数据集配套的计算资源学生党一定要薅这个羊毛。3. 视觉类数据集让机器看懂世界3.1 MNIST与进阶版从数字识别到街景门牌MNIST手写数字数据集堪称机器学习界的Hello World。但很多人不知道它的升级版SVHN(街景门牌号)更有挑战性。SVHN包含60万张真实场景中的门牌照片数字位置、角度、光照变化丰富。我测试过在MNIST上能达到99%准确率的模型在SVHN上直接掉到70%以下。处理这类图像数据时建议先用OpenCV做标准化import cv2 def preprocess(img): img cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) img cv2.equalizeHist(img) # 直方图均衡化 return img/255.0 # 归一化3.2 COCO目标检测的黄金标准COCO数据集最厉害的是它的标注密度。一张图片里可能标注了几十个物体的精确轮廓和语义关系。去年参加目标检测比赛时我们用COCO训练的YOLOv5模型在小样本迁移学习场景下表现惊人。特别提醒下载COCO数据集建议用官方脚本手动下载18G的压缩包经常出错。官方API也超级好用from pycocotools.coco import COCO coco COCO(annotations/instances_train2017.json) cat_ids coco.getCatIds(catNms[person,dog]) img_ids coco.getImgIds(catIdscat_ids)3.3 自动驾驶专用数据集Udacity开源的自动驾驶数据集包含方向盘转角、油门刹车等驾驶信号特别适合做端到端驾驶模型。我复现英伟达的PilotNet时发现用这些真实数据训练的模型比仿真环境的效果好30%以上。处理视频数据的小技巧先用FFmpeg提取关键帧能减少80%的存储占用ffmpeg -i input.mp4 -vf selecteq(pict_type,I) -vsync vfr keyframes_%03d.png4. 文本类数据集理解人类语言4.1 中文NLP的宝藏搜狗与腾讯数据集做中文NLP最头疼的就是缺乏高质量语料。搜狗实验室开放的新闻数据和腾讯AI Lab的词向量简直是救星。特别是腾讯的800万词向量在金融风控项目中帮我解决了专业术语表征的难题。加载腾讯词向量的正确姿势import gensim model gensim.models.KeyedVectors.load_word2vec_format( Tencent_AILab_ChineseEmbedding.txt, binaryFalse) print(model.most_similar(区块链, topn5))4.2 问答数据集打造智能客服MS MARCO和SQuAD这两个问答数据集各有特色。MS MARCO的问题更接近真实搜索场景比如如何治疗轻度感冒而SQuAD的答案都需要从给定段落中抽取。我们团队发现先用MS MARCO预训练再用SQuAD微调模型效果提升明显。处理长文本问答时这个预处理流程很管用用BERT做段落编码计算问题与段落各句的相似度对Top3句子做答案抽取5. 音频数据集让机器听懂声音5.1 语音识别双雄LibriSpeech与Common VoiceMozilla的Common Voice特别适合做语音合成它有40万条带口音的录音。而LibriSpeech的音频质量更高适合做语音识别。有个取巧的办法用Common Voice做数据增强能显著提升模型鲁棒性。5.2 环境音识别AudioSet的强大之处谷歌AudioSet包含632类环境音从玻璃破碎到狗叫声应有尽有。我们曾用它开发智能家居的异常声音检测系统准确识别率能达到89%。处理这类数据时梅尔频谱图比原始波形更有效import librosa y, sr librosa.load(sound.wav) S librosa.feature.melspectrogram(yy, srsr)6. 数据集使用进阶技巧6.1 数据量不够怎么办遇到小样本问题时我常用这几种方法用ImageDataGenerator做图像增强对文本数据使用回译(中文→英文→中文)用GAN生成合成数据6.2 处理类别不平衡的妙招在医疗影像这类不平衡数据集中这些方法很有效过采样时用SMOTE算法损失函数中加入类别权重采用分层抽样划分数据集6.3 数据集管理的最佳实践多年踩坑总结出的经验原始数据永远保持只读用DVC做数据版本控制预处理脚本要记录所有参数为每个数据集建立数据卡(Data Card)