Я пытаюсь построить график зависимости, то есть график переменной важности, с каждой итерационной проверкой в k раз. Я не знаю, как это сделать, за один прогон я могу получить график с помощью команды lasso.coef
, но не могу построить график изменения переменной важности с каждым сгибом.
Это график, который я получил с помощью лассо, теперь я хочу этот график для всех итераций с k-кратным увеличением.
lasso = Lasso(alpha=0.001)
model = lasso.fit(X_train,Y_train)
score2 = model.coef_
importance = pd.Series(score2, colname)
importance.nlargest(35).plot(kind='barh')
train_score = lasso.score(X_train, Y_train)
test_score = lasso.score(X_test, Y_test)
print("training score: ", train_score)
print("test score: ", test_score)
coef = lasso.coef_
importance = pd.Series(coef, colname)
importance.nlargest(35).plot(kind='barh')
#Step6: k fold validation
from sklearn.model_selection import cross_val_score
cvlasso=Lasso(alpha=0.001)
score = cross_val_score(cvlasso,X_train,Y_train,cv=10)
#cvlasso.fit(X,Y)
print(score)
print(np.mean(score))
Это l oop для построения переменной.
cvlasso=Lasso(alpha=0.001)
score = cross_val_score(cv=10)
from sklearn.model_selection import KFold
kf =KFold(n_splits=10)
cvlasso= Lasso(alpha=0.001)
count = 1
for X_train, _ in kf.split(X, Y):
cvlasso.fit(X_train, Y_train)
importances_index_desc = np.argsort(cvlasso.feature_importances_)[::-1]
feature_labels = list(X.columns.values)
# plot
plt.figure()
plt.bar(feature_labels, cvlasso.feature_importances_[importances_index_desc])
plt.xticks(feature_labels, rotation='vertical')
plt.ylabel('Importance')
plt.xlabel('Features')
plt.title('Fold {}'.format(count))
count = count + 1
plt.show()