环境配置这块,很多新手直接pip乱装一气,等到项目迁移直接傻眼。现在正经点的项目谁不用虚拟环境?venv或者conda都行,我习惯用conda管理不同Python版本。依赖管理光靠requirements.txt不够看,pipenv或者poetry才是现代开发该有的样子。特别是poetry,一条命令同时处理虚拟环境和依赖安装,还能区分开发依赖和生产依赖,打包发布也帮你搞定。
数据处理这块,pandas的read_csv函数够你研究半天。encoding参数不指定,中文文件分分钟报错。parse_dates能自动转换日期列,dtype参数强制指定类型,比读进来再转换省心多了。遇到几百万行的大文件,chunksize参数让你流式读取,内存根本爆不了。最近发现个神器叫pyjanitor,链式调用的数据处理写法,比传统的pandas代码清爽多了。
特征工程里有个坑:测试集的数据标准化如果直接用fit_transform就数据泄露了。正确做法是训练集fit_transform,测试集只transform。category_encoders这个库比sklearn的OneHotEncoder好用,支持二十多种编码方式。TargetEncoder处理高基数分类变量效果拔群,但要注意过拟合。
建模阶段,sklearn的Pipeline太重要了。ColumnTransformer里可以给数值型和分类型特征分别定义处理流程,最后接上估计器,整套流程封装得明明白白。交叉验证现在都用cross_val_score,比手动分割数据集科学多了。超参数调优别一上来就搞GridSearch,先用HalvingGridSearchCV或者Optuna这类智能搜索算法,效率能翻倍。
模型解释性不能丢。SHAP值现在已经是标配了,force_plot可视化单个样本的预测解释,summary_plot看整体特征重要性,比feature_importances靠谱多了。遇到需要部署的模型,可以用pickle保存,但更推荐joblib,特别是含有numpy数组的模型,文件体积小得多。
数据可视化别只知道matplotlib了。plotly做出的图表交互性直接拉满,altair的声明式语法特别适合探索性分析。seaborn的pairplot快速看特征关系,jointplot分析两个变量的联合分布相当直观。
最后说说项目结构。数据科学项目也得有工程化规范,src目录放核心代码,tests写单元测试,notebooks只管探索分析,config.yaml统一管理文件路径和超参数。用pre-commit钩子做代码检查,black自动格式化,isort整理import语句。
这些东西都是实打实影响开发效率的细节。可能刚开始觉得繁琐,等真正在团队协作或者处理复杂项目时,这些规范能让你少加很多班。数据科学早过了只会写脚本的阶段,工程化思维才是进阶的关键。
2346

被折叠的 条评论
为什么被折叠?



