Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Contoh regresi Lasso dalam Python

Contoh regresi Lasso dalam Python

WBOY
WBOYasal
2023-06-10 20:52:551830semak imbas

Regression Lasso ialah kaedah regresi linear popular yang digunakan dalam pembelajaran mesin, yang bertujuan untuk mencari model yang paling sesuai dengan mengabaikan pembolehubah ciri yang tidak berkaitan. Artikel ini akan memperkenalkan cara melaksanakan regresi Lasso dalam Python dan menyediakan set data sebenar untuk demonstrasi.

Pengenalan kepada Regresi Lasso

Regresi Lasso ialah kaedah untuk menyelesaikan masalah kuasa dua terkecil biasa dengan menambahkan istilah penalti pada fungsi objektif. Istilah penalti ini dilaksanakan menggunakan regularisasi L1 (juga dipanggil penalti Lasso), dan bentuknya adalah seperti berikut:

$J(eta)= rac{1}{2n}sum_{i=1}^ {n }(y_i-sum_{j=1}^{p}X_{ij} eta_j)^2 + lpha sum_{j=1}^{p}| eta_j|$

di mana , $y$ berada pembolehubah bergerak balas, $X$ ialah matriks pembolehubah bebas, $eta$ ialah pekali model, $n$ ialah bilangan sampel, $p$ ialah bilangan ciri, dan $lpha$ ialah parameter penalti. Bahagian sukar regresi Lasso ialah masalah pengoptimuman bukan cembung bagi tempoh penalti.

Salah satu cara untuk melaksanakan regresi Lasso ialah menyelesaikannya melalui algoritma turunan koordinat (CD). Idea asasnya ialah dalam setiap lelaran, hanya satu pekali diubah. Dengan cara ini, algoritma CD dengan bijak memintas masalah pengoptimuman bukan cembung bagi tempoh penalti.

Pelaksanaan regresi Python Lasso

Python menyediakan banyak perpustakaan pembelajaran mesin, seperti Scikit-learn, yang boleh melaksanakan regresi Lasso dengan mudah.

Mula-mula, import perpustakaan yang diperlukan seperti berikut:

import numpy as np
import pandas as pd
from sklearn.linear_model import LassoCV
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler

Seterusnya, kami memuatkan set data harga rumah Boston dan menormalkannya:

boston = load_boston()
X = boston.data
y = boston.target
X = StandardScaler().fit_transform(X)

Kemudian, kami menggunakan Scikit-learn LassoCV dalam melaksanakan regresi Lasso. Model secara automatik melakukan pengesahan silang dan memilih nilai $lpha$ yang optimum.

lasso_reg = LassoCV(alphas=np.logspace(-3, 3, 100), cv=5, max_iter=100000)
lasso_reg.fit(X, y)

Akhir sekali, kami mengeluarkan nilai $lpha$ optimum dan pekali model yang terhasil:

print('Best alpha:', lasso_reg.alpha_)
print('Model coefficients:', lasso_reg.coef_)

Contoh kod penuh:

import numpy as np
import pandas as pd
from sklearn.linear_model import LassoCV
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler

boston = load_boston()
X = boston.data
y = boston.target
X = StandardScaler().fit_transform(X)

lasso_reg = LassoCV(alphas=np.logspace(-3, 3, 100), cv=5, max_iter=100000)
lasso_reg.fit(X, y)

print('Best alpha:', lasso_reg.alpha_)
print('Model coefficients:', lasso_reg.coef_)

Hasil output adalah seperti berikut:

Best alpha: 0.10000000000000002
Model coefficients: [-0.89521162  1.08556604  0.14359222  0.68736347 -2.04113155  2.67946138
  0.01939491 -3.08179223  2.63754058 -2.05806301 -2.05202597  0.89812875
 -3.73066641]

Ini menunjukkan bahawa melalui regresi Lasso, kita boleh menentukan model terbaik untuk meramalkan harga rumah Boston dan mengekstrak ciri yang paling berkaitan dengan pembolehubah tindak balas.

Kesimpulan

Artikel ini memperkenalkan cara melaksanakan regresi Lasso dalam Python dan menunjukkan penggunaan kaedah ini melalui set data sebenar. Regresi Lasso ialah teknik regresi linear yang sangat berguna, terutamanya sesuai untuk memproses data berdimensi tinggi. Dalam masalah sebenar, teknik seperti pengesahan silang dan penyeragaman boleh digunakan untuk mengoptimumkan prestasi model dan mengekstrak ciri yang paling relevan.

Atas ialah kandungan terperinci Contoh regresi Lasso dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn