sklearn 分类变量转换

sklearn 分类变量转换

在用进行机器学习模型建立时,我们拿到的数据总是包含有分类变量和数值型变量,但是sklearn模型要求的输入都是数值型的。因此,在构建模型之前,我们需要对分类变量进行转换。

分类变量的类型

分类变量一般分为无序分类变量和有序分类变量,对应的,在sklearn中,我们需要使用OnehotEncoder和OrdinalEncoder

python 复制代码
from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder()
X = [['Male', 'US'], ['Female', 'CN'], ['Female', 'UK']]
enc.fit(X)
python 复制代码
from sklearn.preprocessing import OrdinalEncoder
enc = OrdinalEncoder()
X = [['Male', 1], ['Female', 3], ['Female', 2]]
enc.fit(X)

复杂情况

有时我们的数据变量情况很复杂,是多种变量类型的组合,如:

无序分类变量和数值型变量

python 复制代码
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.compose import make_column_transformer
from sklearn.compose import make_column_selector
import numpy as np
import pandas as pd  
X = pd.DataFrame({'city': ['London', 'London', 'Paris', 'Sallisaw'],
                  'rating': [5, 3, 4, 5]})  
ct = make_column_transformer(
      (StandardScaler(),
       make_column_selector(dtype_include=np.number)),  # rating,数值型变量,用StandardScaler处理
      (OneHotEncoder(),
       make_column_selector(dtype_include=object)))  # city,无序的分类变量,用OneHotEncoder处理
ct.fit_transform(X)

无序分类变量,有序分类变量和数值型变量

python 复制代码
from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder
from sklearn.compose import ColumnTransformer
import numpy as np
import pandas as pd  
X = pd.DataFrame({'city': ['London', 'London', 'Paris', 'Sallisaw'],
                  'Frequency': ['No', 'No', 'Sometimes','Always'],
                  'rating': [5, 3, 4, 5]})  
ct = ColumnTransformer(
    [("onehot", OneHotEncoder(), ['city']), # city, 无序分类变量,用OneHotEncoder处理
     ("ordinal", OrdinalEncoder(categories=['No', 'Sometimes', 'Always']), ['Frequency'])], # Frequency,有序分类变量,用OrdinalEncoder处理,并设置顺序categories=['No', 'Sometimes', 'Always']
     remainder='passthrough') # remainder,剩余的变量保存不变
ct.fit_transform(X)
相关推荐
大模型任我行4 分钟前
阿里:揭示RLVR训练不稳定性根源
人工智能·语言模型·自然语言处理·论文笔记
沃达德软件4 小时前
视频增强技术解析
人工智能·目标检测·机器学习·计算机视觉·超分辨率重建
魔乐社区5 小时前
GLM-5上线魔乐社区,基于昇腾的模型推理+训练部署教程请查收!
人工智能·开源·大模型
geneculture5 小时前
化繁为简且以简驭繁:唯文论英汉对照哲学术语49个主义/论
人工智能·融智学的重要应用·哲学与科学统一性·信息融智学·融智时代(杂志)
睡醒了叭5 小时前
coze-工作流-http请求
人工智能·aigc
twilight_4696 小时前
机器学习与模式识别——机器学习中的搜索算法
人工智能·python·机器学习
冰西瓜6006 小时前
深度学习的数学原理(十)—— 权重如何自发分工
人工智能·深度学习·计算机视觉
niuniudengdeng6 小时前
基于时序上下文编码的端到端无文本依赖语音分词模型
人工智能·数学·算法·概率论
Soonyang Zhang7 小时前
flashinfer attention kernel分析
人工智能·算子·推理框架
林籁泉韵78 小时前
2026年GEO服务商推荐:覆盖多场景适配,助力企业AI时代增长
人工智能