আর-তে দুটি পয়েন্ট প্যাটার্নের মধ্যে দ্বিতীয় নিকটতম প্রতিবেশী কীভাবে পাবেন?


12

আর-তে দুটি বিন্দুর নিদর্শনগুলির মধ্যে দ্বিতীয় নিকটতম প্রতিবেশীর দূরত্ব পাওয়ার কোনও উপায় আছে কি? স্পাটস্যাট প্যাকেজটির এনএনক্রস নামে একটি ফাংশন রয়েছে তবে এটি কেবল দুটি প্যাটার্নের মধ্যে নিকটতম প্রতিবেশীদের ক্ষেত্রে প্রযোজ্য এবং দ্বিতীয় নিকটবর্তী প্রতিবেশীদের কাছে আমার দূরত্ব প্রয়োজন।

উত্তর:


9

প্যাকেজ এফএনএন-এ get.knnx ফাংশনটি এন-নিকটতম প্রতিবেশীদের পয়েন্ট প্যাটার্নে গণনা করতে পারে।

x1 = cbind(runif(10),runif(10))
x2 = cbind(runif(10),runif(10))
nn = get.knnx(x1,x2,2)

এখন nn $ nn.index এমন একটি ম্যাট্রিক্স যা nn $ nn.index [i, j] দুইটি নিকটতম প্রতিবেশীর x1 এর সারিটি আমি x2-এ সারিতে সারি - যাতে সাজানো হয় নিকটতম [i, 1], এবং পরের প্রতিবেশী [i, 2]]

ফাংশনটি আপনার জন্য দূরত্বও ফিরিয়ে দেয় এবং খুব দ্রুত অনুসন্ধানের জন্য স্থানিক সূচকগুলি গণনা করার জন্য কিছু বিকল্প রয়েছে।


ধন্যবাদ। যদিও কিছুটা সমস্যার মধ্যে পড়ে। আমার ডেটা ক্লাস 'পিপিপি' এর (স্প্যাটস্যাট ব্যবহারের জন্য)। আমি যখন এটি get.knnw এ প্লাগ করি, তখন আমি নীচের ত্রুটিটি পেয়ে যাই> get.knnx এ ত্রুটি (আরপি, প্যান্ডেরোসা, ২): তালিকাগুলি অবশ্যই ড। সি-তে নকল করতে হবে
আর কে ২

আপনার পিপিপি অবজেক্টে as.data.frame ব্যবহার করে স্থানাংকগুলি কেবল পান।
স্পেসডম্যান

এনডিস্ট এবং এন এন কারা এই কাজের জন্য প্রস্তুত থাকতে পারে? আজ আর-সিগ-জিও তালিকার এই দুটি ফাংশনটি কেবলমাত্র খেয়াল করেছেন ...
রোমান লুইট্রিক ২rik

nndist এবং nn যা কেবলমাত্র একক পয়েন্ট প্যাটার্নের মধ্যে নিকটতম দূরত্বগুলি গণনা করে (যা get.knn কী করে) এক ধরণের বিন্দু থেকে অন্য ধরণের বিন্দুতে নয় (যা get.knnx কী করে)। এছাড়াও, যদি আপনি অ্যালগরিদম = "কেডি_ট্রি" ব্যবহার করেন তবে get.knn nndist এর চেয়ে দ্বিগুণ দ্রুত।
স্পেসডম্যান

@ স্পিডম্যান এটি বুঝতে পেরেছেন। ধন্যবাদ মানুষ. আমি সবেমাত্র ক্রসডিস্ট দেখেছি। এটি get.knnx এর মতো কাজ করছে বলে মনে হচ্ছে। পাশাপাশি চেষ্টা করবে। আপনার মন্তব্যটি পড়ার আগে আমি সিবাইন্ডটি ব্যবহার করে শেষ করেছিলাম এবং তারপরে এক্স এবং ওয়াই সমন্বয় করে। অনেক ধন্যবাদ. এখানে নবাগত। বেশিরভাগই পাইথন লোক।
আর কে

6

আমি শুধু আবিষ্কার করেছি যে spatstat টি crossdist ফাংশন।

বিবরণ

দুটি পৃথক ডেটাसेट থেকে নেওয়া 'জিনিসগুলির' জোড়াগুলির মধ্যে দূরত্বগুলি গণনা করে।

এটি ইনপুট হিসাবে এক্স এবং ওয়াইয়ের দুটি পয়েন্টের নিদর্শন নেয় এবং ম্যাট্রিক্স প্রদান করে যার [i, j] এন্ট্রিটি এক্স [i] থেকে ওয়াই [জে] এর দূরত্ব। দ্বিতীয় নিকটতম প্রতিবেশী ক্রসডিস্ট ব্যবহার করে পেতে:

xdistances <- crossdist(X, Y)  #Get all cross distances    

nn = numeric() 
for (i in 1:nrow(X)) {   
  xdistance <- sort(xdistances[i,], partial=2)[2]   
  nn <- append(nn, xdistance)
}

আমি জানি আমি ইতিমধ্যে স্পেসডম্যানের উত্তরটি গ্রহণ করেছি তবে আমি কীভাবে এটি অন্যভাবে করেছি তা ভাগ করে নিতে চাই।


0

ফাংশন nndistমধ্যে spatstatপ্যাকেজ একটি আর্গুমেন্ট হয়েছে kযে প্রতিবেশীরা ক্রম নির্ধারণ করে। দ্বিতীয় নিকটতম প্রতিবেশী দূরত্ব পেতে, ব্যবহার করুন k=2। প্রথম এবং দ্বিতীয় প্রতিবেশী উভয়ই পেতে, ব্যবহার করুন k=1:2

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.