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)
相关推荐
IT 行者2 分钟前
Web逆向工程AI工具:WebScout MCP Server,给AI装上眼睛和手
人工智能·逆向·web逆向·mcp
管二狗赶快去工作!4 分钟前
体系结构论文(九十三):LLM-Aided Compilation for Tensor Accelerators
人工智能·语言模型·自然语言处理·bug·体系结构
Anycall.Q5 分钟前
RE-IMAGEN(ICLR 2023)
人工智能·计算机视觉·imagen
CS创新实验室17 分钟前
AI 领域的 Harness Engineering:概念、实践与前景综述
人工智能·机器学习·aigc·harness
Gary jie31 分钟前
OpenClaw4月更新的梦境记忆巩固系统
人工智能·深度学习·opencv·目标检测·机器学习·长短时记忆网络
beyond阿亮31 分钟前
Claude Code零基础入门安装使用指南
人工智能·ai·claude code
赵侃侃爱分享31 分钟前
AI怎么定义网络安全
人工智能·安全·web安全
key_3_feng35 分钟前
MCP协议:解锁AI模型与外部世界的高效协作
大数据·人工智能·mcp
Linux猿35 分钟前
高通量藻类细胞检测数据集,YOLO目标检测|附数据集下载
人工智能·yolo·目标检测·目标跟踪·yolo目标检测·yolo目标检测数据集·高通量藻类细胞检测数据集
薛定猫AI37 分钟前
【技术干货】用 design.md 驯服 AI 生成前端:从 Awesome Design 到工程化落地实践
前端·人工智能