我正在对一些数据进行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
我有以下 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) 我的团队,遇到了问题
----------------------
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) 我使用插入符号表示 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) 我正在尝试根据对象的各种特征(例如:类别、标签、作者、标题、视图、共享等)创建推荐器。正如您所看到的,这些功能是混合类型的,而且我没有任何特定于用户的数据。显示对象之一的详细信息后,我想再显示 3 个类似的对象。我正在尝试将 kNN 与 sklearn 一起使用,并发现单热编码在这种情况下很有用。但我不知道如何将它们与 KNN 一起应用。欢迎任何帮助,即使使用完全不同的库或方法。我是 ML 的新手。
我想从 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)
我想要一个包含多个查询点的数据框而不是 [[1., 1., 1.]]
PS我想要的指标是Mahalanobis其sklearn.neighbors.KDTree不接受,而且scipy.spatial.KDTree甚至没有任何指标的选择。
我正在尝试构建自己的估计器(回归器)并将其用于插补(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) 我正在尝试跑步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?
我目前正在研究项目或指导/指导我的研究.我要确定三叶不同的物种,并用100个样本每一个(300仅仅是特定的),我的教授要求我意味着K近邻算法使用在上传的100个样本在系统中上传的图片进行分类数据库作为参考.
我已经为系统上传了样本和图像处理,但我仍然需要应用KNN算法对它们进行分类,任何建议或分步教程?
是否需要研究编码算法,或者是否有现有的库可以在C#语言的图像分类中轻松应用KNN?并且每个叶子种类有100个图像样本吗?
更多信息:来自martijin_himself的回复
是的,我说的是树叶.嗯,问题是,唯一要考虑的特征是树叶的形状.忽略其他功能,如颜色,大小等.我并不确切知道何时或如何提取这些"特征向量",将它们放在何处以及如何将图像样本用作叶子的参考
关于系统的图像处理部分,图像经历二值化和斑点化的过程,使图像仅考虑其形状唯一的特征.因此,我在数据库中上传的所有样本都是如此.如果我缺乏答案所需的信息,我感到非常抱歉.请多多包涵.
提前致谢!:)
我正在研究拇指识别系统.我需要实现KNN算法来分类我的图像.根据这个,它只有2个测量值,通过它计算找到最近邻居的距离,但在我的情况下,我有400张25 X 42的图像,其中200个用于训练,200个用于测试.我正在寻找几个小时,但我找不到找到点之间距离的方法.
编辑:我已将前200幅图像重新塑造成1 X 1050并将其存储在trainingData200 X 1050 的矩阵中.同样我制作了testingData.
knn ×10
pandas ×3
python ×3
scikit-learn ×3
r ×2
r-caret ×2
algorithm ×1
c# ×1
dataframe ×1
distance ×1
grid ×1
imputation ×1
matlab ×1
search ×1
similarity ×1