Maison >développement back-end >Tutoriel Python >Exemple de régression polynomiale en Python
La régression polynomiale est une méthode couramment utilisée dans les problèmes de régression. Elle construit un modèle en ajustant des polynômes aux données, afin que le modèle puisse prédire la valeur cible avec plus de précision. Python fournit une multitude de bibliothèques de traitement de données et d'apprentissage automatique qui peuvent facilement implémenter des modèles de régression polynomiale. Cet article présentera comment implémenter la régression polynomiale en Python et donnera un exemple basé sur la régression polynomiale.
1. Le principe de la régression polynomiale
Le principe de la régression polynomiale est relativement simple, qui consiste à expliquer la valeur de la variable indépendante par une fonction polynomiale. C'est-à-dire :
$y = b_0 + b_1x_1 + b_2x_2^2 + ... + b_nx_n^n$
où, $y$ est la variable dépendante, $b_0, b_1, b_2, ... , b_n$ est les coefficients de régression , $x_1, x_2, ... , x_n$ sont des variables indépendantes. Étant donné que la régression polynomiale peut améliorer la flexibilité du modèle, elle est souvent utilisée dans des problèmes nécessitant un degré élevé d’ajustement.
2. Python implémente la régression polynomiale
En Python, la régression polynomiale peut être implémentée via la bibliothèque scikit-learn. La bibliothèque scikit-learn est une bibliothèque d'apprentissage automatique couramment utilisée en Python, fournissant divers modèles et outils pour traiter les données et créer des modèles.
Ce qui suit est une étape simple d'implémentation de la régression polynomiale :
import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures
Ici, la classe LinearRegression et la classe PolynomialFeatures dans la bibliothèque numpy, la bibliothèque matplotlib et la bibliothèque sklearn sont importées.
# 创建数据 x = np.linspace(-10, 10, num=50).reshape(-1, 1) # 自变量数据 y = np.sin(x) + np.random.randn(50, 1) * 0.2 # 因变量数据
La fonction linspace de la bibliothèque numpy est utilisée pour générer 50 données variables indépendantes également espacées de -10 à 10, et la fonction sin est utilisée pour générer les données variables dépendantes. Pour rendre les résultats plus réalistes, du bruit aléatoire est également ajouté.
# 使用多项式模型拟合数据 poly_reg = PolynomialFeatures(degree=5) # degree表示多项式的次数 x_poly = poly_reg.fit_transform(x) lin_reg = LinearRegression() lin_reg.fit(x_poly, y)
La classe PolynomialFeatures est utilisée pour convertir la variable indépendante x en polynôme, puis la classe LinearRegression est utilisée pour traiter les données polynomiales. Utilisez la méthode d'ajustement pour entraîner le modèle.
# 可视化结果 plt.scatter(x, y) plt.plot(x, lin_reg.predict(poly_reg.fit_transform(x)), color='red') plt.show()
La bibliothèque matplotlib est utilisée ici pour visualiser les résultats. Les données brutes sont affichées via un nuage de points et une courbe de régression polynomiale est tracée sur le graphique.
3. Exemple de régression polynomiale
Prenons un exemple : prédire la distance parcourue en fonction de la vitesse et du temps de freinage de la voiture. Nous utilisons l'ensemble de données fourni par Udacity pour résoudre ce problème. L'ensemble de données comprend la vitesse de la voiture, le temps de freinage et la distance de conduite correspondante.
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')
Ici, l'ensemble de données de la voiture stocké dans un fichier csv est lu.
# 提取特征和目标 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)
La bibliothèque pandas est utilisée ici pour lire les données au format DataFrame. Utilisez ensuite la méthode iloc pour extraire les caractéristiques et les cibles par colonne, et utilisez la fonction de remodelage pour convertir le temps de freinage en données bidimensionnelles. Enfin, utilisez la fonction train_test_split pour diviser l'ensemble de données en un ensemble d'entraînement et un ensemble de test proportionnellement.
# 训练模型 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))
La classe PolynomialFeatures est utilisée pour convertir les données en un polynôme quadratique, puis la classe LinearRegression est utilisée pour traiter les données polynomiales. Utilisez ensuite la méthode d'ajustement pour entraîner le modèle. Enfin, utilisez la méthode prédire pour prédire les résultats du modèle.
# 计算评估指标 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)
La fonction Mean_squared_error et la fonction r2_score de la bibliothèque sklearn sont utilisées pour calculer les indicateurs d'évaluation, qui sont respectivement l'erreur quadratique moyenne (RMSE) et le coefficient de détermination (R2).
Grâce aux étapes ci-dessus, nous pouvons utiliser le modèle de régression polynomiale pour prédire la distance parcourue par la voiture.
Résumé
Cet article présente le principe de la régression polynomiale et son implémentation en Python. Grâce à un exemple de prédiction de données automobiles, nous pouvons voir les avantages de la régression polynomiale dans la construction de modèles et la prédiction des résultats. Bien entendu, la régression polynomiale présente également certains inconvénients, tels que le surapprentissage et d'autres problèmes. Par conséquent, dans les applications pratiques, il est nécessaire de sélectionner des méthodes et des paramètres de régression appropriés en fonction de la situation réelle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!