天天看點

Skleran-線性模型-ElasticNetCVElasticNetCVsklearn.linear_model.ElasticNetsklearn.linear_model.MultiTaskElasticNet

  • ElasticNetCV
  • sklearn.linear_model.ElasticNet
  • sklearn.linear_model.MultiTaskElasticNet

ElasticNetCV

Skleran-線性模型-ElasticNetCVElasticNetCVsklearn.linear_model.ElasticNetsklearn.linear_model.MultiTaskElasticNet

sklearn.linear_model.ElasticNet

class sklearn.linear_model.ElasticNet(alpha=1.0, *, l1_ratio=0.5, fit_intercept=True, 
normalize=False, precompute=False, max_iter=1000, copy_X=True, tol=0.0001, warm_start=False, 
positive=False, random_state=None, selection='cyclic')
           

參數:

alpha:float, default=1.0
	乘以懲罰條件的常數。預設為1.0。alpha=0相當于一個普通的最小二乘,由LinearRegression對象求解。
	出于數值原因,不建議使用alpha=0。
l1_ratio:float, default=0.5
	ElasticNet混合參數, 對于l1_ratio =0,懲罰是L2懲罰。對于l1_ratio =1,這是l1懲罰。
	對于0< l1_ratio <1,懲罰是l1和L2的組合。
fit_intercept:bool, default=True
	是否應該估計截距。如果為False,則假定資料已居中。
normalize:bool, default=False
	當fit_intercept設定為False時,忽略此參數。如果為真,則回歸前,通過減去平均值并除以l2範數,
	對回歸數X進行歸一化。
precompute:bool or array-like of shape (n_features, n_features), default=False
	是否使用預計算的程式矩陣加快計算速度。
max_iter:int, default=1000
	最大疊代次數
copy_X:bool, default=True
	如果為True,将複制X;否則,可能會覆寫它。
tol:float, default=1e-4
	優化公差:如果更新小于tol,則優化代碼檢查雙間隙的最優性,并繼續,直到它小于tol。
warm_start:bool, default=False
	當設定為True時,重用上一個調用的解決方案以适應初始化,否則,隻需删除上一個解決方案。
positive:bool, default=False
	當設定為True時,強制系數為正。
random_state:int, RandomState instance, default=None
	選擇要更新的随機特征的僞随機數生成器的種子。
selection:{‘cyclic’, ‘random’}, default=’cyclic’
	如果設定為“随機”,則每次疊代都會更新一個随機系數,而不是預設情況下按順序在特征上循環
           

屬性:

coef_:ndarray of shape (n_features,) or (n_targets, n_features)
	參數向量(成本函數公式中的w)
sparse_coef_:sparse matrix of shape (n_features, 1) or (n_targets, n_features)
	拟合系數的稀疏表示_
intercept_:float or ndarray of shape (n_targets,)
	決策函數中的獨立項。
n_iter_:list of int
	為達到指定公差而運作的疊代次數。
           

另見

ElasticNetCV

彈性網絡模型經交叉驗證,具有最佳的模型選擇.

SGDRegressor

通過增量訓練實作彈性網絡回歸。

SGDClassifier

用彈性淨罰實作Logistic回歸(SGDClassifier(loss=“log”, penalty=“elasticnet”)).

方法:

__init__(self, alpha=1.0, *, l1_ratio=0.5, fit_intercept=True, normalize=False,
 precompute=False, max_iter=1000, copy_X=True, tol=0.0001, warm_start=False, 
 positive=False, random_state=None, selection='cyclic')
初始化
           
fit(self, X, y, sample_weight=None, check_input=True)
參數
X:{ndarray, sparse matrix} of (n_samples, n_features)
資料
y:{ndarray, sparse matrix} of shape (n_samples,) or (n_samples, n_targets)
标簽
           
sample_weight:float or array-like of shape (n_samples,), default=None
樣本權重
check_input:bool, default=True
允許繞過多個輸入檢查。
           
get_params(self, deep=True)
擷取參數。
參數:
deepbool, default=True
如果為True,則傳回此估計器的參數以及包含的子對象(即估計器)。
	傳回:
		params:mapping of string to any
		映射到其值的參數名。
           
alphas:ndarray, default=None

precompute:‘auto’, bool or array-like of shape (n_features, n_features), default=’auto’

Xy:array-like of shape (n_features,) or (n_features, n_outputs), default=None

copy_X:bool, default=True

coef_init:ndarray of shape (n_features, ), default=None
系數的初始值。
verbose:bool or int, default=False

