Kneighbors回归器作为去噪算法

2024-09-27 09:34:44 发布

您现在位置:Python中文网/ 问答频道 /正文

在Kaggle上,我找到了用于信号去噪的算法。例如Golay滤波器、样条函数、自回归建模或Kneighbors回归器本身

链接: https://www.kaggle.com/residentmario/denoising-algorithms

它到底是如何工作的,因为我找不到任何解释它用于信号去噪的文章?它是什么样的算法?我想了解它是如何工作的


Tags: 函数httpscom算法信号链接www建模
1条回答
网友
1楼 · 发布于 2024-09-27 09:34:44

这是一种监督学习算法——这是最好的答案

通常情况下,该算法首先使用已知数据进行训练,并尝试解释最能代表该数据的函数,以便为以前未看到的输入生成新点

简单地说,它将根据之前看到的k个最近点的平均值确定之前未看到的值的点,下面可以找到更好、更详细的答案: https://towardsdatascience.com/the-basics-knn-for-classification-and-regression-c1e8a6c955

在kaggle代码中:

时间向量为:

df.index.values[:, np.newaxis]

信号向量为:

df.iloc[:, 0]

kaggle中的人员似乎正在使用该数据对网络进行首次培训-见下文:

## define the KNN network
clf = KNeighborsRegressor(n_neighbors=100, weights='uniform')
## train the network 
clf.fit(df.index.values[:, np.newaxis], 
        df.iloc[:, 0])

给他一个表示时间和信号值之间关系的函数。然后,他将时间向量传递回网络,使其再现信号

y_pred = clf.predict(df.index.values[:, np.newaxis])

这个新信号将代表模型对信号的最佳解释,正如您从我上面发布的链接中所看到的,您可以调整某些参数,这将产生“更干净”的信号,但也可能会降低原始信号

需要注意的一点是,以与kaggle中的那个家伙相同的方式使用此方法意味着它只适用于该一个信号,因为输入是时间,不能用于解释未来的值:

y_pred = clf.predict(df.index.values[:, np.newaxis] + 400000)
ax = pd.Series(df.iloc[:, 0]).plot(color='lightgray')
pd.Series(y_pred).plot(color='black', ax=ax, figsize=(12, 8))

enter image description here

相关问题 更多 >

    热门问题