تقنية رسم خرائط سامون (Sammon Mapping) وتنفيذها في بايثون

تعيين غير الخطي لتصور البيانات

تنتمي تقنية رسم خرائط سامون (Sammon Mapping) إلى عائلة خوارزميات القياس متعددة الأبعاد، حيث يتمثل هدفها الرئيسي في تقليل مساحة الأبعاد العالية إلى مساحة ذات أبعاد أقل، لهدف التصور. بخلاف PCA وخوارزميات قياس الأبعاد الأخرى، لا يتمثل هدف تقنية رسم خرائط سامون (Sammon Mapping) في إبراز المكون الأكثر وصفًا لعرض نقاط البيانات الأصلية عليه، بل تمثيل “بنية” البيانات الأصلية بشكل أو بآخر، حتى عند تسويتها فضاء بأبعاد أقل، وتسليط الضوء على الأنماط والعلاقات المكانية.

تقنية رسم خرائط سامون
رسم توضيحي 1: تقنیه خرائط سامون

الهدف الرئیسي

من السهل جدًا رسم نقاط في الفضاء إذا كانت المساحة 1 أو 2 أو 3 أبعاد. من أجل تمثيل مسافات ذات أبعاد أعلى، يمكنك تطبيق بعض خوارزميات تقليل الأبعاد، مع الاحتفاظ بأفضل محورين أو ثلاثة محاور للفضاء، أو بعض التوليفات. عادةً ما يؤدي هذا النوع من الإسقاط إلى تشويه (distort) المسافات بين النقاط، ورسم خرائط لها في مساحة ليس لها نفس الأبعاد.

لماذا الإسقاط؟

يعد الإسقاط (projection) أحد الخطوات الرئيسية المستخدمة أثناء التمثيل المرئي وتحليل البيانات. يمكننا بسهولة تصوير البيانات ثنائية الأبعاد وثلاثية الأبعاد ولكن يصعب علينا تصور أي شيء أعلى من هذه الأبعاد. في مثل هذه الحالة، نحتاج إلى عرض مجموعات بيانات كاملة بأبعاد أقل (أي ثنائية أو ثلاثية الأبعاد) من خلال الحفاظ على خصائصها لتحليلها. يتم استخدام بعض خوارزميات الإسقاط الخطي کثیرا لمثل هذه الحالات.

استخدام إسقاط سامون (Sammon Mapping)

الاستخدام الرئيسي للإسقاط هو التصور. يُعد إسقاط سامون مفيدًا للتحليل الأولي في التعرف على الأنماط الإحصائية، لأنه يمكن الحصول على تصور تقريبي لتوزيع فئوي، وخاصة تداخل الفئات. یمکن استخدمها بشكل أساسي كخطوة أولى في تحليل البيانات متبوعة بالفحص باستخدام خرائط التنظيم الذاتي (Self Organizing map). لذلك من الممكن “التحقق المتبادل (cross-verify)” من النتائج.

ملاحظة 1: نظرًا لعملية الإسقاط، لا يمكن تعيين عنصر جديد للبيانات إلى الموضع الصحيح في الصورة، وبالتالي يجب إعادة حساب الإسقاط لكل عنصر جديد للبيانات. هذا لأنه لا توجد طريقة رياضية لوصف موضع المتجه الجديد.

ملاحظة 2: كما هو الحال في أي تحليل إحصائي آخر، قد يكون من المفيد تطبیع البيانات. أسلوب التطبيع الشائع هو ما يسمى بالتطبيع (0،1) الذي يعمل على تطبيع كل خصیصة بحيث يصبح متوسطها 0 والتباين 1. ويتم تحقيق ذلك عن طريق طرح المتوسط والقسمة على التباين.

الخلفية

يمكن عرض البيانات ثنائية الأبعاد وثلاثية الأبعاد بسهولة، على سبيل المثال من خلال مخطط مبعثر، يمكن عرض البيانات رباعية الأبعاد کمخطط تبعثر ثلاثي الأبعاد بينما يتوافق حجم النقاط مع البعد الرابع. عندما نصل إلى أبعاد أعلى، علينا إيجاد حلول أخرى. سأعرض هنا إسقاط سامون كمتغير مستخدم على نطاق واسع للإسقاط غير الخطي وينتمي إلى طرق القياس متعددة الأبعاد المترية (metric multidimensional scaling). يحاول تخطيط سامون (المعروف أيضًا باسم إسقاط سامون) مطابقة المسافات الزوجية للإسقاطات ذات الأبعاد المنخفضة (التمثيلات) لعناصر البيانات مع مسافاتها الأصلية. لذلك علينا تحديد مقياس تستخدمه الخوارزمية.

المقياس (Metric)

لنفترض أن لدينا مساحة مترية ومتجهين:

x:=\vec{x}=[\xi _{1},\xi _{2},\xi _{3},\xi _{4}, ...]^{T}

y:=\vec{y}=[\eta _{1},\eta _{2},\eta _{3},\eta _{4}, ...]^{T}

