बिंदु विविधता को देखने के लिए हीटमैप जेनरेट करने के लिए क्या कोई एल्गोरिदम सुझा सकता है? एक उदाहरण आवेदन उच्च प्रजाति विविधता के मानचित्रण क्षेत्रों के लिए होगा। कुछ प्रजातियों के लिए, हर एक पौधे को मैप किया गया है, जिसके परिणामस्वरूप एक उच्च बिंदु गिनती होती है, लेकिन क्षेत्र की विविधता के संदर्भ में बहुत कम अर्थ के साथ। अन्य क्षेत्रों में वास्तव में उच्च विविधता है।
निम्नलिखित इनपुट डेटा पर विचार करें:
x y cat
0.8 8.1 B
1.1 8.9 A
1.6 7.7 C
2.2 8.2 D
7.5 0.9 A
7.5 1.2 A
8.1 1.5 A
8.7 0.3 A
1.9 2.1 B
4.5 7.0 C
3.8 4.0 D
6.6 4.8 A
6.2 2.4 B
2.2 9.1 B
1.7 4.7 C
7.5 7.3 D
9.2 1.2 A
और परिणामी नक्शा:
ऊपरी बाएँ वृत्त का चतुर्थ भाग में, एक अत्यधिक विविध पैच है, जबकि निचले दाएं चतुर्थांश में, उच्च बिंदु एकाग्रता के साथ एक क्षेत्र है, लेकिन कम विविधता है। विविधता को कल्पना करने के दो तरीके एक पारंपरिक हीटमैप का उपयोग कर सकते हैं, या प्रत्येक बहुभुज में प्रतिनिधित्व श्रेणियों की संख्या की गणना कर सकते हैं। जैसा कि निम्नलिखित छवियां दिखाती हैं, इन तरीकों का सीमित उपयोग होता है, क्योंकि हीटमैप सबसे निचले हिस्से में सबसे बड़ी तीव्रता दिखाता है, जबकि बिनिंग दृष्टिकोण बिल्कुल उसी तरह दिखाई देगा यदि केवल एक श्रेणी थी (यह आकार का आकार बढ़ाकर संबोधित किया जा सकता है बहुभुज डिब्बे, लेकिन फिर परिणाम अनावश्यक रूप से दानेदार हो जाता है)।
एक दृष्टिकोण जो मैंने ऐसा करने के लिए सोचा था कि एक पारंपरिक त्रिज्या एल्गोरिथ्म को एक निर्धारित त्रिज्या के भीतर विभिन्न श्रेणियों के बिंदुओं की संख्या से जोड़ा जाएगा, और फिर ऊष्मा पैदा करते समय बिंदु के वजन के रूप में उस गिनती का उपयोग किया जाएगा। हालाँकि, मुझे लगता है कि यह अवांछित कलाकृतियों के लिए खतरा हो सकता है, जैसे कि आपसी सुदृढीकरण बहुत तेज परिणामों की ओर ले जाता है। इसके अलावा, एक ही प्रकार के बारीकी से मैप किए गए बिंदु उच्च सांद्रता के रूप में दिखना जारी रखेंगे, बस उसी सीमा तक नहीं।
एक और दृष्टिकोण (शायद बेहतर लेकिन अधिक कम्प्यूटेशनल रूप से महंगा) होगा:
- डेटासेट में श्रेणियों की कुल संख्या की गणना करें
- आउटपुट छवि में प्रत्येक पिक्सेल के लिए:
- प्रत्येक श्रेणी के लिए:
- निकटतम प्रतिनिधि बिंदु (आर) की दूरी की गणना करें [संभवत: कुछ त्रिज्याओं द्वारा सीमित जिससे परे प्रभाव नगण्य है]
- 1 / r 2 के अनुपात में भार डालें
- प्रत्येक श्रेणी के लिए:
क्या पहले से ही एल्गोरिदम है कि मुझे ऐसा करने के लिए पता नहीं है, या विविधता की कल्पना करने के अन्य तरीके हैं?
संपादित करें
टोमिस्लाव मिक के सुझाव के बाद, मैंने प्रत्येक श्रेणी के लिए हीटमैप की गणना की है, और उन्हें निम्न सूत्र (क्यूजीआईएस रेखापुंज कैलकुलेटर) का उपयोग करके सामान्यीकृत किया है:
((heatmap_A@1 >= 1) + (heatmap_A@1 < 1) * heatmap_A@1) +
((heatmap_B@1 >= 1) + (heatmap_B@1 < 1) * heatmap_B@1) +
((heatmap_C@1 >= 1) + (heatmap_C@1 < 1) * heatmap_C@1) +
((heatmap_D@1 >= 1) + (heatmap_D@1 < 1) * heatmap_D@1)
निम्नलिखित परिणाम के साथ (उसके उत्तर के तहत टिप्पणी):