请看下面的代码,这里X是职位等级的数量(例如,1级、2级等),y是薪资范围。多项式回归未能提供最佳拟合线,另外我想知道当X=20时该如何计算。请提供建议 🙂
import numpy as npimport pandas as pdimport matplotlib.pyplot as pltX = [[ 1],[ 2],[ 3],[ 4],[ 5],[ 6],[ 7],[ 8],[ 9],[10]]y = [45000,50000,60000,80000,110000,150000,200000,300000,500000,1000000]from sklearn.linear_model import LinearRegressionfrom sklearn.preprocessing import PolynomialFeaturespoly_reg = PolynomialFeatures(degree = 2)X_poly = poly_reg.fit_transform(X)linearReg_2 = LinearRegression()linearReg_2.fit(X_poly,y)# plot polynomial linear regressionplt.scatter(X,y, color = "red")plt.plot(X,linearReg_2.predict(X_poly), color = "blue")plt.show()
回答:
你可以尝试将多项式的度数增加到3或4,以获得更好的匹配效果。
poly_reg = PolynomialFeatures(degree = 3)
poly_reg = PolynomialFeatures(degree = 4)
要预测一个新值,你需要通过相同的poly_reg
对象处理,然后使用linearReg_2.predict()
类似这样:
X_new = [[20]]# 注意我使用了transform()而不是fit_transform()X_new_poly = poly_reg.transform(X_new)y_new = linearReg_2.predict(X_new_poly)