ثم التعريف العام للمسافة ما يسمى Minkowski-metric والذي يتم تعريفه على النحو التالي:

\rho _{M}(x,y)=(\sum_{i=1}^{n}|\xi _{i}-\eta _{i}|^{\lambda })^{1/\lambda }

الأكثر شيوعًا، يتم استخدام المقياس الإقليدي (Euclidean metric) (لامدا: = 2):

\rho _{2}(x,y)=||x-y||=\sqrt{\sum_{i=1}^{n}(\xi _{i}-\eta _{i})^{2}}

أو مقياس مانهاتن (Manhattan metric) (يُسمى أيضًا مقياس City-Block، لامدا: = 1):

\rho _{1}(x,y)= \sum_{i=1}^{n}|\xi _{i}-\eta _{i}|

يعتبر مقياس مانهاتن أقل ثقلاً من الناحية الحسابية مقارنة بالمسافة الإقليدية، وبالتالي في هذه المقالة، يتم استخدام مقياس مانهاتن.

خوارزمية الإسقاط

افترض مجموعة محدودة من العينات المتجهة {x_{i}} واجعل d_{ij}=d(x_{i},x_{j}) فهي المسافة المحددة بين x_{i} و x_{j}. تصور بأن r_{i} يكون موقع صورة x_{i} على مستوى (plane) العرض. المبدأ إذن هو وضع المواقع r_{i}=1,2,3,000 على المستوى بحيث تكون جميع مسافاتهم المتبادلة ||r_{i}-r_{j}|| أقرب ما يمكن إلى مسافة المتجهات المقابلة في مساحة الإدخال.

خطأ الإسقاط (Projection Error)

من أجل قياس “جودة” الإسقاط، يذكر سامون دالة تكلفة (cost function) تسمى إسترس سامون (Sammon stress) في الأدبيات.

E_{s}=\frac{1}{\sum_{i}\sum_{j>i}d_{ij}}\sum_{i}\sum_{i>j}\frac{(d_{ij}-||r_{i}-r_{j}||)^{2}}{d_{ij}}

تخفیض خطأ الإسقاط

وبالتالي، يهدف الإسقاط (projection) إلى تقليل هذه الدالة أي دالة خطأ الإسقاط. يمكن تخيل أنها القضية الأكثر أهمية وقد تم ابتكار العديد من التقنيات لهذا الغرض. وتعد تقنية steepest-descent iterative هي الطريقة الأكثر شيوعًا لتقليل قيمة هذه الوظيفة.

تنفیذ تقنية خرائط سامون في بایثون

لدينا إطار بيانات الباندا يسرد بعض الخصائص على 210 بذرة ملصقة. تتضمن مجموعة البيانات الخاصة بنا 8 خصائص لكل ملاحظة، مما يجعل من المستحيل رسمها إلا إذا قللناها إلى 3 أبعاد أو أقل باستخدام خرائط سامون. لتحمیل مجموعة البیانات یمکنکم مراجعة هذا الرابط.

تحديد دالة التقنية

هنا نكتب التقنية كدالة في بایثون.

کود:

def sammon(x, n, display = 2, inputdist = 'raw', maxhalves = 20, maxiter = 500, tolfun = 1e-9, init = 'default'):

    import numpy as np 
    from scipy.spatial.distance import cdist
    # Create distance matrix unless given by parameters
    if inputdist == 'distance':
        D = x
        if init == 'default':
            init = 'cmdscale'
    else:
        D = cdist(x, x)
        if init == 'default':
            init = 'pca'

    if inputdist == 'distance' and init == 'pca':
        raise ValueError("Cannot use init == 'pca' when inputdist == 'distance'")

    if np.count_nonzero(np.diagonal(D)) > 0:
        raise ValueError("The diagonal of the dissimilarity matrix must be zero")

    # Remaining initialisation
    N = x.shape[0]
    scale = 0.5 / D.sum()
    D = D + np.eye(N)     

    if np.count_nonzero(D<=0) > 0:
        raise ValueError("Off-diagonal dissimilarities must be strictly positive")   

    Dinv = 1 / D
    if init == 'pca':
        [UU,DD,_] = np.linalg.svd(x)
        y = UU[:,:n]*DD[:n] 
    elif init == 'cmdscale':
        from cmdscale import cmdscale
        y,e = cmdscale(D)
        y = y[:,:n]
    else:
        y = np.random.normal(0.0,1.0,[N,n])
    one = np.ones([N,n])
    d = cdist(y,y) + np.eye(N)
    dinv = 1. / d
    delta = D-d 
    E = ((delta**2)*Dinv).sum() 

    # Get on with it
    for i in range(maxiter):
        delta = dinv - Dinv
        deltaone = np.dot(delta,one)
        g = np.dot(delta,y) - (y * deltaone)
        dinv3 = dinv ** 3
        y2 = y ** 2
        H = np.dot(dinv3,y2) - deltaone - np.dot(2,y) * np.dot(dinv3,y) + y2 * np.dot(dinv3,one)
        s = -g.flatten(order='F') / np.abs(H.flatten(order='F'))
        y_old    = y

        # Use step-halving procedure to ensure progress is made
        for j in range(maxhalves):
            s_reshape = np.reshape(s, (-1,n),order='F')
            y = y_old + s_reshape
            d = cdist(y, y) + np.eye(N)
            dinv = 1 / d
            delta = D - d
            E_new = ((delta**2)*Dinv).sum()
            if E_new < E:
                break
            else:
                s = 0.5*s

        # Bomb out if too many halving steps are required
        if j == maxhalves-1:
            print('Warning: maxhalves exceeded. Sammon mapping may not converge...')

        # Evaluate termination criterion
        if abs((E - E_new) / E) < tolfun:
            if display:
                print('TolFun exceeded: Optimisation terminated')
            break

        # Report progress
        E = E_new
        if display > 1:
            print('epoch = %d : E = %12.10f'% (i+1, E * scale))

    if i == maxiter-1:
        print('Warning: maxiter exceeded. Sammon mapping may not have converged...')

    # Fiddle stress to match the original Sammon paper
    E = E * scale
    
    return [y,E]

