sk-learn中KNN算法能动态的构建ball-tree吗

比如我用100个训练集去训练,训练完后我用一个数据的测试集去测试,测试完后我希望将这一个测试集加到训练集中去,必须重新构建这棵ball-tree吗(假设用的是这个树)??
我看了ball-tree的那个5种构建树的论文:Five Balltree Construction
Algorithms。论文中是说这5种构建树,其中2种是online,但sk-learn不知道怎么用
跪求大神指导!!万分感谢

贴上代码:
X1=[[0,0],[2,4],[5,5],[10,10],[15,15]]
Y1=[0,1,1,0,0]
clf = neighbors.KNeighborsClassifier(algorithm="ball_tree", metric='euclidean',n_neighbors=5)
clf.fit(X1,Y1)
a=clf.predict([[1,3]])
print(a)

就是我想预测完[1,3]之后,希望将它加到之前构建的ball_tree中,而不是将[1,3]再加到X中重新fit,不知道有没有办法,求指教,急急急。万分感谢

KangKermit
yougwypf1991 你好,想问下你这个问题解决了吗?
8 个月之前 回复

2个回答

sklearn 的 KNN 不能使用 incremental learning,每次训练都需要重新构建ball-tree。
在ipython中,运行"knn.fit??"可以查看fit的具体实现。

CSDN_Black
csdn_black 回复Boover: 这种方法好像不太适用我现在的情况。。。。麻烦问下除了KNN还有其它合适的算法吗?
2 年多之前 回复
Boover
Boover 回复CSDN_微积分: 可以批量加入吧。比方说每100个或者1000个新用户重新建一次树,这样精度稍有损失的情况下能节省不少时间。
2 年多之前 回复
CSDN_Black
csdn_black 感谢你的帮助,恕我愚钝,我现在是拿到人脸128维的特征向量,想用KNN算法找到最接近的人脸,感觉不用increaseing learning学习的话,当注册一个新用户就要重新建树有点浪费时间呢,请问除了KNN还有别的方法做128维效果比较好的吗,最好是incremental learning的。
2 年多之前 回复

本人刚开始学这个,求大神指点啊

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问