👇 Lianxh Club Tweet Navigation |  www.lianxh.cn

صورة
صورة

Lianxianghui 2022 موضوع خاص عن القياس المكاني

صورة

المؤلف : Liang Shuzhen (جامعة Huaqiao)
البريد الإلكتروني : [email protected]

ملاحظة المحرر : تم تجميع هذه المقالة بشكل أساسي من "تشابه Jaccard ومسافة Jaccard في Python" ، شكرًا لك!

تذكير: لا يتم تفعيل الرابط الموجود في النص في WeChat. الرجاء النقر فوق "قراءة النص الأصلي" في الجزء السفلي . أو اضغط مطولاً / امسح رمز الاستجابة السريعة التالي مباشرةً للانتقال مباشرةً إلى النص الأصلي:

صورة


جدول المحتويات

  • 1 المقدمة

  • 2. تعريف تشابه Jaccard

  • 3. حساب تشابه Jaccard

  • 4. تعريف مسافة الجاكارد

  • 5. حساب مسافة الجاكارد

  • 6. التشابه والمسافة بين المتغيرات الثنائية غير المتماثلة

  • 7. بايثون تحسب تشابه Jaccard

  • 8. بيثون حساب مسافة الجاكارد

  • 9. تحسب بايثون المتغيرات الثنائية غير المتماثلة

  • 10. بايثون تحسب تشابه Jaccard الصينية

  • 11. التغريدات ذات الصلة


1 المقدمة

يستخدم تشابه Jaccard على نطاق واسع في حساب التشابه بين البيانات ، مثل تشابه المجموعة وتشابه النص وما إلى ذلك. يحتاج مثيل Python في هذه المقالة إلى استخدام ثلاث وحدات scipy، و. أوامر التثبيت المحددة هي كما يلي:sklearnnumpy

pip install scipy
pip install sklearn
pip install numpy

2. تعريف تشابه Jaccard

تشابه Jaccard (المعروف أيضًا باسم معامل تشابه Jaccard ، أو مؤشر Jaccard) هو إحصاء يستخدم لحساب التشابه بين مجموعتين ، ويمكن توسيعه ليشمل حساب تشابه النص. في Python ، يستخدم تشابه Jaccard بشكل أساسي لحساب التشابه بين مجموعتين أو المتغيرات الثنائية غير المتماثلة. رياضيا ، يمكن التعبير عن تشابه Jaccard كنسبة التقاطع والاتحاد. خذ المجموعة أ واضبط ب كمثال:

صورة

صيغة حساب تشابه Jaccard هي:

جزء البسط من الصيغة هو تقاطع المجموعتين ، كما هو موضح في الجزء الأصفر من الشكل التالي:

صورة

الجزء المقام في الصيغة هو اتحاد المجموعتين ، كما هو موضح في الجزء الأصفر من الشكل التالي:

صورة

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

  • إذا كانت المجموعتان متساويتين ، مثل و ، فإن تشابه Jaccard هو 1 ؛
  • إذا كان عنصرا المجموعة مختلفين تمامًا ، مثل و ، فإن تشابه Jaccard هو 0 ؛
  • يكون تشابه Jaccard بين 0 و 1 إذا كانت المجموعتان تحتويان على بعض العناصر نفسها ، على سبيل المثال و .

3. حساب تشابه Jaccard

ضع في اعتبارك المجموعتين التاليتين: و ، والتي يمكن تمثيلها في الرسم البياني على النحو التالي:

صورة

الخطوة 1: ابحث عن تقاطع المجموعتين. في هذا المثال ، .

صورة

الخطوة 2 : ابحث عن اتحاد المجموعتين. في هذا المثال ، .

صورة

الخطوة 3 : احسب النسبة.

4. تعريف مسافة الجاكارد

على عكس تشابه Jaccard ، تقيس مسافة Jaccard مدى اختلاف مجموعتين. رياضيا ، يمكن التعبير عنها كنسبة من المكمل لاتحاد التقاطع. خذ أيضًا المجموعة A والمجموعة B كمثال:

صورة

صيغة مسافة Jaccard هي:

يمكن أيضًا التعبير عن بسط مسافة Jaccard على النحو التالي:

يمكن فهمه بشكل حدسي على أنه الفرق بين المجموعتين ، كما هو موضح في الجزء الأصفر من الشكل التالي:

صورة

مقام مسافة Jaccard هو نفسه تشابه Jaccard ، وهو اتحاد المجموعتين.

صورة

رياضياً ، يمكن فهم مسافة Jaccard على أنها نسبة عدد عناصر الفرق المحددة إلى عدد عناصر الاتحاد. خاصة:

  • إذا كانت المجموعتان متساويتين ، مثل و ، فإن مسافة Jaccard هي 0 ؛
  • إذا كان عنصرا مجموعة مختلفين تمامًا ، مثل و ، فإن مسافة Jaccard هي 1 ؛
  • إذا كانت مجموعتان تحتويان على عناصر متطابقة جزئيًا ، مثل و ، فإن مسافة Jaccard تكون بين 0 و 1.

