标签: knn

特征归一化后 kNN 分类的准确率下降?

我正在对一些数据进行kNN分类。我有按 80/20 的比例随机分割训练集和测试集的数据。我的数据如下所示:

[ [1.0, 1.52101, 13.64, 4.49, 1.1, 71.78, 0.06, 8.75, 0.0, 0.0, 1.0], 
  [2.0, 1.51761, 13.89, 3.6, 1.36, 72.73, 0.48, 7.83, 0.0, 0.0, 2.0],
  [3.0, 1.51618, 13.53, 3.55, 1.54, 72.99, 0.39, 7.78, 0.0, 0.0, 3.0],
  ...
]
Run Code Online (Sandbox Code Playgroud)

矩阵最后一列中的项目是类:1.0、2.0 和 3.0特征标准化

后,我的数据如下所示:

[[-0.5036443480260487, -0.03450760227559746, 0.06723230162846759, 0.23028986544844693, -0.025324623254270005, 0.010553065215338569, 0.0015136367098358505, -0.11291235596166802, -0.05819669234942126, -0.12069793876044387, 1.0], 
[-0.4989050339943617, -0.11566537753097901, 0.010637426608816412, 0.2175704556290625, 0.03073267976659575, 0.05764598316498372, -0.012976783512350588, -0.11815839520204152, -0.05819669234942126, -0.12069793876044387, 2.0],
...
]
Run Code Online (Sandbox Code Playgroud)

我用于标准化的公式:

(X - avg(X)) / (max(X) - min(X))
Run Code Online (Sandbox Code Playgroud)

我对K …

classification machine-learning normalization nearest-neighbor knn

2
推荐指数
1
解决办法
2371
查看次数

knnImpute 使用带有 caret 包的分类变量

我有以下 data.table,其中每个唯一x值都与一个唯一y值相关联。然后我强制一个x值作为NAk 最近邻练习的目的:

dt <- data.table(x = rep(c(1:4), 3), 
                 y = rep(c("Brandon", "Erica", "Karyna", "Alex"), 3))
dt[3, 1] <- NA

print(dt)
 #    x       y
 #1:  1 Brandon
 #2:  2   Erica
 #3: NA  Karyna
 #4:  4    Alex
 #5:  1 Brandon
 #6:  2   Erica
 #7:  3  Karyna
 #8:  4    Alex
 #9:  1 Brandon
#10:  2   Erica
#11:  3  Karyna
#12:  4    Alex
Run Code Online (Sandbox Code Playgroud)

参考这个问题的第一个答案,我创建了一个二进制矩阵,dt$y如下所示:

dt.a <- model.matrix(~ y -1 , data …
Run Code Online (Sandbox Code Playgroud)

r knn r-caret

2
推荐指数
1
解决办法
2498
查看次数

未知标签类型:“连续”

我的团队,遇到了问题
----------------------

   Avg.SessionLength TimeonApp  TimeonWebsite LengthofMembership Yearly Amount Spent
    0   34.497268   12.655651    39.577668     4.082621                 587.951054
    1   31.926272   11.109461    37.268959     2.664034                 392.204933
    2   33.000915   11.330278    37.110597     4.104543                 487.547505
    3   34.305557   13.717514    36.721283     3.120179                 581.852344
    4   33.330673   12.795189    37.536653     4.446308                 599.406092
    5   33.871038   12.026925    34.476878     5.493507                 637.102448
    6   32.021596   11.366348    36.683776     4.685017                 521.572175 
Run Code Online (Sandbox Code Playgroud)

想申请KNN

X = df[['Avg. Session Length', 'Time on App','Time on Website', 'Length of Membership']] 
y = df['Yearly Amount Spent'] 

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, …
Run Code Online (Sandbox Code Playgroud)

python knn pandas scikit-learn

2
推荐指数
1
解决办法
3888
查看次数

R :插入符我们如何为 kNN 传递 k 参数

我使用插入符号表示 knn,最初使用tuneLength=10 运行该过程,我发现用于模型的 k=21

我想使用一组特定的 k 值来运行参数,但在传递 tuneGrid 中的值或将 k 值直接传递给训练函数时遇到错误

数据:

library(mlbench)
data(PimaIndiansDiabetes)
Run Code Online (Sandbox Code Playgroud)

代码:

grid = expand.grid(k = c(5,7,9,15,19,21)

compute_learncurve5 <- function(df=adultFile,control=control,ratio=30,fold=10,N=3,metric="Accuracy",
                                seed=1234,scaled=FALSE,DEBUG=FALSE) {
  result_df = c()
  size <- round(size=(ratio/100 * nrow(df)))
  split <-  gsub(" ","",paste(as.character(100-ratio),"/",as.character(ratio)))
  iter <-  N
  trainSize <-  nrow(df)-size
  testSize <-  size

  if (DEBUG){
    print(paste("Dimension of InputDataSet : ", dim(df)))
    print(paste("Test/Train Perct : ",ratio,"|",100-ratio,
                " : Train/Test size = ", trainSize,"|",testSize))
  }

  #Set-up data
  trainpct  <- (100-ratio)/100

  # Set-up Train and Test - Change target variable …
Run Code Online (Sandbox Code Playgroud)

r knn r-caret

2
推荐指数
1
解决办法
4342
查看次数

使用 sklearn 或 pandas 进行一次热编码后,如何在混合数据集(数值 + 分类)上应用 KNN

我正在尝试根据对象的各种特征(例如:类别、标签、作者、标题、视图、共享等)创建推荐器。正如您所看到的,这些功能是混合类型的,而且我没有任何特定于用户的数据。显示对象之一的详细信息后,我想再显示 3 个类似的对象。我正在尝试将 kNN 与 sklearn 一起使用,并发现单热编码在这种情况下很有用。但我不知道如何将它们与 KNN 一起应用。欢迎任何帮助,即使使用完全不同的库或方法。我是 ML 的新手。

similarity knn pandas scikit-learn one-hot-encoding

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

如何从另一个数据框中找到数据框中点的最近邻居

我想从 dataframe 中找到kdataframe 中所有点的最近邻居。这怎么可行?它似乎只需要一组数据,并且只需要一个查询点。ABsklearn.neighbors.NearestNeighbors

喜欢:

samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]]
from sklearn.neighbors import NearestNeighbors
neigh = NearestNeighbors(n_neighbors=1)
neigh.fit(samples) 

print(neigh.kneighbors([[1., 1., 1.]])) 
Run Code Online (Sandbox Code Playgroud)

来自Python 文档

我想要一个包含多个查询点的数据框而不是 [[1., 1., 1.]]

PS我想要的指标是Mahalanobissklearn.neighbors.KDTree不接受,而且scipy.spatial.KDTree甚至没有任何指标的选择。

python knn dataframe pandas

2
推荐指数
1
解决办法
1459
查看次数

在 python 中使用 sklearn 自己的估计器进行网格搜索 CV

我正在尝试构建自己的估计器(回归器)并将其用于插补(KnnImputation)。我在使用网格搜索“GridSearchCV”时遇到问题。有什么想法有什么问题吗?

我的代码:

class KnnImputation(BaseEstimator, RegressorMixin):

    def __init__(self, k=5, distance='euclidean'):
        self.k = k
        self.distance = distance

    def get_params(self, deep=False):
        return {'k': self.k, 'distance': self.distance}

    def set_params(self, **parameters):
        self.k = parameters['k']
        self.distance = parameters['distance']

    def fit(self, X, y):

        self.xTrain = X.values
        self.yTrain = y.values

        return self

    def predict(self, X):
        ........

        return yPred

# scorer:
scorer = make_scorer(mean_squared_error)

kf = KFold(n_splits=10, shuffle=False, random_state=23)
NN = KnnImputation()
gridSearchNN = GridSearchCV(NN, param_grid=params, scoring=scorer, n_jobs=1,
                            cv=kf.split(xTrain, yTrain), verbose=1)
gridSearchNN.fit(X=xTrain, y=yTrain)
Run Code Online (Sandbox Code Playgroud)

我的错误:

....
  File "C:\Users\...........\dataImputation.py", line 85, …
Run Code Online (Sandbox Code Playgroud)

python grid search knn imputation

2
推荐指数
1
解决办法
1256
查看次数

如何使用 cosine_similarity 运行 KNN?

我正在尝试跑步cosine_similarity,但KNN Classifier没有成功。

from sklearn.metrics.pairwise import cosine_similarity
knn = KNeighborsClassifier(n_neighbors=10,  metric=cosine_similarity).fit(x, y)
Run Code Online (Sandbox Code Playgroud)

x 的形状(150 个样本,4 个特征):

(150, 4)
Run Code Online (Sandbox Code Playgroud)

y 的形状:

(150,)
Run Code Online (Sandbox Code Playgroud)

我收到错误:

ValueError: Expected 2D array, got 1D array instead
Run Code Online (Sandbox Code Playgroud)

我曾尝试重塑x,但无论成功reshape(-1,1)还是rehsape(1,-1)失败。

我如何 KNN Classifier在这个数据集(x 有 4 个特征)上运行cosine_similarity

machine-learning knn scikit-learn

2
推荐指数
1
解决办法
2259
查看次数

图像识别中的K-最近邻

我目前正在研究项目或指导/指导我的研究.我要确定三叶不同的物种,并用100个样本每一个(300仅仅是特定的),我的教授要求我意味着K近邻算法使用在上传的100个样本在系统中上传的图片进行分类数据库作为参考.

我已经为系统上传了样本和图像处理,但我仍然需要应用KNN算法对它们进行分类,任何建议或分步教程?

是否需要研究编码算法,或者是否有现有的库可以在C#语言的图像分类中轻松应用KNN?并且每个叶子种类有100个图像样本吗?

更多信息:来自martijin_himself的回复

是的,我说的是树叶.嗯,问题是,唯一要考虑的特征是树叶的形状.忽略其他功能,如颜色,大小等.我并不确切知道何时或如何提取这些"特征向量",将它们放在何处以及如何将图像样本用作叶子的参考

关于系统的图像处理部分,图像经历二值化和斑点化的过程,使图像仅考虑其形状唯一的特征.因此,我在数据库中上传的所有样本都是如此.如果我缺乏答案所需的信息,我感到非常抱歉.请多多包涵.

提前致谢!:)

c# algorithm image-recognition knn

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

KNN算法在matlab中

我正在研究拇指识别系统.我需要实现KNN算法来分类我的图像.根据这个,它只有2个测量值,通过它计算找到最近邻居的距离,但在我的情况下,我有400张25 X 42的图像,其中200个用于训练,200个用于测试.我正在寻找几个小时,但我找不到找到点之间距离的方法.

编辑:我已将前200幅图像重新塑造成1 X 1050并将其存储在trainingData200 X 1050 的矩阵中.同样我制作了testingData.

matlab classification machine-learning distance knn

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