return_n_iter:bool, default=False
是否傳回疊代次數
positive:bool, default=False

check_input:bool, default=True

**params:kwargs

傳回:
alphas:ndarray of shape (n_alphas,)

coefs:ndarray of shape (n_features, n_alphas) or (n_outputs, n_features, n_alphas)

dual_gaps:ndarray of shape (n_alphas,)

n_iters:list of int
           
predict(self, X)
參數:
X:array_like or sparse matrix, shape (n_samples, n_features)
傳回:
C:array, shape (n_samples,)
傳回預測值

score(self, X, y, sample_weight=None)
	傳回預測的決定系數R^2。

	系數R^2定義為(1-u/v),其中u是殘差平方和((y_true-y_pred)**2).sum(),
	v是平方和的總和((y_true-y_true.mean())**2).sum()。最好的分數是1.0,
	它可以是負的(因為模型可以任意惡化)。一個常數模型總是預測y的期望值,
	而不考慮輸入特性,則得到R^2分數為0.0。
	參數:
		X:array-like of shape (n_samples, n_features)
		測試樣本。
		y:array-like of shape (n_samples,) or (n_samples, n_outputs)
		X的真值。
		sample_weight:array-like of shape (n_samples,), default=None
		樣本權重。
	傳回:
		scorefloat
		得分
set_params(self, **params)
	設定此估計器的參數。
	參數:
		**params:dict
		估計參數
	傳回:
		Self:object
		估計執行個體
           

執行個體

import numpy as np
from sklearn import linear_model

# #############################################################################
# Generate sample data
n_samples_train, n_samples_test, n_features = 75, 150, 500
np.random.seed(0)
coef = np.random.randn(n_features)
coef[50:] = 0.0  # only the top 10 features are impacting the model
X = np.random.randn(n_samples_train + n_samples_test, n_features)
y = np.dot(X, coef)

# Split train and test data
X_train, X_test = X[:n_samples_train], X[n_samples_train:]
y_train, y_test = y[:n_samples_train], y[n_samples_train:]

# #############################################################################
# Compute train and test errors
alphas = np.logspace(-5, 1, 60)
enet = linear_model.ElasticNet(l1_ratio=0.7, max_iter=10000)
train_errors = list()
test_errors = list()
for alpha in alphas:
    enet.set_params(alpha=alpha)
    enet.fit(X_train, y_train)
    train_errors.append(enet.score(X_train, y_train))
    test_errors.append(enet.score(X_test, y_test))

i_alpha_optim = np.argmax(test_errors)
alpha_optim = alphas[i_alpha_optim]
print("Optimal regularization parameter : %s" % alpha_optim)

# Estimate the coef_ on full data with optimal regularization parameter
enet.set_params(alpha=alpha_optim)
coef_ = enet.fit(X, y).coef_

# #############################################################################
# Plot results functions

import matplotlib.pyplot as plt
plt.subplot(2, 1, 1)
plt.semilogx(alphas, train_errors, label='Train')
plt.semilogx(alphas, test_errors, label='Test')
plt.vlines(alpha_optim, plt.ylim()[0], np.max(test_errors), color='k',
           linewidth=3, label='Optimum on test')
plt.legend(loc='lower left')
plt.ylim([0, 1.2])
plt.xlabel('Regularization parameter')
plt.ylabel('Performance')

# Show estimated coef_ vs true coef
plt.subplot(2, 1, 2)
plt.plot(coef, label='True coef')
plt.plot(coef_, label='Estimated coef')
plt.legend()
plt.subplots_adjust(0.09, 0.04, 0.94, 0.94, 0.26, 0.26)
plt.show()
           

sklearn.linear_model.MultiTaskElasticNet

Skleran-線性模型-ElasticNetCVElasticNetCVsklearn.linear_model.ElasticNetsklearn.linear_model.MultiTaskElasticNet
class sklearn.linear_model.MultiTaskElasticNet(alpha=1.0, *, l1_ratio=0.5, fit_intercept=True, 
normalize=False, copy_X=True, max_iter=1000, tol=0.0001, warm_start=False, 
random_state=None, selection='cyclic')

>>> from sklearn import linear_model
>>> clf = linear_model.MultiTaskElasticNet(alpha=0.1)
>>> clf.fit([[0,0], [1, 1], [2, 2]], [[0, 0], [1, 1], [2, 2]])
MultiTaskElasticNet(alpha=0.1)
>>> print(clf.coef_)
[[0.45663524 0.45612256]
 [0.45663524 0.45612256]]
>>> print(clf.intercept_)
[0.0872422 0.0872422]