في الآونة الأخيرة ، أقرأ "برمجة ذكية جماعية" . بالمقارنة مع كتب التعلم الآلي الأخرى ، يحتوي هذا الكتاب على العديد من الحالات ، والتي تكون أقرب إلى الواقع ، كما أنها مناسبة جدًا لنا ، المبتدئين على استعداد لتعلم التعلم.
أعتقد أن عيب هذا الكتاب هو أنه لا يفسر صيغة الخوارزمية ، ولكنها تنفذها مباشرةً مع التعليمات البرمجية ، لذلك يسبب إزعاجًا لفهم الخوارزمية بالتفصيل ، لذلك أريد أن أكتب بعض المقالات لشرحها بالتفصيل. فيما يلي المقال الأول ، الذي يشرح معاملات ارتباط بيرسون ويستخدم لغة جافا التي أعرفها أكثر.
صيغة بيرسون الرياضية هي كما يلي ، من ويكيبيديا.
عندما يكون E توقعًا رياضيًا ، يمثل COV التباين ، و /Sigma_x و /sigma_y من الانحرافات المعيارية.
بعد التبسيط ، سوف تحصل على:
لا تزال خوارزمية حساب تشابه بيرسون بسيطة للغاية وليس من الصعب تنفيذها. مطلوب فقط مجموع المتغيرات X و Y و Product XY ومربع X ومربع Y. مجموعة اختبار البيانات المستخدمة من قبل الكود الخاص بي تأتي من كتاب برمجة الذكاء الجماعي للكتاب . الرمز كما يلي:
Package Pearlsoncorrelationscore ؛ استيراد java.util.arraylist ؛ استيراد java.util.hashmap ؛ استيراد java.util.list ؛ استيراد java.util.map ؛ استيراد java.util.map كتاب "البرمجة الذكية الجماعية"*/الفئة العامة pearsoncorrelationscore {خريطة خاصة <سلسلة ، خريطة <سلسلة ، مزدوجة >> dataSet = null ؛ public pearsoncorrelationscore () {initDatAset () ؛ Lisa Rose DataSet Map <String ، double> () ؛ Rosemap.put ("Lady in the Water" ، 2.5) ؛ Rosemap.put ("Snakes on A Plane" ، 3.5) ؛ Rosemap.put ("Just My Luck" ، 3.0) ؛ Rosemap.put ("Superman Returns" ، 3.5) 3.0) ؛ dataset.put ("Lisa Rose" ، Rosemap) ؛ // تهيئة MATTHEWS MAP MAP <String ، double> Jackmap = new hashmap <string ، double> () ؛ Jackmap.put ("superman" ، 5.0) ؛ Me and Dupree "، 3.5) ؛ Jackmap.put (" The Night Beasher "، 3.0) ؛ DataSet.put (" Jack Matthews "، Jackmap) ؛ // تهيئة مجموعة بيانات جاك ماثيوز <string ، double> genemap = new hashmap <string ، double> ؛ 3.5) ؛ genemap.put ("فقط حظي" ، 1.5) ؛ genemap.put ("Superman Returns" ، 5.0) ؛ genemap.put ("أنت ، أنا و dupree" ، 3.5) ؛ genemap.put ("The Night Beasher" ، 3.0) ؛ DataSet.put ("gene seymour" ، genemap) ؛ DataSet ؛}/*** param person1* name* param person2* name* @renturn pearson قيمة الارتباط*/public double sim_pearson (string person1 ، string person2) {// ابحث عن الأفلام التي علقها كلا الطرفين ، (intring ، p1 ، (p1: تتطلب خوارزمية Pearson) قائمة <String> قائمة = errayList dataset.get (person1) .entrySet ()) {if (dataSet.get (person2) .ContainsKey (p1.getKey ())) {list.add (p1.getKey ()) ؛}} double ؛ (اسم السلسلة: قائمة) {map <string ، double> p1map = dataset.get (person1) ؛ map <string ، double> p2map = dataset.get (person2) ؛ sumx += p1map.get (name) ؛ sumy += p2map.get (name) ؛ sumx_sq += math.pow (p1map.get (name) ، 2) math.pow (p2map.get (name) ، 2) ؛ sumxy += p1map.get (name) * p2map.get (name) ؛} numerator double = sumxy - sumx * sumy / n ؛ double alminator = math.sqrt ((sumx_sq - sumx * n) * (sumy_sq - sumy * sumy * (قاسم == 0) {return 0 ؛} إرجاع البسط / القاسم ؛} الفراغ الثابت العام (سلسلة [] args) {pearsoncorrelationscore pearlsoncorrelationscore = new PearsonCorrelationscore ()تعكس البيانات من كل اختبار تم تعيينه في طائرة إحداثيات ثنائية الأبعاد على النحو التالي:
القيمة التي تم الحصول عليها من قبل البرنامج أعلاه هي في الواقع ميل الخط. الفاصل الزمني لميله هو بين [-1،1] ، ويعكس حجم قيمته المطلقة التشابه بين الاثنين. أكبر المنحدر ، زاد التشابه. عندما يكون التشابه 1 ، يكون الخط المستقيم قطريًا.
لخص
ما سبق هو كل التفسير التفصيلي لتشابه جافا بناءً على معامل ارتباط بيرسون في هذه المقالة. آمل أن يكون ذلك مفيدًا للجميع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!