我不知道“对数回归”是不是正确的术语,我需要在我的数据上拟合一条曲线,像多项式曲线,但在最后是平的。
这是一张图片,蓝色曲线是我所拥有的(二阶多项式回归),而洋红曲线是我所需要的。
我已经搜索了很多,但找不到,只有线性回归,多项式回归,但没有对数回归的sklearn。我需要画出曲线,然后用回归进行预测。
编辑
以下是我发布的绘图图像的数据:
x,y
670,75
707,46
565,47
342,77
433,73
472,46
569,52
611,60
616,63
493,67
572,11
745,12
483,75
637,75
218,251
444,72
305,75
746,64
444,98
342,117
272,85
128,275
500,75
654,65
241,150
217,150
426,131
155,153
841,66
737,70
722,70
754,60
664,60
688,60
796,55
799,62
229,150
232,95
116,480
340,49
501,65
您正在查看exponentially distributed数据。
您可以通过对数转换y变量,然后使用线性回归。这是因为y的大值比小值压缩得多。
如果我理解正确,您需要用y=a*exp(-b*(x-c))+d这样的函数来拟合数据
我不确定sklearn是否能做到。但是您可以使用scipy.optimize.curve_fit()来使用您定义的任何函数来拟合数据
对于你的案例,我对你的数据进行了实验,结果如下:
我发现
b
的初始值对于拟合是至关重要的。我估计了一个很小的范围,然后拟合了数据。如果对
x
和y
之间的关系没有先验知识,可以使用sklearn提供的回归方法,如线性回归、核岭回归(KRR)、最近邻回归、高斯过程回归等来拟合非线性数据。Find the documentation here要使用sklearn,可以先将案例
y = Aexp(-BX)
重新建模为ln(Y) = ln(A) - BX
,然后使用LinearRegressor来训练和拟合数据。相关问题 更多 >
编程相关推荐