标签: knn

我需要哪些数据来实现k最近邻居?

我目前有一个reddit-clone类型的网站.我正在尝试根据用户之前喜欢的帖子推荐帖子.

似乎K最近邻居或k均值是最好的方法.

我似乎无法理解如何实际实现这一点.我已经看到了一些数学公式(比如k上的那个就意味着维基百科页面),但它们对我来说并没有多大意义.

有人可能会推荐一些伪代码,或者看看这些地方,以便我可以更好地了解如何做到这一点?

ruby algorithm machine-learning nearest-neighbor knn

5
推荐指数
1
解决办法
2635
查看次数

k在k近邻算法中的应用

我有7个类需要分类,我有10个功能.在这种情况下我是否需要使用k的最佳值,或者我必须运行KNN以获得介于1和10(大约10)之间的k值,并在算法本身的帮助下确定最佳值?

classification knn

5
推荐指数
2
解决办法
3万
查看次数

在R中使用k-NN和分类值

我希望对具有大多数分类功能的数据进行分类.为此目的,欧几里德距离(或任何其他数字假定距离)不适合.

我在寻找[R]的kNN实现,可以选择不同的距离方法,如汉明距离.有没有办法使用常见的kNN实现,如{class}中具有不同距离度量函数的实现?

我正在使用R 2.15

r distance knn

5
推荐指数
1
解决办法
9724
查看次数

使用R仅查找一个点(不是整个矩阵)的k-最近邻居

是否有一个包或一种简单的方法来使用R来搜索一个点的k-最近邻居(特别是kd树)?提供此功能的所有包(例如RANN或FNN ...)计算矩阵中所有点的knn,我只需要一个点.

例如,我有一个10点"A"到"E"的矩阵,我想在"A"中找到4个其他点("B"到"E")之间的2个最近邻居,而不对所有人做同样的计算数据集中的行(不计算"B","C","D","E"的knn)

我希望我的问题很明确,我的英语不好.

谢谢你的帮助,

r knn

5
推荐指数
1
解决办法
3883
查看次数

SKLearn - 主成分分析导致了knn预测的可怕结果

通过将PCA添加到算法中,我正在努力提高kaggle数字识别教程的%96.5 SKlearn kNN预测分数,但基于PCA输出的新kNN预测非常可怕,如23%.

下面是完整的代码,如果你指出我错在哪里,我感激不尽.

import pandas as pd
import numpy as np
import pylab as pl
import os as os
from sklearn import metrics
%pylab inline
os.chdir("/users/******/desktop/python")

traindata=pd.read_csv("train.csv")
traindata=np.array(traindata)
traindata=traindata.astype(float)
X,y=traindata[:,1:],traindata[:,0]

from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test= train_test_split(X,y,test_size=0.25, random_state=33)

#scale & PCA train data
from sklearn import preprocessing
from sklearn.decomposition import PCA
X_train_scaled = preprocessing.scale(X_train)
estimator = PCA(n_components=350)
X_train_pca = estimator.fit_transform(X_train_scaled)

# sum(estimator.explained_variance_ratio_) = 0.96

from sklearn.neighbors import KNeighborsClassifier
neigh = KNeighborsClassifier(n_neighbors=6)
neigh.fit(X_train_pca,y_train)

# scale & PCA test …
Run Code Online (Sandbox Code Playgroud)

python knn pca scikit-learn kaggle

5
推荐指数
1
解决办法
2626
查看次数

建议一种针对大型已知集的颜色模式匹配的算法

我要求调用将颜色值的样本集与已知的值集匹配,以找到完全匹配或匹配在可接受的距离内.我不完全确定哪种算法最适合这个,我正在寻找建议.

我考虑使用SQL查询,因为我认为这将是一种简单的方法,但是,理想情况下,这将在应用程序服务器上内存或甚至在GPU上以最大速度完成.

示例:

假设我们给出了一组三个RGB颜色值,两个蓝色和一个橙色:

样品组:

颜色1:81,177,206(蓝色)

颜色2:36,70,224(蓝色)

颜色3:255,132,0(橙色)

这组3个颜色值必须与更大的颜色值集匹配,以查看该集合是否存在于其中,或者对于3种颜色中的每种颜色具有相同的精确RGB值 - 或者 - 如果存在RGB值的任何模式颜色的变化程度可以接受.假设任何RGB分量的值可以高达或高3位.

