Python 使用class_权重时无法解释决策树

Python 使用class_权重时无法解释决策树,python,machine-learning,scikit-learn,decision-tree,Python,Machine Learning,Scikit Learn,Decision Tree,我正在处理一个不平衡的数据集。我正在使用决策树(scikit learn)构建一个模型

我正在处理一个不平衡的数据集。我正在使用决策树(scikit learn)构建一个模型<为了解释我的问题,我使用了iris数据集。

当我设置class\u weight=None时,我理解了当我使用predict\u proba时,树是如何分配概率分数的
当我设置class_weight='balanced'时,我知道它使用目标值来计算类权重,但我无法理解树是如何分配概率分数的

import sklearn.datasets as datasets
import pandas as pd
import numpy as np
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split

from sklearn.externals.six import StringIO  
from IPython.display import Image  
from sklearn.tree import export_graphviz
import pydotplus

iris=datasets.load_iris()
df=pd.DataFrame(iris.data, columns=iris.feature_names)
y=iris.target

X_train, X_test, y_train, y_test = train_test_split(df, y, test_size=0.33, random_state=1)

# class_weight=None
dtree=DecisionTreeClassifier(max_depth=2)
dtree.fit(X_train,y_train)

dot_data = StringIO()
export_graphviz(dtree, out_file=dot_data, filled=True, rounded=True, special_characters=True, feature_names=X_train.columns)
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())  
Image(graph.create_png()) # I use jupyter-notebook for visualizing the image

树指定的概率和我的比率(通过查看树图像确定)是匹配的

当我使用选项class\u weights='balanced'时。我得到下面的树

# class_weight='balanced' 
dtree_balanced=DecisionTreeClassifier(max_depth=2, class_weight='balanced')
dtree_balanced.fit(X_train,y_train)

dot_data = StringIO()
export_graphviz(dtree_balanced, out_file=dot_data,filled=True, rounded=True, special_characters=True, feature_names=X_train.columns)
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())  
Image(graph.create_png())

我正在使用下面的代码打印唯一概率

probas = dtree_balanced.predict_proba(X_train)
print(np.unique(probas[:,0]))
print(np.unique(probas[:,1]))
print(np.unique(probas[:,2]))
我无法理解(想出一个公式)树是如何分配这些概率的

probas = dtree_balanced.predict_proba(X_train)
print(np.unique(probas[:,0]))
print(np.unique(probas[:,1]))
print(np.unique(probas[:,2]))