我的训练和测试图保持不变,任何人都可以帮助我解释它或解释我哪里出错了吗?
My training and testing graph remains constant, can anyone help me interpret it or explain where have I gone wrong?
我正在做一个简单的机器学习项目。在初始模型中,我的模型过度拟合,正如我通过谷歌搜索和了解过度拟合是什么以及如何检测它所了解的那样。然后我使用 SMOTE 来减少过拟合并尝试查找它是否仍然过拟合。我得到了一张我无法解释的图表,并尝试了几个链接来了解正在发生的事情但失败了。
任何人都可以告诉我这张图是否正确或其中有什么问题? (下面给出图片和代码)
def EF_final(x_train, y_train, x_test, y_test):
train_scores, test_scores = [], []
values = [i for i in range(1, 21)]
# evaluate a decision tree for each depth
for i in values:
# configure the model
model_ef = ExtraTreesClassifier(n_estimators = 80, random_state=42, min_samples_split = 2, min_samples_leaf= 1, max_features = 'sqrt', max_depth= 24, bootstrap=False)
# fit model on the training dataset
model_ef.fit(x_train, y_train)
# evaluate on the train dataset
train_yhat = model_ef.predict(x_train)
train_acc = accuracy_score(y_train, train_yhat)
train_scores.append(train_acc)
# evaluate on the test dataset
test_yhat = model_ef.predict(x_test)
test_acc = accuracy_score(y_test, test_yhat)
test_scores.append(test_acc)
# summarize progress
print('>%d, train: %.3f, test: %.3f' % (i, train_acc, test_acc))
# plot of train and test scores vs tree depth
plt.plot(values, train_scores, '-o', label='Train')
plt.plot(values, test_scores, '-o', label='Test')
plt.legend()
plt.show()
无法在不查看数据的情况下评论模型预测的结果,但可以回答您的标题问题。
您似乎在每个循环中配置和创建相同的模型,而无需使用变量 i
来更改模型深度。即使模型的 random_state 是恒定的,因此您可以期待相同的结果。
考虑将模型配置行切换为
model_ef = ExtraTreesClassifier(n_estimators = 80,min_samples_split = 2, min_samples_leaf= 1, max_features = 'sqrt', max_depth = i, bootstrap=False)
这将更改图表结果以帮助您选择更好的模型,
但是不知道传递的是哪种数据,无法评论准确性。
我正在做一个简单的机器学习项目。在初始模型中,我的模型过度拟合,正如我通过谷歌搜索和了解过度拟合是什么以及如何检测它所了解的那样。然后我使用 SMOTE 来减少过拟合并尝试查找它是否仍然过拟合。我得到了一张我无法解释的图表,并尝试了几个链接来了解正在发生的事情但失败了。
任何人都可以告诉我这张图是否正确或其中有什么问题? (下面给出图片和代码)
def EF_final(x_train, y_train, x_test, y_test):
train_scores, test_scores = [], []
values = [i for i in range(1, 21)]
# evaluate a decision tree for each depth
for i in values:
# configure the model
model_ef = ExtraTreesClassifier(n_estimators = 80, random_state=42, min_samples_split = 2, min_samples_leaf= 1, max_features = 'sqrt', max_depth= 24, bootstrap=False)
# fit model on the training dataset
model_ef.fit(x_train, y_train)
# evaluate on the train dataset
train_yhat = model_ef.predict(x_train)
train_acc = accuracy_score(y_train, train_yhat)
train_scores.append(train_acc)
# evaluate on the test dataset
test_yhat = model_ef.predict(x_test)
test_acc = accuracy_score(y_test, test_yhat)
test_scores.append(test_acc)
# summarize progress
print('>%d, train: %.3f, test: %.3f' % (i, train_acc, test_acc))
# plot of train and test scores vs tree depth
plt.plot(values, train_scores, '-o', label='Train')
plt.plot(values, test_scores, '-o', label='Test')
plt.legend()
plt.show()
无法在不查看数据的情况下评论模型预测的结果,但可以回答您的标题问题。
您似乎在每个循环中配置和创建相同的模型,而无需使用变量 i
来更改模型深度。即使模型的 random_state 是恒定的,因此您可以期待相同的结果。
考虑将模型配置行切换为
model_ef = ExtraTreesClassifier(n_estimators = 80,min_samples_split = 2, min_samples_leaf= 1, max_features = 'sqrt', max_depth = i, bootstrap=False)
这将更改图表结果以帮助您选择更好的模型, 但是不知道传递的是哪种数据,无法评论准确性。