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)
相关推荐
HinsCoder10 分钟前
【miclaw】——小米手机龙虾配置教程
人工智能·智能手机·llm·agent·openclaw·miclaw·手机龙虾
TMT星球12 分钟前
从智能出行到智能家电,探路生态携智能空间全栈产品矩阵亮相AWE
大数据·人工智能·矩阵
AI-Ming21 分钟前
程序员转行学习AI大模型:位置编码
人工智能·神经网络·学习
阿钱真强道26 分钟前
34 Python 离群点检测:什么是离群点?为什么要做异常检测?
python·sklearn·异常检测·异常·离群点检测
AC赳赳老秦27 分钟前
OpenClaw关键词挖掘Agent配置(附SOP脚本,可直接复制使用)
java·大数据·开发语言·人工智能·python·pygame·openclaw
进击的野人28 分钟前
深入RAG:从理论到实践的 ETL 核心流程
人工智能·spring·agent
央链知播31 分钟前
以价值立品牌 以生态共成长 —— 明月三千里的高质量发展实践
大数据·人工智能
leo__52032 分钟前
MATLAB高斯背景建模与目标提取(人体检测)
开发语言·人工智能·matlab
深藏功yu名34 分钟前
Day24(进阶篇):向量数据库 Chroma_FAISS 深度攻坚 —— 索引优化、性能调优与生产级落地
数据库·人工智能·python·ai·agent·faiss·chroma
AI扑社39 分钟前
AI时代下品牌建设的革命:从流量争夺到AI赋能的价值深耕
大数据·人工智能·geo·ai搜索