date = [ { "study_time": 1, "salary": 350, "absences": 5, "city": "San Francisco" }, { "study_time": 2, "salary": 1600, "absences": 4, "city": "London" }, { "study_time": 3, "salary": 2450, "absences": 3, "city": "Paris" }, { "study_time": 4, "salary": 5150, "absences": 5, "city": "San Francisco" }, { "study_time": 5, "salary": 5800, "absences": 4, "city": "London" }, { "study_time": 6, "salary": 6050, "absences": 3, "city": "Paris" } ]
{ "study_time": 13, "salary": ???, "absences": 5, "city": "San Francisco" }
Unter Verwendung der Polynomialen Regression wäre der Wert 13 dieser Sequenz: 24814
Der korrekte Wert war jedoch: 19550
Fehler: 5264
Wenn ich Position 49 vorhersagen würde, wäre es: 182441
Der korrekte Wert war jedoch: 77150
Fehler: 105291
Dies war der „versteckte Algorithmus“, der die Progression erzeugt:
x = 0 absences_base = 50 salary_base = 1000 data = [] for i in range(50): if x == 0: x += 1 data.append({ "study_time": i + 1, "salary": (i * salary_base + (300 * 2 * (i + 1))) - (5 * absences_base), "absences": 5, "city": "San Francisco" }) elif x == 1: x += 1 data.append({ "study_time": i + 1, "salary": (i * salary_base + (200 * 2 * (i + 1))) - (4 * absences_base), "absences": 4, "city": "London" }) else: x = 0 data.append({ "study_time": i + 1, "salary": (i * salary_base + (100 * 2 * (i + 1))) - (3 * absences_base), "absences": 3, "city": "Paris" }) for entry in data: print(entry)
{'study_time': 1, 'salary': 350, 'absences': 5, 'city': 'San Francisco'} {'study_time': 2, 'salary': 1600, 'absences': 4, 'city': 'London'} {'study_time': 3, 'salary': 2450, 'absences': 3, 'city': 'Paris'} {'study_time': 4, 'salary': 5150, 'absences': 5, 'city': 'San Francisco'} {'study_time': 5, 'salary': 5800, 'absences': 4, 'city': 'London'} {'study_time': 6, 'salary': 6050, 'absences': 3, 'city': 'Paris'} {'study_time': 7, 'salary': 9950, 'absences': 5, 'city': 'San Francisco'} {'study_time': 8, 'salary': 10000, 'absences': 4, 'city': 'London'} {'study_time': 9, 'salary': 9650, 'absences': 3, 'city': 'Paris'} {'study_time': 10, 'salary': 14750, 'absences': 5, 'city': 'San Francisco'} {'study_time': 11, 'salary': 14200, 'absences': 4, 'city': 'London'} {'study_time': 12, 'salary': 13250, 'absences': 3, 'city': 'Paris'} {'study_time': 13, 'salary': 19550, 'absences': 5, 'city': 'San Francisco'}
Polynomielle Regression ist eine statistische Technik, mit der die Beziehung zwischen zwei Variablen modelliert und vorhergesagt werden kann. In solchen Fällen, in denen mehrere Variablen beteiligt sind (Studienzeit, Gehalt, Abwesenheiten und Stadt), reicht die polynomielle Regression jedoch möglicherweise nicht aus, um alle Muster in der Zeitreihe zu erfassen.
Das fragliche Problem ist ein klassisches Beispiel für Zeitreihen, bei dem wir zukünftige Werte basierend auf in der Vergangenheit beobachteten Mustern vorhersagen müssen.
Dieses Problem könnte mit maschinellem Lernen
gelöst werdenDarüber hinaus kann es wichtig sein, alle Beziehungen zwischen Variablen zu analysieren und verschiedene Hypothesen zu testen, um herauszufinden, was die Progression hervorruft. Dazu kann Folgendes gehören:
Explorative Analyse: Verwenden Sie explorative Analysetechniken, um die Natur der Zeitreihe besser zu verstehen und mögliche Muster oder Beziehungen zwischen Variablen zu identifizieren.
Statistische Tests: Führen Sie statistische Tests durch, um zu überprüfen, ob die zwischen den Variablen beobachteten Beziehungen signifikant sind.
Eine andere Lösung wäre, einen Algorithmus zu erstellen, der dies mit den grundlegendsten Hypothesen tut:
Bei diesem Algorithmus zum Testen „relationaler Operationen“ handelt es sich um einen Ansatz für direktes maschinelles Lernen (oder explizites maschinelles Lernen). Das bedeutet, dass der Algorithmus keine fortgeschrittenen Techniken des maschinellen Lernens verwendet, sondern Regeln und logische Strukturen implementiert, um Zeitreihenmuster zu lernen.
Und wenn man nur grundlegende Hypothesen testet, ergeben sich folgende Einschränkungen:
Während ein Modell für maschinelles Lernen Folgendes kann:
Bevor Sie nach komplexeren Lösungen suchen, stellen Sie am besten sicher, dass eine einfachere Lösung ausreichend getestet wurde.
Wenn wir nur drei weitere Zeilen der Progressionssequenz einbeziehen, können wir den genauen Wert mithilfe der Polynomprogression vorhersagen
date = [ { "study_time": 1, "salary": 350, "absences": 5, "city": "San Francisco" }, { "study_time": 2, "salary": 1600, "absences": 4, "city": "London" }, { "study_time": 3, "salary": 2450, "absences": 3, "city": "Paris" }, { "study_time": 4, "salary": 5150, "absences": 5, "city": "San Francisco" }, { "study_time": 5, "salary": 5800, "absences": 4, "city": "London" }, { "study_time": 6, "salary": 6050, "absences": 3, "city": "Paris" }, {'study_time': 7, 'salary': 9950, 'absences': 5, 'city': 'San Francisco'}, {'study_time': 8, 'salary': 10000, 'absences': 4, 'city': 'London'}, {'study_time': 9, 'salary': 9650, 'absences': 3, 'city': 'Paris'} ]
Dieses Problem kann also mit polynomialer Regression gelöst werden, solange die Datenstichprobe ausreichend ist
Es ist interessant festzustellen, dass das Modell nur eine Stichprobe der Daten bis Zeile 9 benötigt, um genaue Vorhersagen zu treffen. Dies deutet darauf hin, dass es in der Zeitreihe ein regelmäßiges Muster gibt, das mit einer begrenzten Datenmenge erfasst werden kann. Und das gab es wirklich.
import pandas as pd import matplotlib.pyplot as plt from sklearn.preprocessing import PolynomialFeatures from sklearn.linear_model import LinearRegression data = pd.DataFrame({ "study_time": [1, 2, 3, 4, 5, 6, 7, 8, 9], "absences": [5, 4, 3, 5, 4, 3, 5, 4, 3], "San Francisco": [0, 1, 0, 0, 1, 0, 0, 1, 0], # dummy variables "London": [0, 0, 1, 0, 0, 1, 0, 0, 1], # dummy variables "Paris": [1, 0, 0, 1, 0, 0, 1, 0, 0], # dummy variables "salary": [350, 1600, 2450, 5150, 5800, 6050, 9950, 10000, 9650] }) # Independent and dependent variables X = data[["study_time", "absences", "San Francisco", "London", "Paris"]] y = data["salary"] # Creating polynomial characteristics of degree 2 characteristics_2 = PolynomialFeatures(degree=2) x_pol_2 = characteristics_2.fit_transform(X) y_pol_2 = model2.predict(x_pol_2) # Fitting the linear regression model model2 = LinearRegression() model2.fit(x_pol_2, y) # New data provided for prediction new_data = pd.DataFrame({ "study_time": [13], "absences": [5], "San Francisco": [0], "London": [0], "Paris": [1] }) # Polynomial transformation of the new data new_data_pol_2 = characteristics_2.transform(new_data) predicted_salary = model2.predict(new_data_pol_2) print("Predicted Salary:", int(predicted_salary[0]) ) # Plot plt.subplot(1, 1, 1) plt.scatter(new_data["study_time"], predicted_salary, color='green', label='Predicted Salary') plt.scatter(data["study_time"], y, color='blue', label='Real Salary') plt.scatter(data["study_time"], y_pol_2, color='red', label='Polynomial Fit', marker='x') plt.title("Polynomial Regression - Salary and Study Time") plt.xlabel("Study Time") plt.ylabel("Salary") plt.legend() plt.show()
Das obige ist der detaillierte Inhalt vonPräzise Vorhersagen mit polynomialer Regression ermöglichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!