Search code examples
pythonscikit-learnlogistic-regression

sklearn logistic regression loss value during training


Is there a way to obtain loss value at each iteration while training a logistic regression?

Python sklearn show loss values during training has an working example for SGDRegressor however not working for logistic regression.


Solution

  • I think you should change the parameter verbose or remove it. It works for me when you remove it, by default, "verbose=0".

    old_stdout = sys.stdout
    sys.stdout = mystdout = StringIO()
    clf = LogisticRegression()
    clf.fit(X_tr, y_tr)
    sys.stdout = old_stdout
    loss_history = mystdout.getvalue()
    loss_list = []
    for line in loss_history.split('\n'):
        if(len(line.split("loss: ")) == 1):
            continue
        loss_list.append(float(line.split("loss: ")[-1]))
    plt.figure()
    plt.plot(np.arange(len(loss_list)), loss_list)
    plt.savefig("warmstart_plots/pure_LogRes:"+".png")
    plt.xlabel("Time in epochs")
    plt.ylabel("Loss")
    plt.close()