في الواقع، هذة دالة تحتوي على 5 مدخلات اختيارية و 2 من المدخلات القسرية، والمدخل الأول هو في الواقع نفس بيانات الإدخال والثاني هو بُعد الإخراج للبيانات.

تحدید مجموعة البیانات

import pandas as pd
data = pd.read_excel("/content/drive/MyDrive/seeds_dataset-complete.xlsx")
data

سیکون الإخراج کما یلي:

A	B	C	D	E	F	G	H
0	15.26	14.84	0.8710	5.763	3.312	2.221	5.220	1
1	14.88	14.57	0.8811	5.554	3.333	1.018	4.956	1
2	14.29	14.09	0.9050	5.291	3.337	2.699	4.825	1
3	13.84	13.94	0.8955	5.324	3.379	2.259	4.805	1
4	16.14	14.99	0.9034	5.658	3.562	1.355	5.175	1
...	...	...	...	...	...	...	...	...
205	12.19	13.20	0.8783	5.137	2.981	3.631	4.870	3
206	11.23	12.88	0.8511	5.140	2.795	4.325	5.003	3
207	13.20	13.66	0.8883	5.236	3.232	8.315	5.056	3
208	11.84	13.21	0.8521	5.175	2.836	3.598	5.044	3
209	12.30	13.34	0.8684	5.243	2.974	5.637	5.063	3
210 rows × 8 columns

تطبيق دالة خرائط سامون على مجموعة البيانات

کود:

y = sammon(data, 3)

الإخراج سیکون علی هذا النحو:

