Я работаю через свою первую нелинейную регрессию в Python, и есть несколько вещей, которые я, очевидно, не совсем понимаю.
Вот пример данных:
X 8.66.2 6.4 4 8.4 7.4 8.2 5 2 4 8.6 6.2 6.4 4 8.4 7.4 8.2 5 2 4
y 87 61 75 72 85 73 83 63 21 70 87 70 64 64 85 73 83 61 21 50
Вот мой код:
#import libraries
import pandas as pd
from sklearn import linear_model
import seaborn as sns
import matplotlib.pyplot as plt
sns.set()
#variables
r = 100
#import dataframe
df = pd.read_csv('Book1.csv')
#Assign X & y
X = df.iloc[:, 4:5]
y = df.iloc[:, 2]
#import PolynomialFeatures and create X_poly
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(2)
X_poly = poly.fit_transform(X)
#fit regressor
reg = linear_model.LinearRegression()
reg.fit(X_poly, y)
#get R2 score
score = round(reg.score(X_poly, y), 4)
#get coefficients
coef = reg.coef_
intercept = reg.intercept_
#plot
pred = reg.predict(X_poly)
plt.scatter(X, y, color='blue', s=1)
plt.plot(X, pred, color='red')
plt.show()
Когда я запускаю этот код, я получаю диаграмму, которая выглядит следующим образом:
Первое, что язаметил, что переменные X находятся на вертикальной оси, а не на горизонтальной плоскости, которую я ожидал (и обычно вижу)
Следующее, что я заметил, это то, что есть несколько красных линий, когда я действительно ожидал, что одна кривая представляетбиномиальное уравнение для данных.
Наконец, когда я смотрю на коэффициенты, они не такие, как я ожидаю.Чтобы проверить это, я выполнил регрессию с использованием тех же данных в Excel, а затем подтвердил правильный ответ, подставив числа для X.
Коэффициенты, которые я получаю в Excel, равны y = -1.0305x ^ 2 + 19.156x -5.9868 со значением R в квадрате 0,8221.
В Python моя модель предоставляет коэффициент [0, -0,0383131, 0,00126994] с перехватом 2,4339 и значением R в квадрате 0,8352.
Пытаясь изучить этот материал, я в основном пытался адаптировать фрагменты кода, которые я видел и смотрел видео на YouTube.Я также просмотрел обмен стека, но не могу найти ответы на свои вопросы, поэтому прибегнул к просьбе о помощи, хотя знал, что ответы, вероятно, действительно очевидны для тех, кто знает, что они делают.
Я быдействительно ценю, что кто-то нашел время, чтобы объяснить некоторые из основ, которые мне явно не хватает.
Спасибо