Contoh regresi polinomial dalam Python

WBOY
Lepaskan: 2023-06-10 09:17:50
asal
1931 orang telah melayarinya

Regression polinomial ialah kaedah yang biasa digunakan dalam masalah regresi Ia membina model dengan memasang polinomial pada data, supaya model boleh meramalkan nilai sasaran dengan lebih tepat. Python menyediakan pelbagai pustaka pemprosesan data dan pembelajaran mesin yang boleh melaksanakan model regresi polinomial dengan mudah. Artikel ini akan memperkenalkan cara melaksanakan regresi polinomial dalam Python dan memberi contoh berdasarkan regresi polinomial.

1. Prinsip regresi polinomial

Prinsip regresi polinomial agak mudah iaitu menerangkan nilai pembolehubah bebas melalui fungsi polinomial. Iaitu:

$y = b_0 + b_1x_1 + b_2x_2^2 + ... + b_nx_n^n$

Di mana, $y$ ialah pembolehubah bersandar, $b_0, b_1, b_2 , .. , b_n$ ialah pekali regresi, $x_1, x_2, ... , x_n$ ialah pembolehubah bebas. Oleh kerana regresi polinomial boleh meningkatkan fleksibiliti model, ia sering digunakan dalam masalah yang memerlukan tahap pemasangan yang tinggi.

2. Regresi polinomial dilaksanakan dalam Python

Dalam Python, regresi polinomial boleh dilaksanakan melalui perpustakaan scikit-learn. Pustaka scikit-learn ialah perpustakaan pembelajaran mesin yang biasa digunakan dalam Python, menyediakan pelbagai model dan alatan untuk memproses data dan membina model.

Berikut ialah langkah pelaksanaan regresi polinomial yang mudah:

  1. Import pustaka yang diperlukan
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
Salin selepas log masuk

Pustaka numpy dan pustaka matplotlib diimport di sini kelas dan kelas PolynomialFeatures dalam perpustakaan sklearn.

  1. Sediakan data
# 创建数据
x = np.linspace(-10, 10, num=50).reshape(-1, 1) # 自变量数据
y = np.sin(x) + np.random.randn(50, 1) * 0.2 # 因变量数据
Salin selepas log masuk

Di sini kita menggunakan fungsi linspace dalam perpustakaan numpy untuk menjana 50 data pembolehubah bebas yang sama jaraknya dari -10 hingga 10, dan menggunakan fungsi sin Hasilkan data pembolehubah bersandar. Untuk menjadikan keputusan lebih realistik, beberapa bunyi rawak turut ditambah.

  1. Model latihan
# 使用多项式模型拟合数据
poly_reg = PolynomialFeatures(degree=5) # degree表示多项式的次数
x_poly = poly_reg.fit_transform(x)
lin_reg = LinearRegression()
lin_reg.fit(x_poly, y)
Salin selepas log masuk

Kelas PolynomialFeatures digunakan untuk menukar pembolehubah bebas x kepada polinomial, dan kemudian kelas LinearRegression digunakan untuk memproses data polinomial. Gunakan kaedah muat untuk melatih model.

  1. Hasil tervisualisasi
# 可视化结果
plt.scatter(x, y)
plt.plot(x, lin_reg.predict(poly_reg.fit_transform(x)), color='red')
plt.show()
Salin selepas log masuk

Pustaka matplotlib digunakan di sini untuk menggambarkan hasil. Data mentah dipaparkan melalui plot serakan dan keluk regresi polinomial diplot pada graf.

3. Contoh Regresi Polinomial

Pertimbangkan contoh: meramal jarak pemanduan berdasarkan kelajuan dan masa brek kereta. Kami menggunakan set data yang disediakan oleh Udacity untuk menyelesaikan masalah ini. Set data termasuk kelajuan kereta, masa brek dan jarak pemanduan yang sepadan.

  1. Import pustaka dan data yang diperlukan
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures

# 读入数据
data = pd.read_csv('data/car.csv')
Salin selepas log masuk

Di sini set data kereta yang disimpan dalam fail csv dibaca.

  1. Prapemprosesan data
# 提取特征和目标
X = data.iloc[:, :-1].values
y = data.iloc[:, -1].values

# 将刹车时间转为2维数据
X = X.reshape(-1, 1)

# 划分训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)
Salin selepas log masuk

Pustaka panda digunakan di sini untuk membaca data ke dalam format DataFrame. Kemudian gunakan kaedah iloc untuk mengekstrak ciri dan sasaran mengikut lajur, dan gunakan fungsi bentuk semula untuk menukar masa brek kepada data 2 dimensi. Akhir sekali, gunakan fungsi train_test_split untuk membahagikan set data secara berkadar kepada set latihan dan set ujian.

  1. Model latihan dan ujian
# 训练模型
poly_reg = PolynomialFeatures(degree = 2)
X_poly = poly_reg.fit_transform(X_train)
lin_reg = LinearRegression()
model = lin_reg.fit(X_poly, y_train)

# 可视化结果
plt.scatter(X_train, y_train, color='red')
plt.plot(X_train, lin_reg.predict(poly_reg.fit_transform(X_train)), color='blue')
plt.title('Car distance prediction')
plt.xlabel('Speed + Brake Time')
plt.ylabel('Distance')
plt.show()

# 测试模型
y_pred = model.predict(poly_reg.fit_transform(X_test))
Salin selepas log masuk

Di sini kelas PolynomialFeatures digunakan untuk menukar data kepada polinomial kuadratik, dan kemudian kelas LinearRegression digunakan untuk memproses data polinomial . Kemudian gunakan kaedah muat untuk melatih model. Akhir sekali, gunakan kaedah ramalan untuk meramalkan keputusan model.

  1. Model penilaian
# 计算评估指标
from sklearn.metrics import mean_squared_error, r2_score
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
r2 = r2_score(y_test, y_pred)

print('Root Mean Squared Error: ', rmse)
print('R2 Score: ', r2)
Salin selepas log masuk

Fungsi min_squared_error dan fungsi r2_score dalam perpustakaan sklearn digunakan untuk mengira penunjuk penilaian, iaitu ralat purata kuasa dua (RMSE) dan pekali penentuan masing-masing (R2).

Melalui langkah di atas, kita boleh menggunakan model regresi polinomial untuk meramal jarak pemanduan kereta.

Ringkasan

Artikel ini memperkenalkan prinsip regresi polinomial dan kaedah pelaksanaannya dalam Python. Melalui contoh ramalan data kereta, kita dapat melihat kelebihan regresi polinomial dalam membina model dan meramalkan keputusan. Sudah tentu, regresi polinomial juga mempunyai beberapa kekurangan, seperti overfitting dan masalah lain. Oleh itu, dalam aplikasi praktikal, adalah perlu untuk memilih kaedah dan parameter regresi yang sesuai mengikut situasi sebenar.

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

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan