{"action":"created","issue":{"url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/5036","labels_url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/5036/labels{/name}","comments_url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/5036/comments","events_url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/5036/events","html_url":"https://github.com/scikit-learn/scikit-learn/pull/5036","id":97452852,"number":5036,"title":"[MRG] Deprecate n_iter in SGDClassifier and implement max_iter","user":{"login":"TomDLT","id":11065596,"avatar_url":"https://avatars.githubusercontent.com/u/11065596?v=3","gravatar_id":"","url":"https://api.github.com/users/TomDLT","html_url":"https://github.com/TomDLT","followers_url":"https://api.github.com/users/TomDLT/followers","following_url":"https://api.github.com/users/TomDLT/following{/other_user}","gists_url":"https://api.github.com/users/TomDLT/gists{/gist_id}","starred_url":"https://api.github.com/users/TomDLT/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TomDLT/subscriptions","organizations_url":"https://api.github.com/users/TomDLT/orgs","repos_url":"https://api.github.com/users/TomDLT/repos","events_url":"https://api.github.com/users/TomDLT/events{/privacy}","received_events_url":"https://api.github.com/users/TomDLT/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/scikit-learn/scikit-learn/milestones/15","html_url":"https://github.com/scikit-learn/scikit-learn/milestones/0.17","labels_url":"https://api.github.com/repos/scikit-learn/scikit-learn/milestones/15/labels","id":995666,"number":15,"title":"0.17","description":"","creator":{"login":"amueller","id":449558,"avatar_url":"https://avatars.githubusercontent.com/u/449558?v=3","gravatar_id":"","url":"https://api.github.com/users/amueller","html_url":"https://github.com/amueller","followers_url":"https://api.github.com/users/amueller/followers","following_url":"https://api.github.com/users/amueller/following{/other_user}","gists_url":"https://api.github.com/users/amueller/gists{/gist_id}","starred_url":"https://api.github.com/users/amueller/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amueller/subscriptions","organizations_url":"https://api.github.com/users/amueller/orgs","repos_url":"https://api.github.com/users/amueller/repos","events_url":"https://api.github.com/users/amueller/events{/privacy}","received_events_url":"https://api.github.com/users/amueller/received_events","type":"User","site_admin":false},"open_issues":62,"closed_issues":19,"state":"open","created_at":"2015-02-25T18:59:07Z","updated_at":"2015-09-11T20:45:13Z","due_on":"2015-09-20T04:00:00Z","closed_at":null},"comments":14,"created_at":"2015-07-27T12:32:56Z","updated_at":"2015-09-11T20:53:26Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/scikit-learn/scikit-learn/pulls/5036","html_url":"https://github.com/scikit-learn/scikit-learn/pull/5036","diff_url":"https://github.com/scikit-learn/scikit-learn/pull/5036.diff","patch_url":"https://github.com/scikit-learn/scikit-learn/pull/5036.patch"},"body":"Solve #5022\r\nIn SGDClassifier, SGDRegressor, Perceptron, PassiveAgressive:\r\n- **Deprecate `n_iter`.** Default is now `None`. If not None, it warns and sets `max_iter = n_iter` and `tol = 0`, to have exact previous behavior.\r\n- **Implement `max_iter` and `tol`.** The stopping criterion in `sgd_fast._plain_sgd()` is identical to the one in SAG new solver for Ridge and LogisticRegression.\r\n- **Add `self.n_iter_` after the fit.** For multiclass classifiers, we keep the maximum `n_iter_` over all binary (OvA) fits."},"comment":{"url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/comments/139659045","html_url":"https://github.com/scikit-learn/scikit-learn/pull/5036#issuecomment-139659045","issue_url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/5036","id":139659045,"user":{"login":"amueller","id":449558,"avatar_url":"https://avatars.githubusercontent.com/u/449558?v=3","gravatar_id":"","url":"https://api.github.com/users/amueller","html_url":"https://github.com/amueller","followers_url":"https://api.github.com/users/amueller/followers","following_url":"https://api.github.com/users/amueller/following{/other_user}","gists_url":"https://api.github.com/users/amueller/gists{/gist_id}","starred_url":"https://api.github.com/users/amueller/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amueller/subscriptions","organizations_url":"https://api.github.com/users/amueller/orgs","repos_url":"https://api.github.com/users/amueller/repos","events_url":"https://api.github.com/users/amueller/events{/privacy}","received_events_url":"https://api.github.com/users/amueller/received_events","type":"User","site_admin":false},"created_at":"2015-09-11T20:53:26Z","updated_at":"2015-09-11T20:53:26Z","body":"Hm this is breaking behavior, right?\r\nShouldn't we add ``tol=None`` and warn that it'll change in the future?"}}