Polynomielle Regression ist eine Methode, die häufig bei Regressionsproblemen verwendet wird. Sie erstellt ein Modell, indem Polynomdaten an die Daten angepasst werden, sodass das Modell den Zielwert genauer vorhersagen kann. Python bietet eine Fülle von Bibliotheken für Datenverarbeitung und maschinelles Lernen, mit denen sich polynomielle Regressionsmodelle problemlos implementieren lassen. In diesem Artikel wird die Implementierung der Polynomregression in Python vorgestellt und ein Beispiel basierend auf der Polynomregression gegeben.
1. Das Prinzip der Polynomregression
Das Prinzip der Polynomregression ist relativ einfach, nämlich den Wert der unabhängigen Variablen durch eine Polynomfunktion zu erklären. Das heißt:
$y = b_0 + b_1x_1 + b_2x_2^2 + ... + b_nx_n^n$
wobei $y$ die abhängige Variable ist, $b_0, b_1, b_2, ..., b_n$ ist Der Regressionskoeffizient $x_1, x_2, ..., x_n$ sind unabhängige Variablen. Da die Polynomregression die Flexibilität des Modells verbessern kann, wird sie häufig bei Problemen verwendet, die ein hohes Maß an Anpassung erfordern.
2. Python implementiert die Polynomregression
In Python kann die Polynomregression über die Scikit-Learn-Bibliothek implementiert werden. Die scikit-learn-Bibliothek ist eine häufig verwendete Bibliothek für maschinelles Lernen in Python und bietet verschiedene Modelle und Tools zum Verarbeiten von Daten und zum Erstellen von Modellen.
Das Folgende ist ein einfacher Implementierungsschritt für die Polynomregression:
import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures
Hier werden die LinearRegression-Klasse und die PolynomialFeatures-Klasse in der Numpy-Bibliothek, der Matplotlib-Bibliothek und der Sklearn-Bibliothek importiert.
# 创建数据 x = np.linspace(-10, 10, num=50).reshape(-1, 1) # 自变量数据 y = np.sin(x) + np.random.randn(50, 1) * 0.2 # 因变量数据
Die Linspace-Funktion in der Numpy-Bibliothek wird verwendet, um 50 unabhängige Variablendaten mit gleichem Abstand von -10 bis 10 zu generieren, und die Sin-Funktion wird verwendet, um die abhängigen Variablendaten zu generieren. Um die Ergebnisse realistischer zu machen, wird auch etwas zufälliges Rauschen hinzugefügt.
# 使用多项式模型拟合数据 poly_reg = PolynomialFeatures(degree=5) # degree表示多项式的次数 x_poly = poly_reg.fit_transform(x) lin_reg = LinearRegression() lin_reg.fit(x_poly, y)
Die PolynomialFeatures-Klasse wird verwendet, um die unabhängige Variable x in ein Polynom umzuwandeln, und dann wird die LinearRegression-Klasse verwendet, um die Polynomdaten zu verarbeiten. Verwenden Sie die Anpassungsmethode, um das Modell zu trainieren.
# 可视化结果 plt.scatter(x, y) plt.plot(x, lin_reg.predict(poly_reg.fit_transform(x)), color='red') plt.show()
Die Matplotlib-Bibliothek wird hier verwendet, um die Ergebnisse zu visualisieren. Die Rohdaten werden über ein Streudiagramm dargestellt und eine polynomiale Regressionskurve in die Grafik eingezeichnet.
3. Beispiel einer Polynomregression
Betrachten Sie ein Beispiel: Vorhersage der Fahrstrecke basierend auf der Geschwindigkeit und Bremszeit des Autos. Zur Lösung dieses Problems nutzen wir den von Udacity bereitgestellten Datensatz. Der Datensatz umfasst die Geschwindigkeit des Fahrzeugs, die Bremszeit und die entsprechende Fahrstrecke.
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')
Hier wird der in einer CSV-Datei gespeicherte Fahrzeugdatensatz eingelesen.
# 提取特征和目标 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)
Die Pandas-Bibliothek wird hier verwendet, um die Daten in das DataFrame-Format einzulesen. Verwenden Sie dann die iloc-Methode, um Features und Ziele nach Spalten zu extrahieren, und verwenden Sie die Reshape-Funktion, um die Bremszeit in zweidimensionale Daten umzuwandeln. Verwenden Sie abschließend die Funktion train_test_split, um den Datensatz proportional in einen Trainingssatz und einen Testsatz aufzuteilen.
# 训练模型 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))
Die PolynomialFeatures-Klasse wird verwendet, um die Daten in ein quadratisches Polynom umzuwandeln, und dann wird die LinearRegression-Klasse verwendet, um die Polynomdaten zu verarbeiten. Verwenden Sie dann die Anpassungsmethode, um das Modell zu trainieren. Verwenden Sie abschließend die Vorhersagemethode, um die Ergebnisse des Modells vorherzusagen.
# 计算评估指标 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)
Die Funktionen „mean_squared_error“ und „r2_score“ in der sklearn-Bibliothek werden zur Berechnung der Bewertungsindikatoren verwendet, bei denen es sich um den quadratischen Mittelfehler (RMSE) bzw. das Bestimmtheitsmaß (R2) handelt.
Durch die obigen Schritte können wir das Polynom-Regressionsmodell verwenden, um die Fahrstrecke des Autos vorherzusagen.
Zusammenfassung
Dieser Artikel stellt das Prinzip der polynomialen Regression und ihre Implementierung in Python vor. Anhand eines Vorhersagebeispiels für Automobildaten können wir die Vorteile der polynomialen Regression bei der Erstellung von Modellen und der Vorhersage von Ergebnissen erkennen. Natürlich weist die Polynomregression auch einige Mängel auf, z. B. Überanpassung und andere Probleme. Daher ist es in praktischen Anwendungen erforderlich, geeignete Regressionsmethoden und -parameter entsprechend der tatsächlichen Situation auszuwählen.
Das obige ist der detaillierte Inhalt vonBeispiel für eine polynomielle Regression in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!