Python 含NaN的线性回归

Python 含NaN的线性回归,python,scikit-learn,linear-regression,Python,Scikit Learn,Linear Regression,我正在研究一个模型,可以根据别人的意见预测一个数字。为此,我将使用Sklearn的线性回归 例如,我有5个代理,我从他们那里收集他们在每次迭代中最后一次更改的数据,如果他们还没有插入,则数据包含Nan,直到他们的第一次更改。数据如下所示: a1 a2 a3 a4 a5 target 1 nan nan nan nan 3 4.5 2 4 nan nan nan 3 4.5 3 4 5 nan nan 3

我正在研究一个模型,可以根据别人的意见预测一个数字。为此,我将使用Sklearn的线性回归

例如,我有5个代理,我从他们那里收集他们在每次迭代中最后一次更改的数据,如果他们还没有插入,则数据包含
Nan
,直到他们的第一次更改。数据如下所示:

   a1   a2   a3   a4   a5   target
1  nan  nan  nan  nan  3     4.5
2  4    nan  nan  nan  3     4.5
3  4    5    nan  nan  3     4.5
4  4    5    5    nan  3     4.5
5  4    5    5    4    3     4.5
6  5    5    5    4    3     4.5
因此,在每次迭代/更改中,我都要预测结束数。正如我们所知,线性回归不允许在数据中包含
an=Nan
。我将它们替换为
an=0
,这不会破坏答案,因为线性回归的公式是:
result=a1*w1+a2*w2+…+一个*wn+c

我目前的问题是:


我的解决方案是否会对贴合度产生影响?有没有更好的办法解决我的问题?我是否应该仅使用完整数据学习模型,而不是将其用于当前解决方案?

将nan设置为0,并训练线性回归以找到每个变量的系数,这取决于用例

为什么?

您基本上是在训练模型,并告诉它,对于许多行,变量a1、a2等的重要性(当值为nan并设置为0时)

如果NAN是由于数据尚未填充,则将其设置为0并训练模型是错误的。最好在输入所有数据后训练模型(至少对于输入了一些数据的所有代理),这可以用于以后预测新代理。否则,如果许多代理尚未输入其数据,则您的系数将过度适合0(NAN)


基于最终目标(这是一个连续变量),线性回归是一个很好的方法

它将试图找到a1=0的系数,使损失函数最小化。当a1为空时,您将不使用该系数,但当a1为空时,您将使用它。所以它肯定会影响你的结果。也就是说,你应该问这个问题。