def _set_description(self, dfe):
importances = pd.Series(self.model.feature_importances_, index=dfe.get_features().columns).sort_values(ascending=False)
y = dfe.df[dfe.target]
X = dfe.df.drop(dfe.target, axis=1)
train_sizes, train_scores, test_scores = learning_curve(self.model, X, y, n_jobs=self.n_jobs)
train_scores_mean = np.mean(train_scores, axis=1)
train_scores_std = np.std(train_scores, axis=1)
test_scores_mean = np.mean(test_scores, axis=1)
test_scores_std = np.std(test_scores, axis=1)
pic = ImageFile.create()
with pic.plot() as plt_fig:
plt, fig = plt_fig
fig.set_figwidth(12)
plt.subplot(121)
importances.plot(kind="bar")
ax2 = plt.subplot(122)
ax2.fill_between(train_sizes, train_scores_mean - train_scores_std,
train_scores_mean + train_scores_std, alpha=0.1,color="r")
ax2.fill_between(train_sizes, test_scores_mean - test_scores_std,
test_scores_mean + test_scores_std, alpha=0.1, color="g")
ax2.plot(train_sizes, train_scores_mean, "o-", color="r", label="????" if self.lang == "ja" else "Training score")
ax2.plot(train_sizes, test_scores_mean, 'o-', color="g", label="????" if self.lang == "ja" else "Cross-validation score")
ax2.set_xlabel("??????(??)" if self.lang == "ja" else "data records")
ax2.set_ylabel("??" if self.lang == "ja" else "accuracy")
ax2.set_ylim(0, 1)
ax2.legend(loc="best")
params = (self.score, self.model.__class__.__name__)
self.description = {
"ja": Description("???????{:.3f}??(?????:{})?????????????????????".format(*params), pic),
"en": Description("The model accuracy is {:.3f}(model is {}). The contributions of each features are here.".format(*params), pic)
}
评论列表
文章目录