我用14个不同的传感器对一台发动机进行了测量,测量间隔为6秒,显示为一个由14列和大约5000行组成的numpy数组。每一行代表一个测量点,每一列代表一个特征。在
1%的数据集是NAN,我想用SVM来填充它们。在
因为数据集是动态引擎的时间序列,所以只需查看缺失值的两个最近的数据点:前一个数据点,后一个数据点。它应该计算最近的两个数据点的平均值。在
我以为这应该可以用scikit learn的KNI计算机实现,但当我有一排完整的nan时,我并不满意。看看这个例子:
15.30 80.13 20000.00 15000.00 229.00 698.00 590.00 24.00 82.53 1522.00 410.00 406.00 407.00 50.01
nan nan nan nan nan nan nan nan nan nan nan nan nan nan
15.30 82.90 20000.00 15000.00 225.00 698.00 628.00 24.00 85.36 1523.00 410.00 407.00 408.00 50.02
KNI计算机的输出如下所示:
^{pr2}$看第一列,除了NaN:(15.30+15.30)/2=15.30
结果我得了19.90分。在
我的代码:
^{3}$有什么想法吗?在
我给你做了个功能。下面是一个可复制的示例,这样您就可以看到它是如何工作的:
^{pr2}$逻辑如下:
我有
sklearn
的最新版本,此方法不可用,但这里有两个建议:使用:
n_neighbors=1
使用
pandas
您似乎有很多噪音,因为您传递的n邻居值很低。但是,请记住,该方法不需要返回顶行和底行之间的平均值。用数据训练的模型,显然会有很多噪声,这会使它与您期望的值不同。(KNIMPUTE值不计算为:
((x-1) + (x+1))/2
。相反,您可以尝试使用.fillna(df.mean())
相关问题 更多 >
编程相关推荐