Ich bin ein Dataset zur Verfügung gestellt und ich versuche, eine Beziehung zwischen einigen X-und Y-Daten zu finden. Ich möchte in der Lage sein, die sklearn-Bibliothek zu verwenden, um die Daten zu plotten und die Kurve des eqn vorherzusagen.Verwenden Sie Sklearn to und Polynomregression, um die Gleichung einer Kurve anzupassen/vorherzusagen. Endlosschleife Fehler
Allerdings steckt mein Code in einer Endlosschleife, wenn ich versuche, meine vorhergesagten Werte nach der Anpassung des Polynomregressionsmodells an meinen Datensatz zu plotten.
Das Endziel wäre einmal, wenn ich die Kurve vorhergesagt/geplottet habe Ich möchte gerne wissen, was die volle Gleichung der Kurve ist.
Hier ist mein Code.
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
Dataset = pd.DataFrame()
Dataset["X"] = [6377, 6378, 6379, 6380, 6381, 6382, 6383, 6385, 6387, 6392, 6397, 6402]
Dataset["Y"] = [1.225, 1.112, 1.007, 0.9093, 0.8194, 0.7364, 0.6601, 0.5258, 0.4135, 0.1948, 0.08891, 0.04008]
print(Dataset)
X = np.reshape(np.array(Dataset['X']), (1, -1))
Y = np.reshape(np.array(Dataset['Y']), (1, -1))
print(X)
print(Y)
from sklearn.linear_model import LinearRegression
linReg = LinearRegression()
linReg.fit(X, Y)
plt.scatter(X, Y, color='red')
# plt.plot(X,linReg.predict(X), color = 'blue')
from sklearn.preprocessing import PolynomialFeatures
polyREG = PolynomialFeatures(degree=4)
xPoly = polyREG.fit_transform(X)
LinReg2 = LinearRegression()
LinReg2.fit(xPoly, Y)
#
# try:
# xgrid = np.arange(min(X), max(X), .1)
# except Exception as e:
# print(e)
# xgrid = range(6377, 6403, 1)
# xgrid = np.asarray(xgrid)
# print(xgrid.shape)
# xgrid = np.reshape(xgrid, (1,-1))
xgrid = np.reshape(np.arange(6300, 6405, 1), (1,-1))
print(xgrid.shape)
#X = np.reshape(np.array(Dataset['X']), (1, -1))
#plt.plot(xg, 1, color = "blue")
try:
plt.plot(xgrid, LinReg2.predict(polyREG.fit_transform(xgrid)), color='blue')
except Exception as e:
print(e)
plt.show()
Wie kann ich es korrigieren, damit ich die vorhergesagte Kurve darstellen kann? – NoviceCoder