Scikit learn 决策树Sklearn-如何在每个终端节点上构建一个具有一个数据点的完全成长树?
我应该如何在每个终端节点上构建一个具有一个数据点的完全成长的决策树?我正在寻找一个树模型,它给出的样本内错误率等于0%Scikit learn 决策树Sklearn-如何在每个终端节点上构建一个具有一个数据点的完全成长树?,scikit-learn,decision-tree,Scikit Learn,Decision Tree,我应该如何在每个终端节点上构建一个具有一个数据点的完全成长的决策树?我正在寻找一个树模型,它给出的样本内错误率等于0% from sklearn import tree clf = tree.DecisionTreeClassifier(random_state=0, min_samples_split=2, max_depth=100000000) clf = clf.fit(feature, tgt) pred = clf.predict(feature) * tgt len(pred[
from sklearn import tree
clf = tree.DecisionTreeClassifier(random_state=0, min_samples_split=2, max_depth=100000000)
clf = clf.fit(feature, tgt)
pred = clf.predict(feature) * tgt
len(pred[pred > 0]) / len(pred)
我期望从这段代码中得到1.0,但由于某些原因,得到57% 默认情况下,
max\u depth=None
和min\u samples\u split=2
,以便树可以展开到
所有终端节点仅包含一个样本。也就是说,你不必猜答案
完全生长的树的最大深度
至于错误率,你不能得到1.0,因为显然,
将阳性样本数len(pred[pred>0])
除以总数
样本数量len(pred)
。试试这个:
>>将numpy作为np导入
>>>np.平均值(clf.预测(特征)=tgt)
1
但使用scikit学习分类器提供的score
方法更方便:
>clf.fit(功能,tgt)
>>>clf.得分(特征,tgt)
1
它返回给定特征和目标的平均精度,即您的实际情况
正在查找。tgt是否包含任何0值?@MaximilianPeters否。它是1和-1。保留
max\u depth=None
和min\u samples\u split=2
以展开节点,直到所有叶子都是纯的。使用clf.score(feature,tgt)
来计算精度,而不是代码中的最后两个命令。@SanjarAdylov刚刚尝试过。成功了。你能添加一些解释并把它放在一个答案中吗?@user1559897 Sure.hmmmm发布的代码没有“将阳性样本数len(pred[pred>0])除以样本总数len(pred)”。