分类:目标有2个以上的类

2024-05-15 21:18:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个分类练习,面对一个有两个以上分类类的目标。我用Labelencoder对这些类进行了编码。 唯一的问题是,我相信我可能必须使用Onehotencoding之后,因为我不再只有0和1,而是0,1,2,3。 事实是,我只是不知道Knn或决策T是否会接受这些数字作为类。如果没有,有人能告诉我怎么做吗?你知道吗

我的第一个目标是:

Good 
bad
medium
excellent

我改为:

1
3
2
0

我想我真正的问题是,这可以直接用作我的目标类或我需要进一步的工程?你知道吗


Tags: 目标编码分类数字工程事实mediumbad
1条回答
网友
1楼 · 发布于 2024-05-15 21:18:46

Sklearn中的大多数模型都支持多类,而不需要一个热编码。KNN和DecisionTree也支持它。你知道吗

让我们用一个玩具的例子来验证这一点

from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier

f = [[1, 2], [3.2, 4.5], [2.0, 0.75], [0.25, 3.68]]

t = [1,
3,
2,
0]

lr = LogisticRegression().fit(f, t)
d = DecisionTreeClassifier().fit(f, t)
r = RandomForestClassifier().fit(f, t)
n = KNeighborsClassifier(n_neighbors=3).fit(f, t)

lr.predict(f) # array([3, 3, 2, 0])
d.predict(f) # array([3, 3, 2, 0])
r.predict(f) # array([3, 3, 2, 0])
n.predict(f) # array([0, 0, 0, 0])

如您所见,它们都支持多类而不需要任何热编码。你知道吗

如果你想使用一个神经网络,那么你可能需要一个热编码的标签上的损失函数的基础上使用。你知道吗

相关问题 更多 >