سؤال

لدي صفين من الأرقام ...

1) 2 2 1 0 0 1

2) 1.5 1 0 .5 1 2

تتم مقارنة كل عمود ببعضها البعض. انخفاض القيم أفضل. على سبيل المثال العمود 1، قيمة الصف 2 (1.5) أكثر دقة من الصف 1 (2)

في المقارنة العادية، سأستغرقها إلى مجموع كل صف ومقارنة إلى الصف الآخر للعثور على أدنى مبلغ (الأكثر دقة). في هذه الحالة سيكون كلاهما متساويا.

أريد إنشاء طريقتين مقارنة آخرين عندما تصعيد القيم من العمود 1، يجب أن يتم وزنها أكثر (يجب أن يحتفظ أكثر (COL 2 بوزن أكثر من 1 أو 3 من 2 وما إلى ذلك)

العكس أيضا

في الأصل اعتقدت أنه سيكون من الأفضل تقسيم القيمة من موقعه ولكن هذا لا يعمل بشكل صحيح.

ما هي أفضل طريقة للقيام بذلك على التوالي؟

شكرا!

هل كانت مفيدة؟

المحلول

لذلك كل ما تفعله حقا هو حساب المنتج من مصفوفة الخاص بك مع ناقلات الترجيح. يرى هذه الصفحة لمزيد من المعلومات حول الضرب المصفوفة.

أي ناقل الخاص بك م

M = | 2.0 2.0 1.0 0.0 0.0 1.0 |
    | 1.5 1.0 0.0 0.5 1.0 2.0 |

وفي حالتك الأولى، فإن ناقلات الترجيح W هو:

w = (1, 1, 1, 1, 1, 1)

المنتج الذي يمنحك:

M x w = (6, 6)

التي هي الدرجات اثنين للصفتين.

لترجيح تصاعدي يستخدم شيئا مثل:

w = (1, 2, 3, 4, 5, 6)

الذي يمنحك:

M x w = (15, 22.5)

وللوزن تنازلي يمكنك استخدام إما:

w = (6, 5, 4, 3, 2, 1)

أو

w = (1, 1/2, 1/3, 1/4, 1/5, 1/6)

(ملاحظة يتم نقل ناقلات قابلية للقراءة).

نصائح أخرى

في الأصل، جميع القيم لها نفس الوزن، لذلك عواملك لقيم N كلها 1 / n، لذلك مجموع الخاص بك هو:

S = 1 * v_1 + 1 * v_2 + ... + 1 * v_n

حاولت تقسيم القيمة بموقفها سيكون:

S = 1/1 * v_1 + 1/2 * v_2 + ... + 1/n * v_n

الذي لا يزال نهجا صالحا، ولكنه يعكس عكس ما تريد (العمود 1 يحصل على معظم الوزن).

ما تريده هو شيء مثل هذا:

S = 1/n * v_1 + 1/n-1 * v_2 + ... + 1/1 * v_n

قد تفكر أيضا في البدء ب 1 / N + 1 ونهاية مع 1/2، لذا فإن القيمة الأخيرة ستكون أقل أهمية بعض الشيء.

لا أعرف إذا فهمت ما تريد القيام به، ولكن ربما هذا:

for (i=0, i<length, i++)
  difference += (a[i] - b[i]) * w[i];

سيكون W [] صفيفا مع الأوزان حسب العمود (على سبيل المثال: W = {1،2،3،4،5})، على الرغم من أن يمكن أن يكون أي قيمة / وظيفة أخرى.

لذلك في النهاية، إذا كان الفرق أعلى من 0، فإن [] أفضل، وإذا كان أقل من 0 هو أسوأ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top