假设我们要搜索的大量已知颜色值如下所示:

已知集:

            Color 1          Color 2       Color 3
Sample A: [25, 25, 25],    [10, 10, 10], [100, 100, 100] 

Sample B: [125, 125, 125], [10, 10, 10], [200, 200, 200] 

Sample C: [13, 87, 255],   [10, 10, 10], [100, 100, 100] 

Sample D: [67, 111, 0],    [10, 10, 10], [200, 200, 200] 

Sample E: [255, 255, 255], [10, 10, 10], [100, 100, 100] 
Run Code Online (Sandbox Code Playgroud)

在这种情况下,当我们运行我们的样本集时,我们会发现零匹配,因为没有任何已知颜色的颜色1接近我们的样本集值.然而,让我们的另一种颜色添加到组已知这返回正匹配: …

c# algorithm opencv hashtable knn

5
推荐指数
1
解决办法
549
查看次数

如何在matlab中添加和删除KDTreeSearcher中的点

在MATLAB中,有没有办法更新KDTreeSearcher中的数据点?

我从一个带有所有N个数据点(也就是观察点)的树开始,并且在选择一个点之后迭代地从树中搜索一个点,我需要使该点无效直到后一阶段.

使用所有数据(如createns)构建树的能力以及将标记点标记为有效/无效或启用/禁用的能力就足够了.

当所有点无效时,过程结束时,将有大量删除(失效)和更少的添加(重新验证).

我见过关于scikit-learn kd-tree的类似问题,但它没有答案.

matlab kdtree nearest-neighbor knn

5
推荐指数
0
解决办法
450
查看次数

如何遍历KDTree以找到k个最近的邻居?

这个问题涉及KDTrees的KNN搜索的实现。遍历KDTree来找到单个最佳匹配(最近邻居)很简单,类似于修改后的二进制搜索。

如何修改遍历以详尽有效地找到k个最佳匹配(KNN)?

编辑以澄清问题:找到最接近输入查询I的节点M之后,遍历算法如何继续查找剩余的K-1最接近查询的匹配项?是否有一个遍历模式可以确保以与查询最佳或最差的顺序访问节点?

kdtree nearest-neighbor knn

5
推荐指数
1
解决办法
4911
查看次数

KNN归一化的精度差异

我已经在KNN分类算法上训练了模型,并且获得了约97%的准确度。但是,后来我发现我错过了对数据进行归一化的工作,对数据进行了归一化并重新训练了模型,现在我的准确率仅为87%。可能是什么原因?我应该坚持使用未规范化的数据,还是应该切换到规范化版本。

python machine-learning knn scikit-learn

5
推荐指数
2
解决办法
2757
查看次数

增加n_jobs对GridSearchCV没有影响

我已经设置了简单的实验来检查运行sklearn GridSearchCV时多核CPU的重要性KNeighborsClassifier.我得到的结果令我感到惊讶,我想知道我是否误解了多核的好处或者我没有做对.

2-8个工作的完成时间没有差异.怎么会 ?我注意到CPU性能选项卡上的差异.当第一个单元运行时,CPU使用率为~13%,并且最后一个单元逐渐增加到100%.我期待它完成得更快.也许不是线性更快,即8个工作比4个工作快2倍,但速度要快一些.

我就是这样设置的:

我使用的是jupyter-notebook,cell指的是jupyter-notebook cell.

我已加载MNIST并使用0.05测试大小来3000表示数字X_play.

from sklearn.datasets import fetch_mldata
from sklearn.model_selection import train_test_split

mnist = fetch_mldata('MNIST original')

X, y = mnist["data"], mnist['target']

X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]
_, X_play, _, y_play = train_test_split(X_train, y_train, test_size=0.05, random_state=42, stratify=y_train, shuffle=True)
Run Code Online (Sandbox Code Playgroud)

在下一个单元格中我设置KNN了一个GridSearchCV

from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import GridSearchCV

knn_clf = KNeighborsClassifier()
param_grid = [{'weights': ["uniform", "distance"], 'n_neighbors': [3, 4, 5]}]
Run Code Online (Sandbox Code Playgroud)

然后我为8个n_jobs值完成了8个单元格.我的CPU是i7-4770,有4个内核8个线程.

grid_search …
Run Code Online (Sandbox Code Playgroud)

python multithreading knn scikit-learn

5
推荐指数
1
解决办法
1301
查看次数