Python在机器学习中的数据处理

数据清洗这块绝对是重灾区。拿缺失值来说,之前傻乎乎地直接dropna(),结果样本量骤降三分之一。后来学会用Pandas的isnull().sum()先摸清底细,发现不同字段得区别对待:数值型用fillna(mean()),分类变量干脆单独标成"未知"类别。特别是遇到年龄字段有5%缺失时,如果用中位数填充反而比直接删除更保留分布规律。这里推荐试试Scikit-learn的SimpleImputer,支持中位数、众数、常量多种填充策略,配合Pipeline还能避免数据泄露。

异常值处理有个血泪教训。有次发现某型号车的里程数居然有998万公里,追查发现是数据录入时把"未登记"错误编码成9999999。这种明显超出三倍标准差的极端值,用箱线图或describe()查看五数概括最直观。处理时不要暴力删除,可以按1%~99%分位数进行Winsorize缩尾,或者对连续变量做log(1+x)变换。上次对房价数据取对数后,偏度系数从9.8直接降到0.3,效果立竿见影。

类别特征编码这块坑最多。最开始用LabelEncoder把颜色'红','蓝','红'转成0,1,0,结果模型误以为蓝色大于红色。后来改用OneHotEncoder生成哑变量,但遇到"车辆品牌"这种有50多个取值的字段,维度爆炸直接拖垮训练效率。这时候其实可以用均值编码------比如按每个品牌对应的价格均值来编码,既保留信息又控制维度。现在更推荐category_encoders库,支持TargetEncoder、CountEncoder等十多种编码方式,还能自动处理未见过的类别。

特征工程才是真正拉开差距的地方。之前预测餐厅销量时,把"开业日期"转换成"经营年限"后,特征重要性排名从末尾跃升到前三。时间序列里经常要提取年月日、是否节假日;地理信息可以计算周边竞品密度;文本描述先用jieba分词再统计词频。最近用featuretools库自动生成特征,通过对客户交易表进行深度特征合成,半小时就构造出"最近三个月退款率"这类业务特征,比手工效率提升十倍不止。

数据标准化经常被新手忽略。上次用KNN算法时,因为年龄范围0-100而收入范围0-500000,模型完全被收入特征主导。后来在Sklearn里比较了StandardScaler和MinMaxScaler,发现带正则化的线性模型用标准化,图像处理用归一化更合适。特别注意要先拆分训练测试集再分别标准化,用训练集的scaler去transform测试集,这是最容易犯的错误之一。

最后安利几个高效工具链。Pandas_profiling三行代码生成数据报告,能直观看到缺失值分布和相关性矩阵;Sklearn的ColumnTransformer可以对数值型和分类型特征并行处理;再用Pipeline把预处理和模型打包成统一流程,测试集上直接transform一路到底。最近在用的ydata-profiling更强大,连数据质量报告和版本对比都能生成。

其实机器学习项目里大约60%时间都花在数据处理上,但这部分投入绝对物超所值。记得刚开始总想跳过预处理直接建模,结果在垃圾数据上堆再复杂的模型也是白搭。后来坚持用Python这套工具链认真做完数据清洗、特征工程、数据标准化三板斧,哪怕用最简单的随机森林,效果都比在脏数据上跑XGBoost强得多。各位在实战中有什么数据处理的心得体会,欢迎在评论区交流拍砖。

相关推荐
weixin_307779132 小时前
C++代码实现MATLAB中的dlarray函数功能
开发语言·c++·算法·matlab
一水鉴天5 小时前
映射、哈希表与哈斯图:计算机科学的三种基线 20261003(元宝)
开发语言·人工智能
Frank_refuel5 小时前
C++11之一场名为“搬家”的 C++ 之旅
开发语言·c++
海绵宝宝转agent6 小时前
learn-claude-code第1-5章开源学习笔记分享
人工智能·笔记·python·学习
小奇不哭6 小时前
ROS2 单节点,RGB-D 深度相机局部路径提取 + B 样条平滑路径 + YOLOv8 障碍物检测 + 深度测距,用于移动机器人视觉局部循迹。
python·yolov8·ros2·cv2·路径探索循迹
每天都要写算法(努力版)6 小时前
【行业前沿报告】DAgger:让智能体在自己走到的状态上学习
人工智能·学习·机器学习
小小龙学IT6 小时前
Python scikit-learn 机器学习库深度解析
python·机器学习·scikit-learn
Wang's Blog6 小时前
Java 项目实战: 外卖平台优化-Nginx配置文件结构与块层级
java·开发语言·nginx
2601_962071577 小时前
类变量和全局变量的查找路径有什么区别?
开发语言·python
FL16238631297 小时前
智慧医疗X光图像小儿手腕外伤检测数据集VOC+YOLO格式2538张9类别
人工智能·yolo·机器学习