首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在LabelEncoder中自定义

在LabelEncoder中自定义
EN

Stack Overflow用户
提问于 2021-11-18 07:46:15
回答 1查看 24关注 0票数 0

正在尝试将数据编码为csv文件。课堂上的助教推荐sklearn中的LabelEncoder。有一列名为education_level。我需要按照“高、中、低”的顺序进行编码。但是LabelEncoder.fit_transform默认使用ASCII码,这意味着它将按照“高、低、中”的顺序进行编码。

找不到使用自定义顺序对其进行编码的方法。代码附加在下面。

代码语言:javascript
运行
复制
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn import metrics

# load train.csv
df = pd.read_csv('./train.csv')
objfeatures = df.select_dtypes(include="object").columns
le = preprocessing.LabelEncoder()

# Use Label Encoder
# TODO 
# Any Better Way to encode the data? How to deal with missing values
for feat in objfeatures:
    df[feat] = le.fit_transform(df[feat].astype(str))
EN

回答 1

Stack Overflow用户

发布于 2021-11-18 14:54:08

您应该使用OrdinalEncoder,并使用数组列表定义每列的类别,请参阅help page

代码语言:javascript
运行
复制
from sklearn.preprocessing import OrdinalEncoder

df = pd.DataFrame({'education_level':['High','Medium','Low','Medium'],
'var':['a','b','c','b']})

在这里定义第一列中的顺序,然后定义第二列中的顺序:

代码语言:javascript
运行
复制
oe = OrdinalEncoder(categories=[['High','Medium','Low'],['c','b','a']])

df

  education_level var
0            High   a
1          Medium   b
2             Low   c
3          Medium   b

oe.fit_transform(df)
 
array([[0., 2.],
       [1., 1.],
       [2., 0.],
       [1., 1.]])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70016174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档