5. حساب مسافة الجاكارد

ضع في اعتبارك المجموعتين التاليتين: و ، والتي يمكن تمثيلها في الرسم البياني على النحو التالي:

صورة

الخطوة 1: ابحث عن مكمل تقاطع المجموعتين.

صورة

الخطوة 2 : ابحث عن اتحاد المجموعتين. في هذا المثال ، .

صورة

الخطوة 3 : احسب النسبة.

6. التشابه والمسافة بين المتغيرات الثنائية غير المتماثلة

سيناقش هذا القسم التطبيق المحدد لتشابه Jaccard ومسافة Jaccard للمتغيرات الثنائية غير المتماثلة.

المتغير الثنائي ، كما يوحي الاسم ، يحتوي على فئتين أو حالتين فقط. عندما تكون القيمة 0 ، فهذا يعني أن الحالة لا تظهر ؛ عندما تكون القيمة 1 ، فهذا يعني أن الحالة تظهر. على سبيل المثال ، يمثل المدخن كائنًا مريضًا ، ويعني 1 أن المريض يدخن ، ويعني 0 أن المريض لا يدخن. إذا كان متغيرًا ثنائيًا متماثلًا ، فإن سمتين لهما نفس الوزن ، أي الحالات المختلفة يتم ترميزها بـ 0 أو 1 وليس لها أي تفضيل (على سبيل المثال ، يتم ترميز 0 و 1 لمتغير الجنس).

نتيجتا المتغيرات الثنائية غير المتماثلة لها أهمية مختلفة. على سبيل المثال ، يتم تقسيم نتائج اختبار الحمض النووي إلى إيجابية وسلبية ، ويتم ترميز النتائج الإيجابية بالرقم 1 (الاحتمال أقل ، والنتيجة أكثر أهمية) ، والنتائج السلبية يتم ترميزها بالرقم 0. بالنظر إلى كائنين متغيرين ثنائيين غير متماثلين ، فإن الحالة التي يأخذ فيها كلا الكائنين 1 هي أكثر أهمية وذات مغزى من الحالة التي يأخذ فيها كلا الكائنين 0.

بافتراض وجود متجهين من الأبعاد n A و B ، فإن صيغة حساب تشابه Jaccard هي:

صيغة حساب مسافة Jaccard هي:

في،

  • يمثل عدد اثنين من المتجهات التي تكون المكونات المقابلة لها كلاهما 1 ؛
  • يمثل عدد المكونات المقابلة للمتجهين 0 و 1 ؛
  • يمثل عدد المكونات المقابلة للمتجهين 1 و 0 ؛
  • يمثل عدد متجهين يكون كلا المكونين المتناظرين فيهما 0.

و .

نحن نفهمها من خلال حالة بسيطة. على سبيل المثال ، يبيع المتجر 6 أنواع من السلع (التفاح ، والطماطم ، والبيض ، والحليب ، والقهوة ، والسكر) ، ويوجد سجلا شراء للعملاء:

  • الزبون "أ" يشتري: التفاح والحليب والقهوة
  • يشتري العميل "ب": البيض والحليب والقهوة

من المعلومات الواردة أعلاه ، يمكن إنشاء المصفوفة التالية:

تفاحة طماطم بيض لبن قهوة سكر
أ 1 0 0 1 1 1
ب 0 0 1 1 1 0

لكل سلعة ، قرار الشراء هو متغير ثنائي ، 1 للشراء و 0 لعدم الشراء. بعد ذلك ، نحسب تشابه Jaccard ومسافة Jaccard في خطوتين:

الخطوة 1: أوجد قيمة M.

كمية يبين
(م_ {11}) 2 اشترى كل من A و B الحليب والقهوة
(M_ {01}) 1 اشترى ب البيض لم يشتروا البيض
(م_ {10}) 2 اشترى A التفاح والسكر ، لكن B لم يفعل
(M_ {00}) 1 لم يشترِ أي من "أ" ولا "ب" الطماطم

وهو نفس عدد المنتجات ويتم التحقق منه .

الخطوة 2 : استبدل الصيغة ، ثم

  • تشابه الجاكارد:

  • مسافة الجاكارد:

7. بايثون تحسب تشابه Jaccard

حدد مجموعتين في بايثون:

A = {12357}
B = {12489}

تحسب وظيفة البناء تشابه Jaccard ، وتمرير المجموعة A وتعيين B كمعلمات للوظيفة:

def jaccard_similarity(A, B):
    # 求集合 A 和集合 B 的交集
    nominator = A.intersection(B)
    # 求集合 A 和集合 B 的并集
    denominator = A.union(B)
    # 计算比率
    similarity = len(nominator)/len(denominator)
    return similarity
similarity = jaccard_similarity(A, B)
print(similarity)

