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)
相关推荐
key_3_feng3 分钟前
AI_Agent入门开发指南
人工智能·ai agent
IT界的渣5 分钟前
AI文章改写系统源码,AI文字创作系统,AI文章工具原创一手源码,支持多个自媒体多平台
人工智能·媒体·ai自动写文章·ai文章工具·ai文章改写源码·ai文字创作系统
逻辑君5 分钟前
物理学研究报告【20260001】
人工智能·算法
MarkHD9 分钟前
本地化人工智能实践:下载并运行通义千问Qwen2.5-4B模型
人工智能
武汉唯众智创9 分钟前
从0到1搭建AI心理健康预警系统:我是如何用BERT+BiLSTM捕捉情绪拐点的
人工智能·ai大模型·ai心理健康·校园心理健康·ai心理健康预警系统
新知图书9 分钟前
带搜索工具的对话 Agent示例与解析
人工智能·langchain·agent·智能体·langgraph
小仙女的小稀罕12 分钟前
适合企业行政开工作会议的,一加会议转任务工具
大数据·人工智能
AI科技星14 分钟前
算法联盟·全域数学公理体系下黑洞标量毛发与LVK引力波O4全维理论、求导、证明、计算、验证、分析
人工智能·线性代数·算法·架构·学习方法·量子计算
YuanDaima204816 分钟前
图论基础原理与题目说明
数据结构·人工智能·python·算法·图论·手撕代码