在 Python 中获取具有两个变量的多项式方程

数据挖掘 Python 回归 预测建模
2022-03-09 20:08:03

TL;博士

给定“length”和“wandRate”,预测“price”

我有一些时间序列数据,其中因变量是 2 个独立数据点的多项式结果。

这是一个片段: 所附谷歌表格的截图

这是某种大米的加工米粒过去的定价数据。

根据变量“wandRate”(第一个变量),即任何“长度”(第二个变量)超过 8.2 的价格,计算长度较短的米粒的价格。

这些价格是基于一个长期的试错方法,询问不同的专家他们对特定长度的特定谷物应该如何定价的“意见”。还有其他一些无法客观衡量的变量,但长度是主要指标。我想知道是否可以创建一个客观模型或在两个变量中找到一个多项式方程来预测“价格”,给定“长度”和“wandRate”

当我在谷歌表格中绘制数据时,我被引导以多项式的方式思考,并且六次多项式方程给出了直观正确的趋势线。

带有趋势线的长度和价格

注意: 我没有很强的数学背景,所以简单的谷歌搜索“来自数据 python 方程的 2 个变量中的多项式”并没有产生任何可实现的结果。

我正在寻找一些python代码来完成这个。任何关于在哪里看的指导将不胜感激。

2个回答

因此,您想将 python 中的 6 次多项式拟合到您的数据中吗?

你应该注意的主要事情是它仍然是线性回归,它的预测变量是多项式的(最重要的是你的权重仍然是线性的(lin.regression 中的 betas))

您可以使用此 sklearn 模块将您的特征转换为多项式,然后在线性回归模型中使用这些特征。

> from sklearn.preprocessing import PolynomialFeatures from sklearn
> import linear_model poly = PolynomialFeatures(degree=6)
> poly_variables = poly.fit_transform(variables_length_wand_rate)
> poly_var_train, poly_var_test, res_train, res_test = train_test_split(poly_variables, results,test_size = 0.3, random_state=4)
> regression = linear_model.LinearRegression()  
> model = regression.fit(poly_var_train,res_train)
> score = model.score(poly_var_test, res_test)

我认为numpy可能会提供一个非常好的解决方案,称为polyfit(请参阅此处),但请注意,更高阶的多项式可能会显着振荡。

拟合多项式函数的另一种方法是使用优化器来确定每个多项式项的系数。不过,您可能需要做更多的编码。