首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KNeighborsRegressor作为去噪算法

KNeighborsRegressor作为去噪算法
EN

Stack Overflow用户
提问于 2021-04-08 12:10:17
回答 1查看 131关注 0票数 0

在Kaggle上,我发现了用于信号去噪的算法。如Golay滤波器,样条函数,自回归模型或KNeighborsRegressor本身。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-08 17:16:28

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

通常,该算法首先使用已知数据进行训练,并试图解释一个最能代表该数据的函数,以便为以前未见的输入生成一个新的点。

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

kaggle代码中的

时间矢量是:

代码语言:javascript
复制
df.index.values[:, np.newaxis]

信号矢量是:

代码语言:javascript
复制
df.iloc[:, 0]

似乎kaggle的人正在使用这些数据首先训练网络--见下文:

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

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

代码语言:javascript
复制
y_pred = clf.predict(df.index.values[:, np.newaxis])

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

需要注意的一点是,使用这种方法的方式与kaggle中的那个人相同,这意味着它只适用于这个信号,因为输入是time,所以不能用来解释未来的值:

代码语言:javascript
复制
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))

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67003721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档