Как построить участок в Лассо с каждой валидацией? - PullRequest
1 голос
/ 08 февраля 2020

Я пытаюсь построить график зависимости, то есть график переменной важности, с каждой итерационной проверкой в ​​k раз. Я не знаю, как это сделать, за один прогон я могу получить график с помощью команды lasso.coef, но не могу построить график изменения переменной важности с каждым сгибом.

enter image description here

Это график, который я получил с помощью лассо, теперь я хочу этот график для всех итераций с 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()
...