изменения `setCalculateVarImportance` приводят к модели` cv2.ml.RTrees` - PullRequest
0 голосов
/ 31 декабря 2018

Глядя на документацию для cv2.ml.RTrees, он говорит:

calcVarImportance - если true, тогда значение переменной будет вычислено, а затем ее можно получить с помощью RTrees :: getVarImportance.

Похоже, этот параметр должен изменяться только в зависимости от того, рассчитывается ли значение переменной или нет.Он не должен изменять выходные данные модели.

Однако, как показывает MCVE ниже, это так.Почему?

import cv2
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
import numpy as np

data = load_breast_cancer()
X = data.data
y = data.target
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1729)

forest = cv2.ml.RTrees_create()
forest.setTermCriteria((cv2.TERM_CRITERIA_MAX_ITER,10,1))
forest.setCalculateVarImportance(True)
forest.train(cv2.ml.TrainData_create(np.float32(X_train), 0, y_train))
preds = forest.predict(np.float32(X_test), 0)[1]
print(sum(preds))
# output: [94.]

forest = cv2.ml.RTrees_create()
forest.setTermCriteria((cv2.TERM_CRITERIA_MAX_ITER,10,1))
forest.setCalculateVarImportance(False)
forest.train(cv2.ml.TrainData_create(np.float32(X_train), 0, y_train))
preds_new = forest.predict(np.float32(X_test), 0)[1]
print(sum(preds_new))
# output: [95.]
...