决策树:超过 2 个类,如何表示类中的元素与非类中的元素?

人工智能 分类 决策树
2021-11-01 11:28:05

我正在构建一个决策树,并希望(例如)将 0 类中的元素与 1 类和 2 类中的元素分开,例如:

df = pd.DataFrame(np.random.randn(500,2),columns=list('AB'))
cdf = pd.DataFrame(columns=['C'])
cdf = pd.concat([cdf,pd.DataFrame(np.random.randint(0,3, size=500), columns=['C'])])
#df=pd.concat([df,cdf], axis=1)
(X_train, X_test, y_train, y_test) = train_test_split(df,cdf,test_size=0.30)
y_train=y_train.astype('int')
classifier = DecisionTreeClassifier(criterion='entropy',max_depth = 2)
classifier.fit(X_train, y_train)
y_pred = classifier.predict(X_test)

C表示元素的类,A并且B是定义元素的两个变量,我怎样才能构建一个树,而不是将结果划分为C=0C=1或者C=2将它们划分为C=0C!=0

1个回答

我认为决策树不可能做到这一点,除非您可以将某种置信度度量用作阈值。

我在使用 ID3 算法时遇到了同样的问题。它分配类,但您只有得到的类,没有任何置信度或概率。

一种可能的解决方案是添加一些反例作为第二个(虚拟的,包罗万象的)类;如果 的元素C = 0合理紧密地聚集在一起,并且您的反例C != 0涵盖了剩余的问题空间,那么这可能会起作用。