【发布时间】:2020-03-26 02:51:41
【问题描述】:
块引用
python 新手,尝试对某些数据完成三阶多项式回归。当我使用多项式回归时,我没有得到我期望的拟合。我试图理解为什么 python 中的多项式回归比 excel 中的更差。当我在 excel 中拟合相同的数据时,我得到一个 ≈.95 的确定系数,并且该图看起来像一个三阶多项式。然而,使用sickitlearn 它是≈0.78,并且拟合看起来几乎是线性的。发生这种情况是因为我没有足够的数据吗?在我的 x 轴上将 x 作为 datetime64[ns]type 还会影响回归吗?代码运行。但是,我不确定这是编码问题还是其他问题。
我正在使用 anaconda (python 3.7) 并在 spyder 中运行代码
import operator
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
#import data
data = pd.read_excel(r'D:\Anaconda\Anaconda\XData\data.xlsx', skiprows = 0)
x=np.c_[data['Date']]
y=np.c_[data['level']]
#regression
polynomial_features= PolynomialFeatures(degree=3)
x_poly = polynomial_features.fit_transform(x)
model = LinearRegression()
model.fit(x_poly, y)
y_poly_pred = model.predict(x_poly)
#check regression stats
rmse = np.sqrt(mean_squared_error(y,y_poly_pred))
r2 = r2_score(y,y_poly_pred)
print(rmse)
print(r2)
#plot
plt.scatter(x, y, s=10)
# sort the values of x b[![enter image description here][1]][1]efore line plot
sort_axis = operator.itemgetter(0)
sorted_zip = sorted(zip(x,y_poly_pred), key=sort_axis)
x, y_poly_pred = zip(*sorted_zip)
plt.plot(x, y_poly_pred, color='m')
plt.show()
【问题讨论】:
标签: python numpy scikit-learn anaconda non-linear-regression