python - 针对最大深度绘制决策树训练/测试精度
问题描述
我试图从决策树模型中绘制我的训练集和测试集的准确性。由于我是使用 python 的新手,我不确定我应该使用哪种类型的图形包。我使用了一个简单的 for 循环来获取打印结果,但不确定如何绘制它。
谢谢!
我的代码:
for x in max_depth_list :
dtc =DecisionTreeClassifier(max_depth=x)
dtc.fit(train_x,train_y)
train_z = dtc.predict(train_x)
train_z_prob = dtc.predict_proba(train_x)[:,1]
test_z = dtc.predict(test_x)
test_z_prob = dtc.predict_proba(test_x)[:,1]
print("split: {}".format(x))
print("model accuracy: {}".format(accuracy_score(test_y, test_z)))
所需图表 在此处输入图像描述
解决方案
您发布的图像中的情节很可能是使用该matplotlib.pyplot
模块创建的。假设您已导入其他必要的依赖项,您可能可以通过执行类似的操作来绘制类似的图表:
import numpy as np
import matplotlib.pyplot as plt
max_depth_list = [1,2,3,4]
train_errors = [] # Log training errors for each model
test_errors = [] # Log testing errors for each model
for x in max_depth_list:
dtc = DecisionTreeClassifier(max_depth=x)
dtc.fit(train_x,train_y)
train_z = dtc.predict(train_x)
test_z = dtc.predict(test_x)
train_errors.append(accuracy_score(train_x, train_z))
test_errors.append(accuracy_score(test_y, test_z))
x = np.arange(len(max_depth_list)) + 1 # Create domain for plot
plt.plot(x, train_errors, label='Training Error') # Plot training error over domain
plt.plot(x, test_errors, label='Testing Error') # Plot testing error over domain
plt.xlabel('Maximum Depth') # Label x-axis
plt.ylabel('Total Error') # Label y-axis
plt.legend() # Show plot labels as legend
plt.show() # Show graph
我也是这个社区的新手,所以我无法向其他用户提供建议。但是,格式化源代码以获得更好的可读性和演示效果可能是一个好主意。只是一个抬头。
我希望这有帮助。让我知道是否有任何不清楚的地方。
推荐阅读
- rust - 为什么 len() 和 is_empty() 没有在特征中定义?
- python-3.x - 当路径中存在空格时,IPython 魔术命令 %notebook 不起作用(Google Colab)
- postgresql - 数据库创建错误:拒绝访问 - Odoo 10
- r - 如何在r中的时间序列分析图中添加条形图y轴中的值总数
- security - 无限9'
' 不是允许的元素 - tvos - 在 Apple 描述文件管理器中管理 AppleTV
- build - Chromium 的唯一 GPU 构建解决方案
- c++ - std::deque 是可移动构造的,但不是“nothrow”
- django - 使用 zappa 部署的 aws lambda django 应用程序 - python 导入优先级
- excel - VLOOKUP 不适用于通过 VBA 的所有行