python的实验报告参考文献 python参考文献有哪些( 四 )


简单地说,成本复杂性是一个阈值 。只有当模型的整体不纯度改善了一个大于该阈值的值时,该模型才会将一个节点进一步拆分为其子节点,否则将停止 。
当CCP值较低时,即使不纯度减少不多,该模型也会将一个节点分割成子节点 。随着树的深度增加,这一点很明显,也就是说,当我们沿着决策树往下走时,我们会发现分割对模型整体不纯度的变化没有太大贡献 。然而,更高的分割保证了类的正确分类,即准确度更高 。
当CCP值较低时,会创建更多的节点 。节点越高,树的深度也越高 。
下面的代码(Scikit Learn)说明了如何对alpha进行调整,以获得更高精度分数的模型 。
path = model_gini.cost_complexity_pruning_path(X_train, y_train)ccp_alphas, impurities = path.ccp_alphas, path.impuritiesfig, ax = plt.subplots(figsize=(16,8));ax.plot(ccp_alphas[:-1], impurities[:-1], marker='o', drawstyle="steps-post");ax.set_xlabel("effective alpha");ax.set_ylabel("total impurity of leaves");ax.set_title("Total Impurity vs effective alpha for training set");让我们了解随着alpha的变化深度和节点数的变化 。
clfs = clfs[:-1]ccp_alphas = ccp_alphas[:-1]node_counts = [clf.tree_.node_count for clf in clfs]depth = [clf.tree_.max_depth for clf in clfs]fig, ax = plt.subplots(2, 1,figsize=(16,8))ax[0].plot(ccp_alphas, node_counts, marker='o', drawstyle="steps-post")ax[0].set_xlabel("alpha")ax[0].set_ylabel("number of nodes")ax[0].set_title("Number of nodes vs alpha")ax[1].plot(ccp_alphas, depth, marker='o', drawstyle="steps-post")ax[1].set_xlabel("alpha")ax[1].set_ylabel("depth of tree")ax[1].set_title("Depth vs alpha")fig.tight_layout()了解α增加时精度的变化 。
fig, ax = plt.subplots(figsize=(16,8)); #设置大小train_scores = [clf.score(X_train, y_train) for clf in clfs]test_scores = [clf.score(X_test, y_test) for clf in clfs]ax.set_xlabel("alpha")ax.set_ylabel("accuracy")ax.set_title("Accuracy vs alpha for training and testing sets")ax.plot(ccp_alphas, train_scores, marker='o', label="train",drawstyle="steps-post")ax.plot(ccp_alphas, test_scores, marker='o', label="test",drawstyle="steps-post")ax.legend()plt.show()i = np.arange(len(ccp_alphas))ccp = pd.DataFrame({'Depth': pd.Series(depth,index=i),'Node' : pd.Series(node_counts, index=i),'ccp' : pd.Series(ccp_alphas, index = i),'train_scores' : pd.Series(train_scores, index = i),'test_scores' : pd.Series(test_scores, index = i)})ccp.tail()ccp[ccp['test_scores']==ccp['test_scores'].max()]上面的代码提供了在测试数据中产生最高精度的成本计算剪枝值 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: