簡體   English   中英

Matlab:決策樹顯示無效的輸出值

[英]Matlab : decision tree shows invalid output values

我正在使用classregtree(X,Y)函數制作決策樹。 我將X傳遞為大小為70X9的矩陣(70個數據對象,每個具有9個屬性),Y作為70X1矩陣。 我的每個Y值都是2或4.但是,在形成的決策樹中,它為某些葉節點賦予值2.5或3.5。

有什么想法可能會導致這種情況嗎?

您正在回歸模式下使用classregtree(這是默認模式)。 將模式更改為分類模式。

以下是使用CLASSREGTREE進行分類的示例:

%# load dataset
load fisheriris

%# split training/testing
cv = cvpartition(species, 'holdout',1/3);
trainIdx = cv.training;
testIdx = cv.test;

%# train
t = classregtree(meas(trainIdx,:), species(trainIdx), 'method','classification', ...
    'names',{'SL' 'SW' 'PL' 'PW'});

%# predict
pred = t.eval(meas(testIdx,:));

%# evaluate
cm = confusionmat(species(testIdx),pred)
acc = sum(diag(cm))./sum(testIdx)

輸出(混淆矩陣和准確度):

cm =
    17     0     0
     0    13     3
     0     2    15
acc =
          0.9

樹

現在,如果您的目標類被編碼為數字,則返回的預測仍將是字符串的單元格數組,因此您必須將它們轉換回數字:

%# load dataset
load fisheriris
[species,GN] = grp2idx(species);

%# ...

%# evaluate
cm = confusionmat(species(testIdx),str2double(pred))
acc = sum(diag(cm))./sum(testIdx)

請注意,分類總是返回字符串,所以我認為你可能錯誤地使用了method=regression選項,它執行回歸 (數字目標)而不是分類 (離散目標)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM