<h3 dir="auto">Describe the workflow you want to enable</h3>
<p dir="auto">Getting an estimate time for a model to train or an estimated time remaining before the training is completed.</p>
<h3 dir="auto">Describe your proposed solution</h3>
<p dir="auto">Understand computational resources to get an estimate on time to train. OR<br>
Use the already elapsed time to computed estimated time remaining. For example. if 10% training gets completed in 60 sec, ETA for 100% becomes 600 sec or similar.</p>
<h3 dir="auto">Describe alternatives you've considered, if relevant</h3>
<p dir="auto">Tried scitime but thats a very invasive method. Would prefer a method that is more tightly coupled with sklearn functionality.</p>
<h3 dir="auto">Additional context</h3>
<p dir="auto"><em>No response</em></p>
<p dir="auto">Ideally, I think, operations that take a lot of time should both:</p>
<ul dir="auto">
<li>have a way of showing progress, and</li>
<li>be interruptable.</li>
</ul>
<p dir="auto">It was previously discussed at least in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="593898" data-permission-text="Title is private" data-url="https://github.com/scikit-learn/scikit-learn/issues/78" data-hovercard-type="issue" data-hovercard-url="/scikit-learn/scikit-learn/issues/78/hovercard" href="https://github.com/scikit-learn/scikit-learn/issues/78">#78</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="180925916" data-permission-text="Title is private" data-url="https://github.com/scikit-learn/scikit-learn/issues/7574" data-hovercard-type="issue" data-hovercard-url="/scikit-learn/scikit-learn/issues/7574/hovercard" href="https://github.com/scikit-learn/scikit-learn/issues/7574">#7574</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="181637061" data-permission-text="Title is private" data-url="https://github.com/scikit-learn/scikit-learn/issues/7596" data-hovercard-type="issue" data-hovercard-url="/scikit-learn/scikit-learn/issues/7596/hovercard" href="https://github.com/scikit-learn/scikit-learn/issues/7596">#7596</a>.</p>
<p dir="auto">Regarding progress, in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="180925916" data-permission-text="Title is private" data-url="https://github.com/scikit-learn/scikit-learn/issues/7574" data-hovercard-type="issue" data-hovercard-url="/scikit-learn/scikit-learn/issues/7574/hovercard" href="https://github.com/scikit-learn/scikit-learn/issues/7574">#7574</a> <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amueller/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amueller">@amueller</a> proposed not bake progress bar in, but rather add callbacks. In <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="181637061" data-permission-text="Title is private" data-url="https://github.com/scikit-learn/scikit-learn/issues/7596" data-hovercard-type="issue" data-hovercard-url="/scikit-learn/scikit-learn/issues/7596/hovercard" href="https://github.com/scikit-learn/scikit-learn/issues/7596">#7596</a> <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/denis-bz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/denis-bz">@denis-bz</a> suggested to have callbacks that are passed locals(), which is an interesting idea. I also saw that <code class="notranslate">fit()</code> in  <code class="notranslate">GradientBoostingClassifier</code> has the <code class="notranslate">monitor</code> parameter, which makes showing progress bars easy.</p>
<p dir="auto">In <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="181637061" data-permission-text="Title is private" data-url="https://github.com/scikit-learn/scikit-learn/issues/7596" data-hovercard-type="issue" data-hovercard-url="/scikit-learn/scikit-learn/issues/7596/hovercard" href="https://github.com/scikit-learn/scikit-learn/issues/7596">#7596</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/denis-bz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/denis-bz">@denis-bz</a> suggested callbacks can also be used to interrupt computation. In our project, Orange (<a href="https://github.com/biolab/orange3">https://github.com/biolab/orange3</a>), we do something similar: sometimes, where there is no other available mechanism, we raise a BaseException inside a callback to interrupt running threads.</p>
<p dir="auto">Orange uses scikit-learn a lot and lack of callbacks in scikit-learn makes showing progress or interrupting hard (we'd like to allow stopping of running computations). For now, we have to resort to hacks. For example, inour Neural Network widget, we subclassed scikit-learn NNs and added a callback on <code class="notranslate">n_iter_</code> change (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="305525908" data-permission-text="Title is private" data-url="https://github.com/biolab/orange3/issues/2958" data-hovercard-type="pull_request" data-hovercard-url="/biolab/orange3/pull/2958/hovercard" href="https://github.com/biolab/orange3/pull/2958">biolab/orange3#2958</a>)</p>
<p dir="auto">We would like to help in implementing callbacks, but first, we are asking if you would even consider having something similar to  <code class="notranslate">GradientBoostingClassifier</code> <code class="notranslate">monitor</code> in the other classes. What do you think?</p>
<p dir="auto">Then, we could try thinking of an interface together and slowly start adding it to certain classed.</p>