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

Contoh regresi rabung dalam Python

WBOY
WBOYasal
2023-06-10 22:39:521243semak imbas

Regression ridge ialah kaedah regresi linear yang biasa digunakan Ia boleh mencapai hasil yang lebih baik daripada regresi kuasa dua terkecil biasa apabila menangani masalah multikolineariti, dan juga boleh digunakan untuk pemilihan ciri.

Python ialah bahasa pengaturcaraan yang berkuasa, dan sangat mudah untuk menggunakan Python untuk analisis regresi rabung. Artikel ini akan memperkenalkan cara menggunakan Python untuk melakukan analisis regresi rabung melalui contoh.

Pertama, kita perlu mengimport perpustakaan yang diperlukan, seperti yang ditunjukkan di bawah:

import pandas as pd
import numpy as np
from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

Data yang digunakan dalam contoh ini ialah data harga perumahan Boston ini mengandungi 13 rumah yang berbeza di kawasan Boston pada tahun 1970-an Maklumat tentang ciri dan harganya. Kita boleh membaca data masuk melalui fungsi read_csv dalam perpustakaan panda, seperti yang ditunjukkan di bawah:

data = pd.read_csv('Boston.csv')

Seterusnya, kita perlu membahagikan set data kepada set latihan dan set ujian. Ini boleh dicapai menggunakan fungsi train_test_split dalam pustaka scikit-learn, seperti yang ditunjukkan di bawah:

X = data.iloc[:, :-1].values
y = data.iloc[:, -1].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)

Sebelum melatih model regresi rabung, kita perlu menormalkan data untuk memastikan julat nilai ciri yang berbeza sangat berbeza. . boleh membandingkan kesannya pada pembolehubah sasaran. Kita boleh menggunakan fungsi StandardScaler dalam perpustakaan scikit-learn untuk penyeragaman, kodnya adalah seperti berikut:

from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)

Kemudian kita boleh mentakrifkan model regresi rabung dan memasukkannya ke dalam set data latihan kami untuk latihan, kodnya ialah seperti berikut Ditunjukkan:

ridge = Ridge(alpha=0.1)
ridge.fit(X_train, y_train)

Nilai alfa ialah hiperparameter dan model perlu dioptimumkan dengan melaraskan parameter. Kita boleh memilih hiperparameter optimum dengan menilai keputusan ramalan pada set latihan dan ujian. Dalam contoh ini, kami memilih untuk melakukan pengesahan silang pada nilai alfa untuk memilih hiperparameter optimum Kodnya adalah seperti berikut:

from sklearn.model_selection import GridSearchCV
ridge_params = {'alpha': [0.001, 0.01, 0.1, 1, 10]}
ridge_grid = GridSearchCV(estimator=Ridge(), param_grid=ridge_params, cv=10, scoring='neg_mean_squared_error')
ridge_grid.fit(X_train, y_train)
print("Best alpha:", ridge_grid.best_params_['alpha'])

Melalui pengesahan silang, kami memilih nilai alfa optimum untuk menjadi 0.1.

Seterusnya, kita boleh membuat ramalan pada set ujian dan menilai keputusan ramalan. Kita boleh menggunakan fungsi mean_squared_error dalam perpustakaan scikit-learn untuk mengira ralat min kuasa dua, kodnya adalah seperti berikut:

y_pred = ridge.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print("Mean Squared Error:", mse)

Akhir sekali, kita boleh menggunakan perpustakaan matplotlib untuk melukis plot taburan nilai ramalan ​​dan nilai benar untuk lebih memahami kesan ramalan model. Kodnya adalah seperti berikut:

import matplotlib.pyplot as plt
plt.scatter(y_test, y_pred)
plt.xlabel("True Values")
plt.ylabel("Predictions")
plt.show()

Ringkasnya, analisis regresi rabung dalam Python sangat mudah Menggunakan fungsi pustaka scikit-learn boleh membantu kami menilai dan memvisualisasikan hasil ramalan dengan mudah.

Atas ialah kandungan terperinci Contoh regresi rabung 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