我已经阅读了文档和网络上的各种资源,但我不知道如何在sklearn中为线性回归模型实现SGD的动量变体。任何帮助我开始的建议都将不胜感激。
from sklearn import linear_modelfrom sklearn.datasets import load_bostonX,y = load_boston().data,load_boston().targetclf = linear_model.SGDRegressor(loss='squared_loss',penalty='l2',alpha=0.01,max_iter=1000)clf.fit(X, y)print('Score:',clf.score(X,y))print('Regression coefficients:',clf.coef_)print('deviation:',clf.intercept_ )
回答:
一种解决方法是使用没有隐藏层的MLPRegressor
,这与执行LinearRegression
是相同的效果。
这样您就可以使用SGD
的动量变体,如adam
。
您可以按以下方式操作:
from sklearn.neural_network import MLPRegressorfrom sklearn.datasets import make_regressionfrom sklearn.model_selection import train_test_splitX, y = make_regression(n_samples=5_000, random_state=1, n_features=10)X_train, X_test, y_train, y_test = train_test_split(X, y)clf = MLPRegressor(solver='adam', alpha=0.01, max_iter=5000, hidden_layer_sizes=(), )clf.fit(X_train, y_train)print('Score:',clf.score(X_test,y_test))print('Regression coefficients:',clf.coefs_[0])print('deviation:',clf.intercepts_ [0])