在Kaggle上,我发现了用于信号去噪的算法。如Golay滤波器,样条函数,自回归模型或KNeighborsRegressor本身。
链接:https://www.kaggle.com/residentmario/denoising-algorithms
它究竟是如何工作的,因为我找不到任何文章解释它用于信号去噪?这是什么样的算法?我想了解它是如何工作的
发布于 2021-04-08 17:16:28
这是一种监督学习算法--这是最好的答案,
通常,该算法首先使用已知数据进行训练,并试图解释一个最能代表该数据的函数,以便为以前未见的输入生成一个新的点。
简单地说,它将根据它以前看到的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中的那个人相同,这意味着它只适用于这个信号,因为输入是time,所以不能用来解释未来的值:
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))

https://stackoverflow.com/questions/67003721
复制相似问题