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)
相关推荐
耿雨飞5 小时前
第三章:LangChain Classic vs. 新版 LangChain —— 架构演进与迁移指南
人工智能·架构·langchain
BizViewStudio5 小时前
甄选 2026:AI 重构新媒体代运营行业的三大核心变革与落地路径
大数据·人工智能·新媒体运营·媒体
俊哥V5 小时前
AI一周事件 · 2026年4月8日至4月14日
人工智能·ai
GitCode官方5 小时前
G-Star Gathering Day 杭州站回顾
人工智能·开源·atomgit
宇擎智脑科技6 小时前
开源 AI Agent 架构设计对比:Python 单体 vs TypeScript 插件化
人工智能·openclaw·hermes agent
冷色系里的一抹暖调7 小时前
OpenClaw Docker部署避坑指南:服务启动成功但网页打不开?
人工智能·docker·容器·openclaw
曹牧7 小时前
自动编程AI落地方案‌
人工智能
天云数据7 小时前
Harness革命:企业级AI从“失控野马”到“价值引擎”的跃迁
人工智能
汽车仪器仪表相关领域7 小时前
NHVOC-70系列固定污染源挥发性有机物监测系统:精准破局工业VOCs监测痛点,赋能环保合规升级
大数据·人工智能·安全性测试
克里斯蒂亚诺·罗纳尔达7 小时前
智能体学习23——资源感知优化(Resource-Aware Optimization)
人工智能·学习