如何对电影数据集的整个Series_Title列应用Ordinal Encoding?
对整个Series_Title列应用序数编码的方法
方法一:使用Pandas内置Category类型(快速便捷)
无需单独创建小数据集,直接对原DataFrame的目标列处理即可:
# 在原数据中新增编码后的列 df['Series_Title_encoded'] = df['Series_Title'].astype('category').cat.codes # 若需替换原列,执行: # df['Series_Title'] = df['Series_Title'].astype('category').cat.codes
Pandas会自动为每个唯一电影名称分配唯一整数编码,编码顺序基于名称的字典排序。
方法二:使用Scikit-learn的OrdinalEncoder(适配机器学习工作流)
如果后续要配合Scikit-learn的其他工具(如数据集拆分、模型管道),这种方法更规范:
from sklearn.preprocessing import OrdinalEncoder # 初始化编码器 encoder = OrdinalEncoder() # 编码器要求输入为二维数组,因此用[[]]包裹列名 df['Series_Title_encoded'] = encoder.fit_transform(df[['Series_Title']])
该方法可保留编码器实例,后续处理测试数据时直接调用encoder.transform(test_data[['Series_Title']]),避免训练/测试集编码不一致。
注意事项
- 序数编码的整数仅用于区分类别,无大小含义,适合树模型等对类别顺序不敏感的模型;若用线性回归等模型,需注意序数编码的局限性(1000个类别用独热编码会导致维度爆炸,因此序数编码仍是更优选择)。
- 务必在拆分训练集和测试集前完成编码(或用fit_transform处理训练集、transform处理测试集),防止数据泄露。
内容的提问来源于stack exchange,提问作者Archit Chawla
相关产品推荐
相关产品推荐