تكون النتيجة 0.25 ، وهي نفس النتيجة المحسوبة يدويًا.

8. بيثون حساب مسافة الجاكارد

احسب مسافة Jaccard باستخدام نفس البيانات:

def jaccard_distance(A, B):
    #Find symmetric difference of two sets
    nominator = A.symmetric_difference(B)
    #Find union of two sets
    denominator = A.union(B)
    #Take the ratio of sizes
    distance = len(nominator)/len(denominator)
    return distance
distance = jaccard_distance(A, B)
print(distance)

تكون النتيجة 0.75 ، وهي نفس النتيجة المحسوبة يدويًا.

9. تحسب بايثون المتغيرات الثنائية غير المتماثلة

# 导入模块
import numpy as np
from scipy.spatial.distance import jaccard
from sklearn.metrics import jaccard_score

قم بإنشاء متجهين من المصفوفة:

تفاحة طماطم بيض لبن قهوة سكر
أ 1 0 0 1 1 1
ب 0 0 1 1 1 0
A = np.array([1,0,0,1,1,1])
B = np.array([0,0,1,1,1,0])
similarity = jaccard_score(A, B)
distance = jaccard(A, B)
print(f'Jaccard similarity is equal to: {similarity}')
print(f'Jaccard distance is equal to: {distance}')

النتيجة التي تم الحصول عليها هي:

Jaccard similarity is equal to: 0.4
Jaccard distance is equal to: 0.6

10. بايثون تحسب تشابه Jaccard الصينية

import pandas as pd
import jieba
import re

# 调用数据
data = pd.read_excel("https://file.lianxh.cn/data/m/mda.xlsx")
stopwords = pd.read_csv("https://file.lianxh.cn/data/c/cn_stopwords.txt", names=["stopwords"])

# 定义分词函数def cut_words(text):
def cut_words(text):
    words_list = []
    text = re.sub("[\W\d]""", text) # 替换符号和数字
    words = jieba.lcut(text)
    for word in words:
        if word not in list(stopwords["stopwords"]):
            words_list.append(word)
    return" ".join(words_list)

# 对文本分词
data["BusDA"] = data["BusDA"].apply(cut_words)
data

# 定义 jaccard 相似度函数
def jaccard_similarity(list1, list2):
    s1 = set(list1)
    s2 = set(list2)
    return float(len(s1.intersection(s2)) / len(s1.union(s2)))

jaccard_similarity(data["BusDA"][1], data["BusDA"][1])

11. التغريدات ذات الصلة

ملاحظة: أمر Stata الذي ينتج قائمة التغريدات التالية هو:
lianxh python, m
تثبيت أحدث إصدار من lianxhالأمر :
ssc install lianxh, replace

  • المواضيع: دورات المواضيع
    • Stata + Python: الأسهم الزاحفة لتسجل ارتفاعات في تدفق مباشر
  • الموضوع: مشاركة البيانات
    • Python + Stata: كيفية الحصول على بيانات الصين التاريخية للأرصاد الجوية
  • الموضوع: تحليل النص - الزاحف
    • Python: احسب تشابه جيب التمام من أجل مناقشة الإدارة والتحليل
    • Stata + Python: تزحف قائمة الأسهم بأعلى مستوياتها القياسية
    • بايثون: تعليقات أسهم ثروة الشرقية الزاحفة لتحليل المشاعر
    • القيمة المعرضة للمخاطر المعرضة للخطر: تطبيق Stata و Python
    • دعم آلات المتجهات: تطبيق Stata و Python
    • Python Crawler: تحليل النقاط الساخنة للبحث والموضوعات في البحث الاقتصادي
  • الموضوع: Python-R-Matlab
    • Stata + Python: أفكار جديدة لاستيراد مستندات Excel كبيرة - أخذ Guotai كمثال
    • تفاعل Stata-Python-10: تكوين وتطبيق ميزات PyStata الجديدة لـ Stata17
    • Python:多进程、多线程及其爬虫应用
    • Python:爬取动态网站
    • Python爬取静态网站:以历史天气为例
    • Python:绘制动态地图-pyecharts
    • Python爬虫1:小白系列之requests和json
    • Python爬虫2:小白系列之requests和lxml
    • Python爬虫:爬取华尔街日报的全部历史文章并翻译
    • Python爬虫:从SEC-EDGAR爬取股东治理数据-Shareholder-Activism
    • Python:爬取巨潮网公告
    • Python:爬取上市公司公告-Wind-CSMAR
    • Python: 6 小时爬完上交所和深交所的年报问询函
    • Python: 使用正则表达式从文本中定位并提取想要的内容
صورة

课程推荐:因果推断实用计量方法
主讲老师:邱嘉平教授
🍓 课程主页https://gitee.com/lianxh/YGqjp

صورة
صورة

New! Stata 搜索神器:lianxhsongbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉  使用:
. lianxh DID 倍分法
. songbl all

صورة

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。
صورة