这是我的代码,可以在你的环境中运行。我正在使用RandomForestClassifier
,并尝试找出RandomForestClassifier
中选择样本的decision_path
。
import numpy as np
import pandas as pd
from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier
X, y = make_classification(n_samples=1000,
n_features=6,
n_informative=3,
n_classes=2,
random_state=0,
shuffle=False)
# Creating a dataFrame
df = pd.DataFrame({'Feature 1':X[:,0],
'Feature 2':X[:,1],
'Feature 3':X[:,2],
'Feature 4':X[:,3],
'Feature 5':X[:,4],
'Feature 6':X[:,5],
'Class':y})
y_train = df['Class']
X_train = df.drop('Class',axis = 1)
rf = RandomForestClassifier(n_estimators=50,
random_state=0)
rf.fit(X_train, y_train)
我最终达成的是这个:
#Extracting the decision path for instance i = 12
i_data = X_train.iloc[12].values.reshape(1,-1)
d_path = rf.decision_path(i_data)
print(d_path)
但输出的结果并不是很清晰:
(<1x7046 压缩稀疏行矩阵,类型为 '<class 'numpy.int64'>', 其中有486个元素存储在Compressed Sparse Row格式中>, array([ 0, 133, 282, 415, 588, 761, 910, 1041, 1182, 1309, 1432, 1569, 1728, 1869, 2000, 2143, 2284, 2419, 2572, 2711, 2856, 2987, 3128, 3261, 3430, 3549, 3704, 3839, 3980, 4127, 4258, 4389, 4534, 4671, 4808, 4947, 5088, 5247, 5378, 5517, 5640, 5769, 5956, 6079, 6226, 6385, 6524, 6655, 6780, 6925, 7046], dtype=int32))
我想要找到数据框中粒子样本的决策路径。有没有人能告诉我该如何操作呢?
我的想法是得到类似于 这个 的图表。