KNeighborsRegressor 作为去噪算法
KNeighborsRegressor as denoising algorithm
在 Kaggle 上,我找到了用于信号去噪的算法。例如 Golay 过滤器、样条函数、自回归建模或 KNeighborsRegressor 本身。
Link:
https://www.kaggle.com/residentmario/denoising-algorithms
它究竟是如何工作的,因为我找不到任何解释它用于信号降噪的文章?它是什么样的算法?我想了解它是如何工作的
这是一种监督学习算法 - 这是最佳答案,
通常,算法首先使用已知数据进行训练,然后尝试解释最能代表该数据的函数,以便可以为之前未见过的输入生成新点。
简单地说,它会根据之前看到的 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])
这个新信号将代表模型对信号的最佳解释,正如您从我上面发布的 link 中看到的那样,您可以调整某些参数,这将导致 'cleaner'信号但也可能降低原始信号
需要注意的一件事是,以与 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))
在 Kaggle 上,我找到了用于信号去噪的算法。例如 Golay 过滤器、样条函数、自回归建模或 KNeighborsRegressor 本身。
Link: https://www.kaggle.com/residentmario/denoising-algorithms
它究竟是如何工作的,因为我找不到任何解释它用于信号降噪的文章?它是什么样的算法?我想了解它是如何工作的
这是一种监督学习算法 - 这是最佳答案,
通常,算法首先使用已知数据进行训练,然后尝试解释最能代表该数据的函数,以便可以为之前未见过的输入生成新点。
简单地说,它会根据之前看到的 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])
这个新信号将代表模型对信号的最佳解释,正如您从我上面发布的 link 中看到的那样,您可以调整某些参数,这将导致 'cleaner'信号但也可能降低原始信号
需要注意的一件事是,以与 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))