我是靠谱客的博主 神勇巨人,最近开发中收集的这篇文章主要介绍python中predict函数_python - KNeighbors Regressor .predict()函数在用weights ='distance'进行训练时给出可疑的完美结果吗? - 堆...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

如果我训练了一个KNeighborsRegressor(通过scikit-learn),然后想将其预测值与目标变量进行比较,则可以这样进行:

#Initiate model

knn = neighbors.KNeighborsRegressor(n_neighbors=8)

#Define independent and target variables

X = df[['var1', 'var2', 'var3']]

Y = df['target']

#fit the model and store the predictions

knn.fit(X, Y)

predicted = knn.predict(X).ravel()

如果将它们进行比较,我可以看到此模型远非完美,这是可以预期的:

compare = pd.DataFrame(predicted,Y).reset_index()

compare.columns=['Y', 'predicted']

compare.head(3)

返回值:

+------+-----------+

| Y | predicted |

+------+-----------+

| 985 | 2596 |

+------+-----------+

| 801 | 2464 |

+------+-----------+

| 1349 | 1907 |

+------+-----------+

如果我做完全相同的事情,除了我按距离对邻居加权,那么predict()函数将精确返回目标变量。

#Initiate model

knn_dist = neighbors.KNeighborsRegressor(n_neighbors=8, weights='distance')

#fit the model and store the predictions

knn_dist.fit(X, Y)

predicted2 = knn_dist.predict(X).ravel()

compare = pd.DataFrame(predicted2,Y).reset_index()

compare.columns=['Y', 'predicted2']

compare.head(3)

返回相同的列:

+------+------------+

| Y | predicted2 |

+------+------------+

| 985 | 985 |

+------+------------+

| 801 | 801 |

+------+------------+

| 1349 | 1349 |

+------+------------+

我知道预测器并不是像这样暗示的那么完美,并且可以通过交叉验证证明这一点:

score_knn = cross_val_score(knn, X, Y, cv=ShuffleSplit(test_size=0.1))

print(score_knn.mean())

>>>>0.5306705590672681

我究竟做错了什么?

根据请求,这是我的数据框中相关列的前五行:

| ID | var1 | var2 | var3 | target |

|----|----------|----------|----------|--------|

| 1 | 0.363625 | 0.805833 | 0.160446 | 985 |

| 2 | 0.353739 | 0.696087 | 0.248539 | 801 |

| 3 | 0.189405 | 0.437273 | 0.248309 | 1349 |

| 4 | 0.212122 | 0.590435 | 0.160296 | 1562 |

| 5 | 0.22927 | 0.436957 | 0.1869 | 1600 |

最后

以上就是神勇巨人为你收集整理的python中predict函数_python - KNeighbors Regressor .predict()函数在用weights ='distance'进行训练时给出可疑的完美结果吗? - 堆...的全部内容,希望文章能够帮你解决python中predict函数_python - KNeighbors Regressor .predict()函数在用weights ='distance'进行训练时给出可疑的完美结果吗? - 堆...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部