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:
import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures
Pustaka numpy dan pustaka matplotlib diimport di sini kelas dan kelas PolynomialFeatures dalam perpustakaan sklearn.
# 创建数据 x = np.linspace(-10, 10, num=50).reshape(-1, 1) # 自变量数据 y = np.sin(x) + np.random.randn(50, 1) * 0.2 # 因变量数据
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.
# 使用多项式模型拟合数据 poly_reg = PolynomialFeatures(degree=5) # degree表示多项式的次数 x_poly = poly_reg.fit_transform(x) lin_reg = LinearRegression() lin_reg.fit(x_poly, y)
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.
# 可视化结果 plt.scatter(x, y) plt.plot(x, lin_reg.predict(poly_reg.fit_transform(x)), color='red') plt.show()
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.
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')
Di sini set data kereta yang disimpan dalam fail csv dibaca.
# 提取特征和目标 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)
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.
# 训练模型 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))
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.
# 计算评估指标 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)
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!