【问题标题】:Multiple non-linear regression in Python [closed]Python中的多重非线性回归[关闭]
【发布时间】:2020-05-17 21:43:57
【问题描述】:

我正在寻找任何可以帮助我找到回归方程的库或方法。等式格式如下:

Y=a1*x^a+a2*y^b+a3*z^c+D

在哪里:

  • Y 是因变量
  • x、y、z 是自变量
  • D 是常数
  • a1, a2, a3 是系数
  • a、b、c 分别为自变量的指数。

我将 Y 和 x、y、z 的值存储在数据框中。

【问题讨论】:

  • 你有 2 条路线:要么你根据你的方程转换你原来的df,然后再做LinearRegression;或者你先做PolynomialFeatures 转换。后者更可取,因为它是进行特定程度的多项式回归的普遍接受的方式。你有什么问题?
  • 从实际的角度来看,您尝试做的事情是危险的,因为使用 9 次多项式,您可以画任何东西,甚至是大象。

标签: python pandas statistics regression non-linear-regression


【解决方案1】:

您可以使用 scikit learn 中的 Random Forest Regressor 实现。它非常易于使用,您只需这样做:

from sklearn.ensemble import RandomForestRegressor
clf = RandomForestRegressor()

# train the model
clf.fit(df[['x','y','z']], df['Y'])

# predict on test data
predict = clf.predict(test_data[['x','y','z']])

确保训练数据和测试数据具有相同数量的自变量。

更多非线性回归量,请查看:scikit-learn ensemble module

【讨论】:

  • 在我的情况下,方程可能是非线性的,即一些自变量可能有分数指数。
  • 您可以查看sklearn模块中的其他方法,它们每个都有相同的api,遵循fitpredict方法来训练和预测模型。
  • 请检查编辑。
  • 虽然我通常使用 scipy 的差分进化遗传算法模块来生成初始参数估计值,然后将这些估计值传递给 scipy 的 curve_fit() 例程,但在这种特殊情况下,我个人认为误差空间是如此复杂的是,这种方法是不切实际的。 @YOLO 我同意你的建议并赞成你的回答。
猜你喜欢
  • 1970-01-01
  • 2018-03-11
  • 1970-01-01
  • 1970-01-01
  • 2014-05-04
  • 2022-11-25
  • 1970-01-01
  • 1970-01-01
  • 2021-08-01
相关资源
最近更新 更多