epoch = 1 : E = 0.0010395794
epoch = 2 : E = 0.0010147445
epoch = 3 : E = 0.0005039444
epoch = 4 : E = 0.0003414692
epoch = 5 : E = 0.0002802887
epoch = 6 : E = 0.0002361635
epoch = 7 : E = 0.0002118385
epoch = 8 : E = 0.0001926891
epoch = 9 : E = 0.0001844833
epoch = 10 : E = 0.0001737196
epoch = 11 : E = 0.0001256588
epoch = 12 : E = 0.0001196074
epoch = 13 : E = 0.0001155820
epoch = 14 : E = 0.0001120866
epoch = 15 : E = 0.0001108501
epoch = 16 : E = 0.0001086377
epoch = 17 : E = 0.0001026250
epoch = 18 : E = 0.0001005355
epoch = 19 : E = 0.0000988116
epoch = 20 : E = 0.0000972934
epoch = 21 : E = 0.0000961588
epoch = 22 : E = 0.0000950785
epoch = 23 : E = 0.0000946489
epoch = 24 : E = 0.0000939468
epoch = 25 : E = 0.0000913212
epoch = 26 : E = 0.0000904371
epoch = 27 : E = 0.0000896595
epoch = 28 : E = 0.0000889649
epoch = 29 : E = 0.0000883803
epoch = 30 : E = 0.0000878579
epoch = 31 : E = 0.0000874855
epoch = 32 : E = 0.0000871350
epoch = 33 : E = 0.0000870576
epoch = 34 : E = 0.0000868900
epoch = 35 : E = 0.0000855180
epoch = 36 : E = 0.0000851855
epoch = 37 : E = 0.0000848922
epoch = 38 : E = 0.0000846316
epoch = 39 : E = 0.0000844102
epoch = 40 : E = 0.0000842160
epoch = 41 : E = 0.0000840707
epoch = 42 : E = 0.0000839448
epoch = 43 : E = 0.0000838986
epoch = 44 : E = 0.0000838515
epoch = 45 : E = 0.0000833269
epoch = 46 : E = 0.0000832009
epoch = 47 : E = 0.0000830886
epoch = 48 : E = 0.0000829886
epoch = 49 : E = 0.0000829011
epoch = 50 : E = 0.0000828244
epoch = 51 : E = 0.0000827610
epoch = 52 : E = 0.0000827072
epoch = 53 : E = 0.0000826709
epoch = 54 : E = 0.0000826429
epoch = 55 : E = 0.0000825013
epoch = 56 : E = 0.0000824530
epoch = 57 : E = 0.0000824095
epoch = 58 : E = 0.0000823705
epoch = 59 : E = 0.0000823357
epoch = 60 : E = 0.0000823046
epoch = 61 : E = 0.0000822774
epoch = 62 : E = 0.0000822536
epoch = 63 : E = 0.0000822337
epoch = 64 : E = 0.0000822171
epoch = 65 : E = 0.0000822054
epoch = 66 : E = 0.0000821971
epoch = 67 : E = 0.0000821962
epoch = 68 : E = 0.0000821358
epoch = 69 : E = 0.0000821219
epoch = 70 : E = 0.0000821094
epoch = 71 : E = 0.0000820981
epoch = 72 : E = 0.0000820880
epoch = 73 : E = 0.0000820789
epoch = 74 : E = 0.0000820709
epoch = 75 : E = 0.0000820638
epoch = 76 : E = 0.0000820577
epoch = 77 : E = 0.0000820526
epoch = 78 : E = 0.0000820485
epoch = 79 : E = 0.0000820458
epoch = 80 : E = 0.0000820441
epoch = 81 : E = 0.0000820296
epoch = 82 : E = 0.0000820254
epoch = 83 : E = 0.0000820217
epoch = 84 : E = 0.0000820183
epoch = 85 : E = 0.0000820152
epoch = 86 : E = 0.0000820125
epoch = 87 : E = 0.0000820100
epoch = 88 : E = 0.0000820079
epoch = 89 : E = 0.0000820060
epoch = 90 : E = 0.0000820044
epoch = 91 : E = 0.0000820031
epoch = 92 : E = 0.0000820021
epoch = 93 : E = 0.0000820015
epoch = 94 : E = 0.0000820013
epoch = 95 : E = 0.0000819961
epoch = 96 : E = 0.0000819949
epoch = 97 : E = 0.0000819939
epoch = 98 : E = 0.0000819929
epoch = 99 : E = 0.0000819920
epoch = 100 : E = 0.0000819912
epoch = 101 : E = 0.0000819905
epoch = 102 : E = 0.0000819899
epoch = 103 : E = 0.0000819893
epoch = 104 : E = 0.0000819889
epoch = 105 : E = 0.0000819885
epoch = 106 : E = 0.0000819882
epoch = 107 : E = 0.0000819881
epoch = 108 : E = 0.0000819881
epoch = 109 : E = 0.0000819864
epoch = 110 : E = 0.0000819860
epoch = 111 : E = 0.0000819857
epoch = 112 : E = 0.0000819854
epoch = 113 : E = 0.0000819851
epoch = 114 : E = 0.0000819849
epoch = 115 : E = 0.0000819847
epoch = 116 : E = 0.0000819845
epoch = 117 : E = 0.0000819843
epoch = 118 : E = 0.0000819842
epoch = 119 : E = 0.0000819841
epoch = 120 : E = 0.0000819840
epoch = 121 : E = 0.0000819839
epoch = 122 : E = 0.0000819839
epoch = 123 : E = 0.0000819834
epoch = 124 : E = 0.0000819833
epoch = 125 : E = 0.0000819832
epoch = 126 : E = 0.0000819831
epoch = 127 : E = 0.0000819830
epoch = 128 : E = 0.0000819830
epoch = 129 : E = 0.0000819829
epoch = 130 : E = 0.0000819828
epoch = 131 : E = 0.0000819828
epoch = 132 : E = 0.0000819827
epoch = 133 : E = 0.0000819827
epoch = 134 : E = 0.0000819826
epoch = 135 : E = 0.0000819826
epoch = 136 : E = 0.0000819826
epoch = 137 : E = 0.0000819825
epoch = 138 : E = 0.0000819824
epoch = 139 : E = 0.0000819824
epoch = 140 : E = 0.0000819824
epoch = 141 : E = 0.0000819823
epoch = 142 : E = 0.0000819823
epoch = 143 : E = 0.0000819823
epoch = 144 : E = 0.0000819823
epoch = 145 : E = 0.0000819823
epoch = 146 : E = 0.0000819822
epoch = 147 : E = 0.0000819822
epoch = 148 : E = 0.0000819822
epoch = 149 : E = 0.0000819822
epoch = 150 : E = 0.0000819822
epoch = 151 : E = 0.0000819822
epoch = 152 : E = 0.0000819822
epoch = 153 : E = 0.0000819821
epoch = 154 : E = 0.0000819821
epoch = 155 : E = 0.0000819821
epoch = 156 : E = 0.0000819821
epoch = 157 : E = 0.0000819821
epoch = 158 : E = 0.0000819821
epoch = 159 : E = 0.0000819821
epoch = 160 : E = 0.0000819821
epoch = 161 : E = 0.0000819821
epoch = 162 : E = 0.0000819821
epoch = 163 : E = 0.0000819821
epoch = 164 : E = 0.0000819821
epoch = 165 : E = 0.0000819821
epoch = 166 : E = 0.0000819821
epoch = 167 : E = 0.0000819821
epoch = 168 : E = 0.0000819820
epoch = 169 : E = 0.0000819820
epoch = 170 : E = 0.0000819820
epoch = 171 : E = 0.0000819820
epoch = 172 : E = 0.0000819820
epoch = 173 : E = 0.0000819820
epoch = 174 : E = 0.0000819820
epoch = 175 : E = 0.0000819820
epoch = 176 : E = 0.0000819820
epoch = 177 : E = 0.0000819820
epoch = 178 : E = 0.0000819820
epoch = 179 : E = 0.0000819820
epoch = 180 : E = 0.0000819820
epoch = 181 : E = 0.0000819820
epoch = 182 : E = 0.0000819820
epoch = 183 : E = 0.0000819820
epoch = 184 : E = 0.0000819820
epoch = 185 : E = 0.0000819820
epoch = 186 : E = 0.0000819820
epoch = 187 : E = 0.0000819820
epoch = 188 : E = 0.0000819820
epoch = 189 : E = 0.0000819820
epoch = 190 : E = 0.0000819820
epoch = 191 : E = 0.0000819820
epoch = 192 : E = 0.0000819820
epoch = 193 : E = 0.0000819820
epoch = 194 : E = 0.0000819820
TolFun exceeded: Optimisation terminated

