gpt4 book ai didi

python - python机器学习的一个热门编码错误

转载 作者:行者123 更新时间:2023-11-30 09:06:35 26 4
gpt4 key购买 nike

我正在机器学习中处理分类变量。这是我的数据示例:

age,gender,height,class,label
25,m,43,A,0
35,f,45,B,1
12,m,36,C,0
14,f,42,A,0

有两个分类变量性别和高度。我使用了LabelEncoding技术。

我的代码:

import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder,OneHotEncoder

df=pd.read_csv('test.csv')

X=df.drop(['label'],1)
y=np.array(df['label'])

data=X.iloc[:,:].values

lben = LabelEncoder()
data[:,1] = lben.fit_transform(data[:,1])
data[:,3] = lben.fit_transform(data[:,3])

onehotencoder = OneHotEncoder(categorical_features=[1])
data = onehotencoder.fit_transform(data).toarray()

onehotencoder = OneHotEncoder(categorical_features=[3])
data = onehotencoder.fit_transform(data).toarray()

print(data.shape)

np.savetxt('data.csv',data,fmt='%s')

data.csv 看起来像这样:

0.0 0.0 1.0 0.0 0.0 1.0 25.0 0.0
0.0 0.0 0.0 1.0 1.0 0.0 35.0 1.0
1.0 0.0 0.0 0.0 0.0 1.0 12.0 2.0
0.0 1.0 0.0 0.0 1.0 0.0 14.0 0.0

我无法理解为什么该列是这样的,即“高度”列的值在哪里。而且 data.shape 是 (4,8) 而不是 (4,7) 即(性别由 2 表示)列和类别按 3 以及“年龄”和“高度”特征。

最佳答案

您确定需要使用LabelEncoder+OneHotEncoder吗?有一个更简单的方法(它不允许执行高级程序,但到目前为止您似乎在基础知识上工作):

import pandas as pd
import numpy as np

df=pd.read_csv('test.csv')

X=df.drop(['label'],1)
y=np.array(df['label'])

data = pd.get_dummies(X)
<小时/>

当前代码的问题是,在完成第一个 OHE 之后:

onehotencoder = OneHotEncoder(categorical_features=[1])
data = onehotencoder.fit_transform(data).toarray()

列发生了移动,第 3 列实际上是原始的 height 列,而不是标签编码的 class 列。因此,将第二个更改为使用第 4 列,您将得到您想要的结果。

关于python - python机器学习的一个热门编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50895798/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com