您好,登錄后才能下訂單哦!
這篇文章主要介紹了如何解析python實現Lasso回歸的方法,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Lasso原理
Lasso與彈性擬合比較python實現
import numpy as np import matplotlib.pyplot as plt from sklearn.metrics import r2_score #def main(): # 產生一些稀疏數據 np.random.seed(42) n_samples, n_features = 50, 200 X = np.random.randn(n_samples, n_features) # randn(...)產生的是正態分布的數據 coef = 3 * np.random.randn(n_features) # 每個特征對應一個系數 inds = np.arange(n_features) np.random.shuffle(inds) coef[inds[10:]] = 0 # 稀疏化系數--隨機的把系數向量1x200的其中10個值變為0 y = np.dot(X, coef) # 線性運算 -- y = X.*w # 添加噪聲:零均值,標準差為 0.01 的高斯噪聲 y += 0.01 * np.random.normal(size=n_samples) # 把數據劃分成訓練集和測試集 n_samples = X.shape[0] X_train, y_train = X[:n_samples // 2], y[:n_samples // 2] X_test, y_test = X[n_samples // 2:], y[n_samples // 2:] # 訓練 Lasso 模型 from sklearn.linear_model import Lasso alpha = 0.1 lasso = Lasso(alpha=alpha) y_pred_lasso = lasso.fit(X_train, y_train).predict(X_test) r2_score_lasso = r2_score(y_test, y_pred_lasso) print(lasso) print("r^2 on test data : %f" % r2_score_lasso) # 訓練 ElasticNet 模型 from sklearn.linear_model import ElasticNet enet = ElasticNet(alpha=alpha, l1_ratio=0.7) y_pred_enet = enet.fit(X_train, y_train).predict(X_test) r2_score_enet = r2_score(y_test, y_pred_enet) print(enet) print("r^2 on test data : %f" % r2_score_enet) plt.plot(enet.coef_, color='lightgreen', linewidth=2, label='Elastic net coefficients') plt.plot(lasso.coef_, color='gold', linewidth=2, label='Lasso coefficients') plt.plot(coef, '--', color='navy', label='original coefficients') plt.legend(loc='best') plt.title("Lasso R^2: %f, Elastic Net R^2: %f" % (r2_score_lasso, r2_score_enet)) plt.show()
運行結果
感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何解析python實現Lasso回歸的方法”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。