في هذه الدالة، اختزلنا البيانات ثمانية الأبعاد إلى ثلاثية الأبعاد.

طباعة بيانات الإخراج

print(y)

الإخراج سیکون علی هذا النحو:

[array([[-2.28339309e+01, -1.67760725e+00,  3.32855200e-01],
       [-2.22273194e+01, -2.46381327e+00,  1.23015021e+00],
       [-2.15640021e+01, -1.11663765e+00,  4.83137569e-02],
       [-2.11200321e+01, -1.25720741e+00,  4.95088329e-01],
       [-2.35092581e+01, -2.64289313e+00,  6.88376543e-01],
       [-2.17486026e+01, -1.25843444e+00,  2.88317260e-01],
       [-2.23161529e+01, -4.99803196e-01, -4.66894639e-01],
       [-2.15277145e+01, -9.70583897e-01,  2.32373855e-01],
       [-2.43633712e+01, -2.27623511e+00,  1.71312539e-01],
       [-2.40201321e+01, -2.23944794e+00,  2.62039143e-01],
       [-2.30242183e+01, -2.13812357e-02, -1.27921600e+00],
       [-2.14197037e+01, -1.62870641e+00,  9.66054863e-01],
       [-2.13533058e+01,  1.06165718e-02, -6.64839845e-01],
       [-2.12664040e+01, -5.36268602e-01,  9.96222585e-03],
       [-2.11922226e+01, -6.73422335e-01,  1.43271915e-01],
       [-2.20113119e+01, -1.24741230e-01, -1.05603571e+00],
       [-2.14397317e+01,  8.98753650e-01, -1.58233460e+00],
       [-2.30019809e+01, -2.37288692e+00,  5.32241616e-01],
       [-2.17479270e+01, -2.05419310e+00,  3.97191711e-01],
       [-2.02575878e+01,  5.30829139e-01, -4.09960583e-01],
       [-2.18343958e+01, -6.38705052e-01,  5.76508604e-02],
       [-2.17201585e+01, -8.75568012e-01,  4.07167042e-01],
       [-2.31873331e+01, -2.97940415e+00,  1.16155308e+00],
       [-1.92972630e+01, -1.19051451e+00,  1.49577378e+00],
       [-2.24750844e+01, -1.99409194e+00,  6.00335781e-01],
       [-2.36531842e+01, -2.91855920e+00,  1.08809990e+00],
       [-2.05247081e+01, -1.12760912e-01,  2.90812579e-02],
       [-2.02010052e+01, -5.98533868e-01,  7.44810153e-01],
       [-2.16224782e+01, -8.77869459e-01,  2.64095095e-01],
       [-2.10594325e+01, -1.21245897e-01, -1.66771145e-01],
       [-2.05225527e+01, -1.93055185e+00,  1.81721409e+00],
       [-2.31562858e+01, -9.19600429e-01, -5.60355714e-01],
       [-2.18645109e+01, -3.36803793e-02, -5.58410695e-01],
       [-2.14287489e+01, -1.28540345e+00,  7.57378299e-01],
       [-2.26412649e+01, -1.61699318e+00,  5.32093676e-01],
       [-2.36431338e+01, -1.91482381e+00,  1.07890185e-01],
       [-2.38922133e+01, -1.55265340e+00, -2.89168161e-01],
       [-2.46607924e+01, -1.76159292e+00, -6.21439219e-01],
       [-2.24210198e+01, -8.41774605e-01, -1.33769627e-01],
       [-2.20296645e+01,  1.83742420e+00, -2.57459400e+00],
       [-2.10032397e+01, -7.90249640e-01,  5.50459960e-01],
       [-2.09469695e+01, -1.01987958e+00,  8.01774276e-01],
       [-2.04225248e+01, -8.19953376e-01,  6.00113634e-01],
       [-2.33265131e+01,  4.29736130e-02, -1.44055494e+00],
       [-2.26413023e+01, -9.89989016e-01, -2.85841768e-01],
       [-2.11521321e+01, -1.66052508e+00,  1.12689462e+00],
       [-2.27879438e+01, -2.34414986e+00,  8.98869020e-01],
       [-2.25314641e+01, -1.06502057e+00, -1.16168843e-01],
       [-2.23100292e+01, -1.17594778e+00,  1.09567522e-01],
       [-2.24779977e+01, -1.54751453e+00,  6.02601068e-01],
       [-2.20875863e+01, -1.53606222e-01, -6.86168901e-01],
       [-2.35191229e+01,  5.39142028e-01, -2.17371975e+00],
       [-2.23228731e+01, -3.98276693e-03, -7.80967723e-01],
       [-2.19101792e+01, -5.44278961e-01, -2.05752969e-01],
       [-2.22032899e+01, -1.82261941e+00,  1.29516407e+00],
       [-2.26771293e+01, -1.70752772e+00,  7.64884277e-01],
       [-2.19384092e+01, -1.03296532e+00,  6.20999300e-02],
       [-2.21613542e+01, -2.44199653e+00,  9.97059517e-01],
       [-2.28753000e+01, -1.89245122e+00,  4.37853159e-01],
       [-1.94839417e+01, -1.15035722e+00,  1.65848516e+00],
       [-1.87019116e+01, -2.89799167e-02,  8.53536869e-01],
       [-1.84187262e+01, -2.55118019e-01,  1.22234258e+00],
       [-1.96416195e+01,  8.79750514e-03,  2.76607343e-01],
       [-2.08308603e+01,  4.04516458e-01, -5.48097469e-01],
       [-2.00497308e+01, -1.59292940e+00,  1.61459392e+00],
       [-2.01145946e+01, -8.27350326e-01,  7.26322271e-01],
       [-2.17840332e+01, -2.00631257e+00,  1.22043702e+00],
       [-2.15966250e+01, -1.21213651e+00,  7.32964151e-01],
       [-2.18839912e+01, -1.84744676e+00,  1.19077496e+00],
       [-2.03124400e+01,  1.21928084e-01, -3.23927376e-02],
       [-2.59663816e+01, -4.38934293e-01, -7.01518911e-01],
       [-2.51676804e+01,  2.11469545e-01, -9.85470653e-01],
       [-2.54835290e+01, -8.28637256e-02, -1.06784110e+00],
       [-2.71286291e+01, -1.94169995e+00, -4.74784787e-01],
       [-2.50178484e+01, -2.80889010e-01, -5.46687206e-01],
       [-2.50706208e+01,  3.91607097e-01, -1.17063222e+00],
       [-2.56047640e+01, -5.22306024e-01, -4.71634176e-01],
       [-2.91584363e+01, -1.17137802e+00, -1.60556898e+00],
       [-2.74724280e+01, -4.91001206e-02, -1.53024485e+00],
       [-2.51445982e+01, -1.22351804e+00,  1.75706682e-01],
       [-2.48279314e+01,  9.33271113e-01, -1.52653009e+00],
       [-2.69033926e+01, -9.39580964e-02, -2.06393827e+00],
       [-2.85133437e+01, -6.02789573e-01, -2.16696128e+00],
       [-2.77008409e+01, -2.98436044e+00,  6.41105574e-01],
       [-2.77396900e+01, -1.91758518e+00, -4.10094150e-01],
       [-2.64320471e+01, -1.80136713e+00,  3.07974432e-01],
       [-2.68538720e+01, -2.70923689e+00,  5.80748428e-01],
       [-2.75426754e+01, -9.65406466e-01, -4.84914798e-01],
       [-2.95520576e+01, -4.91265357e-01, -2.81045555e+00],
       [-2.91643136e+01, -9.60472560e-01, -2.24023812e+00],
       [-2.83699980e+01, -2.73456465e+00,  2.84998140e-01],
       [-2.68476832e+01, -1.62314979e+00, -4.42182155e-01],
       [-2.69729031e+01, -1.47990804e+00, -4.56395859e-01],
       [-2.68211629e+01,  4.82089105e-01, -2.45622683e+00],
       [-2.71361057e+01,  2.33862519e-01, -1.06345158e+00],
       [-2.51515871e+01, -4.73184572e-01, -2.64638408e-01],
       [-2.75883639e+01, -1.45451652e+00, -6.91875776e-01],
       [-2.73257300e+01, -2.10573112e+00,  5.48230082e-01],
       [-2.65132351e+01, -1.37206595e+00,  1.74734407e-01],
       [-2.68394164e+01, -2.20285195e+00,  3.12091125e-01],
       [-2.44812063e+01, -6.81342635e-02, -7.32681554e-01],
       [-2.59213668e+01, -2.12068067e+00,  4.90160107e-01],
       [-2.75899762e+01, -1.06766795e+00, -1.51972734e+00],
       [-2.75107835e+01, -1.43703300e+00, -5.08391819e-01],
       [-2.71731217e+01, -1.43426767e+00, -5.68732758e-01],
       [-2.67985525e+01, -2.15860358e+00, -1.74835808e-01],
       [-2.69461260e+01, -1.77759144e+00, -1.74610119e-01],
       [-2.58038412e+01, -7.66112633e-01, -5.87015821e-01],
       [-2.83970636e+01, -1.66781224e+00, -4.73052018e-01],
       [-2.65361064e+01, -2.53948493e+00,  5.87282452e-01],
       [-2.64035953e+01, -2.24249097e+00,  1.57946011e-01],
       [-2.76052723e+01, -1.46221391e+00, -1.01490108e+00],
       [-2.70557874e+01, -2.57327665e+00,  6.03087562e-02],
       [-2.76539046e+01,  8.71291598e-01, -2.91555955e+00],
       [-2.93263544e+01, -1.20974668e+00, -1.96635758e+00],
       [-2.72302377e+01, -2.23872461e+00,  2.36055417e-01],
       [-2.69687510e+01, -9.75729719e-01, -1.54624744e+00],
       [-2.73238741e+01, -1.72796256e+00, -4.37593635e-01],
       [-2.69879579e+01, -1.31043846e+00, -8.60814997e-01],
       [-2.82962952e+01, -2.00487373e+00, -5.77762064e-01],
       [-2.86263025e+01, -9.57526801e-02, -2.67997515e+00],
       [-2.63446157e+01, -9.84209065e-01, -5.62196476e-01],
       [-2.43858830e+01,  1.36066216e-01, -6.28198461e-01],
       [-2.63880067e+01, -1.68319310e+00, -3.64772977e-01],
       [-2.38790791e+01, -4.19181666e-01,  2.27049250e-01],
       [-2.68827624e+01, -8.98909557e-01, -1.24077545e+00],
       [-2.70277485e+01, -5.25758041e-01, -1.11361087e+00],
       [-2.59588659e+01, -1.95670471e+00,  3.64217621e-01],
       [-2.83041753e+01, -2.94476899e+00,  1.18153266e-01],
       [-2.56851820e+01,  3.71310417e-01, -1.81252337e+00],
       [-2.62597840e+01, -1.71629210e+00, -1.95284226e-01],
       [-2.69731395e+01, -1.89806078e+00, -4.09403167e-01],
       [-2.36118115e+01,  5.72172016e-01, -5.18327428e-01],
       [-2.44129799e+01,  1.66244500e-01, -5.21649927e-01],
       [-2.38025547e+01,  8.77565068e-01, -9.15130758e-01],
       [-2.33335056e+01, -6.15000535e-02,  7.94383475e-02],
       [-2.55717697e+01, -7.91828177e-01, -2.99933278e-01],
       [-2.37567905e+01, -8.08456943e-01,  8.23909666e-01],
       [-2.37171443e+01, -7.88236119e-01,  6.70140883e-01],
       [-2.44038216e+01, -2.11144138e-01, -1.94246548e-01],
       [-2.16116231e+01,  2.54631494e+00,  9.10561648e-02],
       [-2.19695224e+01,  3.68935679e+00, -1.18702542e+00],
       [-2.18536838e+01,  2.92610999e+00, -4.94231781e-01],
       [-2.05982210e+01,  2.95420497e+00,  1.32569261e-01],
       [-2.02317077e+01,  2.38142968e+00,  9.55961727e-01],
       [-1.98308646e+01,  3.88117886e+00,  1.11918133e-02],
       [-1.95488324e+01,  8.84591336e-01,  2.58337856e+00],
       [-2.07074392e+01,  2.02433350e+00,  7.03658737e-01],
       [-2.10294161e+01,  1.21632860e+00,  1.56600440e+00],
       [-1.93651570e+01,  3.55117991e+00,  6.41859961e-01],
       [-2.02439874e+01,  2.91487908e+00,  4.59046737e-01],
       [-2.06774526e+01,  4.12258197e+00, -8.38362448e-01],
       [-2.07774765e+01,  2.46154432e+00,  7.21962419e-01],
       [-1.94498012e+01,  1.79403060e+00,  1.93322329e+00],
       [-1.96934773e+01,  2.26839563e+00,  1.40463160e+00],
       [-1.97126210e+01,  3.61101404e+00,  2.32584616e-01],
       [-1.93876644e+01,  1.66503111e+00,  1.74320020e+00],
       [-2.07559050e+01,  2.60302763e+00,  7.81043111e-01],
       [-2.03506499e+01,  2.43987405e+00,  1.19538326e+00],
       [-2.00330989e+01,  3.23025112e+00,  4.95998530e-01],
       [-2.09536499e+01,  1.19033865e+00,  1.80965314e+00],
       [-2.03889379e+01,  2.18796515e+00,  1.07514757e+00],
       [-2.03954010e+01,  2.61312281e+00,  4.59470026e-01],
       [-2.08880862e+01,  2.05599226e+00,  7.74403852e-01],
       [-1.94406687e+01,  3.90412172e+00, -3.35222317e-01],
       [-2.00953962e+01,  6.43795550e-01,  2.44995871e+00],
       [-2.08752949e+01,  2.49083005e+00,  4.92043710e-01],
       [-2.05442680e+01,  1.70861691e+00,  1.51618350e+00],
       [-1.97110411e+01,  2.46868528e+00,  1.17716058e+00],
       [-1.94573956e+01,  1.89707327e+00,  1.73716397e+00],
       [-1.96539755e+01,  4.33924186e+00, -3.52783907e-01],
       [-1.99613916e+01,  3.99494526e+00, -6.63994162e-01],
       [-1.95022102e+01,  2.41333864e+00,  1.13876251e+00],
       [-1.97777432e+01,  3.28222350e+00,  2.18700146e-01],
       [-1.93734748e+01,  3.32380283e+00,  8.12271585e-01],
       [-1.89327428e+01,  2.86292994e+00,  8.52762489e-01],
       [-1.96401759e+01,  3.18005054e+00,  4.65299940e-01],
       [-1.90499654e+01,  2.93356916e+00,  1.07787157e+00],
       [-1.98203659e+01,  3.43139219e+00, -4.46943205e-02],
       [-2.03324061e+01,  1.96525498e-01,  2.80732226e+00],
       [-1.95571686e+01,  2.74197734e+00,  5.43477715e-01],
       [-2.07295996e+01,  2.46315045e+00,  3.04105347e-01],
       [-2.04905302e+01,  2.47134638e+00,  5.08976124e-01],
       [-1.99306747e+01,  2.90508234e+00,  3.84749038e-01],
       [-2.14492492e+01,  3.22530327e+00, -5.14479670e-01],
       [-2.00067896e+01,  2.22994832e+00,  1.37455585e+00],
       [-2.03889819e+01,  2.78008650e+00,  8.04854673e-01],
       [-1.91399507e+01,  2.47726653e+00,  1.35547958e+00],
       [-1.96508591e+01,  4.70997156e+00, -1.12540213e+00],
       [-1.86406838e+01,  3.06591763e+00,  7.40623624e-01],
       [-1.92367733e+01,  3.30457201e+00,  4.48896395e-01],
       [-1.94083961e+01,  2.16807014e+00,  1.34689542e+00],
       [-1.99302713e+01,  1.66328088e+00,  1.47415793e+00],
       [-1.92130476e+01,  3.04159076e+00,  9.73713780e-01],
       [-2.02757619e+01,  1.93360696e+00,  9.89249589e-01],
       [-2.09840281e+01,  2.22888242e+00,  2.01298658e-01],
       [-2.10751704e+01,  2.71079762e+00, -1.41625129e-01],
       [-2.16749875e+01,  1.97645189e+00,  4.17433748e-01],
       [-2.09199087e+01,  1.26038909e+00,  1.53566425e+00],
       [-2.07586595e+01,  8.04284496e-01,  1.92708993e+00],
       [-2.07165607e+01,  2.83887215e+00,  8.73640462e-04],
       [-2.06440307e+01,  4.96957902e-01,  2.33265645e+00],
       [-1.91827984e+01,  2.18972142e+00,  1.25140859e+00],
       [-2.11989989e+01,  4.87480159e+00, -2.14309110e+00],
       [-2.05881251e+01,  1.72684136e+00,  1.12203735e+00],
       [-2.02292932e+01,  1.53911425e+00,  1.34924878e+00],
       [-1.94177398e+01,  2.42132077e+00,  1.10546986e+00],
       [-2.17270026e+01,  4.60301802e+00, -2.16766380e+00],
       [-2.00569807e+01,  1.73663832e+00,  1.55382061e+00],
       [-2.06281849e+01,  2.99723896e+00, -8.40224665e-02]]), 8.19820111796609e-05]

كما ترون، أصبحت بياناتنا أصغر (من ثمانية الأبعاد إلى ثلاثية الأبعاد).

المصادر

2 يعتقد “تقنية رسم خرائط سامون (Sammon Mapping) وتنفيذها في بايثون

  1. Ramin

    واید حلو.
    احسنت.

    نوفمبر 10, 2021 - 12:11 م
  2. علی

    مفید جدا

    نوفمبر 10, 2021 - 11:52 م

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

السلة