问题:多个plot画不到一张图上
解决方法:
多个plot用一个plt.show()即可。
一次plt.show()就会有一次输出。
# 如何让函数画在同一张画布上?
for i in range(1,15,3):
train_score = []
test_score = []
for j in range(1,15,1):
# 一步步找到各个参数的最优值
DTree_classifier = DecisionTreeClassifier(max_depth=i,min_samples_leaf=j)
# 训练数据
DTree_classifier.fit(X_train, y_train)
# 计算预测准确率
train_s = accuracy_score(DTree_classifier.predict(X_train),y_train)
train_score.append(train_s)
test_s = accuracy_score(DTree_classifier.predict(X_test),y_test)
test_score.append(test_s)
plt.plot(train_score,label='Train_max_depth=%d'% i)
plt.plot(test_score,label='Test_max_depth=%d'% i)
plt.xlabel('min_samples_leaf')
plt.ylabel('准确率')
plt.legend()
plt.grid()
结果:
如何将函数绘制在一张图上?
将循环里的plt.show()注释掉
plt.figure(figsize=(10,6))
for i in range(1,15,3):
train_score = []
test_score = []
for j in range(1,15,1):
# 一步步找到各个参数的最优值,这样不科学
DTree_classifier = DecisionTreeClassifier(max_depth=i,min_samples_leaf=j)
# 训练数据
DTree_classifier.fit(X_train, y_train)
# 计算预测准确率
train_s = accuracy_score(DTree_classifier.predict(X_train),y_train)
train_score.append(train_s)
test_s = accuracy_score(DTree_classifier.predict(X_test),y_test)
test_score.append(test_s)
plt.plot(train_score,label='Train_max_depth=%d'% i)
plt.plot(test_score,label='Test_max_depth=%d'% i)
plt.xlabel('min_samples_leaf')
plt.ylabel('准确率')
plt.legend()
plt.grid()
# plt.show()
结果:
✌ Perfect~ ✌