Filter by دسته‌ها
آموزش هوش مصنوعی و انواع آن
آموزش‌های پایه‌ای هوش مصنوعی
اصول هوش مصنوعی
پایتون و ابزارهای یادگیری عمیق
کتابخانه‌ های یادگیری عمیق
یادگیری با نظارت
یادگیری بدون نظارت
یادگیری تقویتی
یادگیری عمیق
یادگیری نیمه نظارتی
آموزش‌های پیشرفته هوش مصنوعی
بینایی ماشین
پردازش زبان طبیعی
پردازش گفتار
چالش‌های عملیاتی
داده کاوی و بیگ دیتا
رایانش ابری و HPC
سیستم‌‌های امبدد
علوم شناختی
دیتاست
اخبار
تیتر یک
رسانه‌ها
آموزش پردازش زبان طبیعی
آموزش علوم داده
اینفوگرافیک
پادکست
ویدیو
رویدادها
دوره
کارگاه
وبینار
کاربردهای هوش مصنوعی
کسب‌و‌کار
تحلیل بازارهای هوش مصنوعی
کارآفرینی
هوش مصنوعی در ایران
هوش مصنوعی در جهان
وبینارها، کارگاره‌ها و دوره‌ها
 مرگ در جریان بازداشت: تحلیل داده‌ها و پرده برداشتن از خشونت‌ نیروهای پلیس

مرگ در جریان بازداشت: تحلیل داده‌ها و پرده برداشتن از خشونت‌ نیروهای پلیس

بسیاری از نیروهای پلیس که در کشتار افراد تحت بازداشت دست داشته‌اند، تبرئه می‌شوند و این روند طی سال‌های اخیر، سیر صعودی داشته است.

ماه ژوئن امسال، خبر کشته شدن پدر و پسری در جریان بازداشت و شکنجه آن‌ها از سوی نیروهای پلیس، سراسر هندوستان را در شوک فرو برد. داستان آزار و اذیت جنسی این دو و حمله وحشیانه نیروهای پلیس به آن‌ها نشان می‌دهد که شکنجه افراد در جریان بازداشت و مرگ افراد بازداشتی در هندوستان به موضوعی عادی تبدیل شده است.

نیروی پلیس بارها از این واقعیت سوءاستفاده کرده است ‌که بسیاری از شهروندان از حقوقی که به وسیله قانون اساسی به آن‌ها اعطا شده ناآگاه هستند.

در مقاله پیش ‌رو، با استفاده از داده‌هایی که بر روی سامانه آزاد اطلاعات دولتی هندوستان Open Government Data (OGD) Platform India قرار گرفته است، راجع به مرگ افراد در جریان بازداشت در هندوستان و مجازت یا عدم‌مجازات مجرمین توضیحاتی ارائه شده است.

OGD هندوستان، سامانه‌ای است که داده‌های باز دولت هندوستان بر روی آن قرار می‌گیرد.

کاربران با ورود به این سامانه می‌توانند به دیتا‌ست‌ها، اسناد، خدمات، ابزارها و درخواست‌هایی که از سوی وزیران، وزارتخانه‌ها و سازمان‌های دولت هندوستان منتشر شده، دسترسی داشته باشند.

داده‌هایی که بر روی این سامانه قرار می‌گیرد، کاملاً رایگان است و دسترسی به این داده‌ها برای عموم مردم آزاد است.

برای نگارش این مقاله از دیتاستی استفاده شده که شامل تمامی اطلاعات مربوط به مرگ افراد در جریان بازداشت، از سال 2001 تا سال 2012 است.

نکته: نوت‌بوک Jupyter که شامل تمامی کدها و نمودارهای به‌کاررفته در این مقاله است، در Github repository قرار دارد. برای دسترسی به آن بر روی این لینک کلیک کنید.

تحلیل داده‌ها

در مرحله اول باید تمامی کتابخانه‌های موردنیاز را بارگذاری کنید:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

در مرحله بعد، نحوه ذخیره‌سازی داده‌ها در دیتاست را بررسی می‌کنم.

df = pd.read_csv("CD.csv")
df

تحلیل داده‌ها

در هر ردیف نام ایالت،‌ ذکر شده و هر ستون شامل داده‌ها است و هر 4 ستون شامل داده‌های یک سال است.

اما در خلال کار متوجه می‌شوید که سه ردیف وجود دارد (شاخص‌های 28، 36، 37) که شامل داده‌های مربوط به ایالات نیستند.

تحلیل داده ها

 

هنگام رسم نمودارهای مربوط به داده‌ها به این موضوع توجه کنید.

این دیتاست شامل داده برای هر سال است و هیچگونه داده تجمیعی وجود ندارد. به منظور تحلیل داده‌ها، چهار ستون دیگر به این دیتاست اضافه می‌کنیم.

ستون اول نشان‌دهنده تعداد کل افرادی است که از سال 2001 تا 2012 در جریان بازداشت کشته شده‌اند.

#Total custodial deaths per statetotal_deaths_per_state = []
per_state = 0
        
for row in range(0, 38):
    per_state = 0
    for col in range(1, len(df.columns), 4):
        #print(df.iloc[row, col])
        per_state += df.iloc[row, col]
    total_deaths_per_state.append(per_state)
        
print(total_deaths_per_state)

فرایند تحلیل داده‌ها را از ستون ‘CUSTODIAL DEATHS UNDER CUSTODIAL DEATHS-2001’و  یک گام 4 تایی برمی داریم، به داده های سال بعد می رسیم و به همین ترتیب تا زمانی که به سال 2012 برسیم، در حالی که داده های هر سال را به لیستی اضافه می کنیم.

سپس این فهرست را به panda Series تبدیل می‌کنیم و آن را به‌عنوان یک ستون جدید به دیتاست اضافه می‌کنیم.

x = pd.Series(total_deaths_per_state)
df['TOTAL CUSTODIAL DEATHS'] = x.values
df.head()

مشابه قبل سه ستون دیگر، یعنی Total Cases Registered، Total Policemen Chargesheeted و Total Policemen Convicted را اضافه کردیم.

پس از اضافه کردن این ستون‌ها، آن را به‌عنوان یک دیتاست جدید، ذخیره کردیم.

df.to_csv("CD_Updated.csv", index = False)

مصورسازی داده‌ها بر روی دیتاست جدیدی که ایجاد کرده‌ایم و نام آن را “CD_Updated.csv” گذاشته‌ایم، انجام می‌شود.

final_df = pd.read_csv("CD_Updated.csv")
final_df.tail(10)

داده‌یابی

1- مرگ در جریان بازداشت، طرح کتبی شکایت، تشکیل پرونده علیه نیروی‌های پلیس، گناهکار شناختن نیروی پلیس

در این مرحله، ابتدا 4 ستون آخر و ردیف‌های پایانی را که شامل داده‌های مربوط به سراسر کشور است، انتخاب کردیم و از این طریق سلول‌های موردنیاز را برگزیدیم و سپس با استفاده از Matplotlib یک نمودار میله‌ای رسم کردیم.

x1_values = list(["CUSTODIAL DEATHS", "CASES REGISTERED", "COPS CHARGESHEETED", "COPS CONVICTED"])
y1_values = list(df.iloc[37, -4:]) #last row and last 4 columns# Figure Size 
fig, ax = plt.subplots(figsize =(16, 9)) 
  
# Horizontal Bar Plot 
ax.barh(x1_values, y1_values, color = ["#cccc00", "#6666ff", "#ff9933", "#ff6699"]) 
  
# Remove axes splines 
for s in ['top', 'bottom', 'left', 'right']: 
    ax.spines[s].set_visible(False) 
  
# Remove x, y Ticks 
ax.xaxis.set_ticks_position('none') 
ax.yaxis.set_ticks_position('none') 
  
# Add padding between axes and labels 
ax.xaxis.set_tick_params(pad = 5) 
ax.yaxis.set_tick_params(pad = 10) 
  
# Add x, y gridlines 
ax.grid(b = True, color ='grey', 
        linestyle ='-.', linewidth = 0.5, 
        alpha = 0.2) 
  
# Show top values  
ax.invert_yaxis() 
  
# Add annotation to bars 
for i in ax.patches: 
    plt.text(i.get_width()+0.2, i.get_y()+0.5,  
             str(round((i.get_width()), 2)), 
             fontsize = 10, fontweight ='bold', 
             color ='grey')# Add title 
ax.set_title('Statistics Regarding Custodial Deaths in India 2001-12', 
             loc ='left', ) 
  
# Add Text watermark 
fig.text(0.9, 0.15, 'By Sthitaprajna Mishra', fontsize = 12, 
         color ='grey', ha ='right', va ='bottom', 
         alpha = 0.7) 
  
# Show Plot 
plt.show()

داده یابی

تفاوت در ارقام در نمودار فوق، بسیار تکان‌دهنده است.

در طول 12 سال، 1157 نفر در جریان بازداشت به دست پلیس کشته شدند که از این میان، فقط 26 پلیس گناهکار شناخته شدند.

2- مرگ افراد در جریان بازداشت در تمامی ایالت‌ها

برای رسم این نمودار از مقادیر y  و مقادیر x استفاده کردیم.

x2_values = list(final_df['STATE/UT'].values)
y2_values = list(final_df['TOTAL CUSTODIAL DEATHS'].values)

فهرستی که شامل مقادیر x است، شامل سه ردیف دیگر است که شامل مجموعه‌داده‌های مربوط به ایالات، قلمروهای اتحادیه و سراسر کشور هستند. اگر به خاطر داشته باشید، زمانی‌که داده‌ها را بررسی می‌کردیم، متوجه این سه ردیف شدیم.

اکنون، این سه ردیف را از مقادیر x حذف می‌کنم.

x2_values.remove('TOTAL (ALL-INDIA)')
x2_values.remove('TOTAL (UTs)')
x2_values.remove('TOTAL (STATES)')

علاوه بر این، لازم است مقادیر y مربوط به آن‌ها را نیز از تمامی ردیف‌ها حذف کنیم. برای انجام این کار، بار دیگر به سراغ دیتاست خودم می‌‍رویم و شاخص‌های این ردیف‌ها را یادداشت می‌کنیم و آن‌ها را از مقادیر y حذف می‌کنیم.

y2_values.remove(y2_values[37])
y2_values.remove(y2_values[36])
y2_values.remove(y2_values[28])

پس از آنکه مقادیر مناسب را برای محورها به دست آوردیم، نمودار را رسم می‌کنیم.

# Figure Size 
fig, ax = plt.subplots(figsize =(16, 9)) 
  
# Horizontal Bar Plot 
ax.barh(x2_values, y2_values, color = ["#cccc00", "#6666ff", "#ff9933", "#ff6699"]) 
  
# Remove axes splines 
for s in ['top', 'bottom', 'left', 'right']: 
    ax.spines[s].set_visible(False) 
  
# Remove x, y Ticks 
ax.xaxis.set_ticks_position('none') 
ax.yaxis.set_ticks_position('none') 
  
# Add padding between axes and labels 
ax.xaxis.set_tick_params(pad = 5) 
ax.yaxis.set_tick_params(pad = 10) 
  
# Add x, y gridlines 
ax.grid(b = True, color ='grey', 
        linestyle ='-.', linewidth = 0.5, 
        alpha = 0.2) 
  
# Show top values  
ax.invert_yaxis() 
  
# Add annotation to bars 
for i in ax.patches: 
    plt.text(i.get_width()+0.2, i.get_y()+0.5,  
             str(round((i.get_width()), 2)), 
             fontsize = 10, fontweight ='bold', 
             color ='grey')# Add title 
ax.set_title('Custodial Deaths across States in India 2001-12', 
             loc ='left', ) 
  
# Add Text watermark 
fig.text(0.9, 0.15, 'By Sthitaprajna Mishra', fontsize = 12, 
         color ='grey', ha ='right', va ='bottom', 
         alpha = 0.7) 
  
# Show Plot 
plt.show()

داده یابی

نمودار فوق نشان‌دهنده تعداد افرادی است که در جریان بازداشت در سراسر کشور هندوستان کشته شده‌اند. با نگاهی به این نمودار متوجه می‌شویم که تقریباً در تمامی ایالت‌ها دو نفر در جریان بازداشت کشته شده‌اند.

سه ایالاتی که بیشترین تعداد افراد کشته‌شده در جریان بازداشت را به خود اختصاص می‌دهند، عبارت‌اند از: مهاراشترا،  آندرا پرداش و گجرات، که از این میان مهاراشترا 127 مورد فوتی را به خود اختصاص می‌دهد.

3- محکوم کردن نیروی پلیس در سراسر کشور

برای رسم این نمودار از مقادیر x و مقادیر y استفاده کردیم.

y3_values = list(final_df['TOTAL POLICEMEN CONVICTED'].values)
x3_values = list(final_df['STATE/UT'].values)

از آنجایی‌که تصمیم دارم نمودار مربوط به ایالات را ترسیم کنیم و نمی‌خواهیم داده‌های ملی (کل کشور) نشان داده شوند، همانند نمودار قبل، سه ردیف مذکور را حذف می‌کنیم و سپس نمودار را رسم می‎کنم.

x3_values.remove('TOTAL (ALL-INDIA)')
x3_values.remove('TOTAL (UTs)')
x3_values.remove('TOTAL (STATES)')#duplicate values present, hence use del instead of remove
del y3_values[37]
del y3_values[36]
del y3_values[28]# Figure Size 
fig, ax = plt.subplots(figsize =(16, 9)) 
  
# Horizontal Bar Plot 
ax.barh(x3_values, y3_values, color = ["#cccc00", "#6666ff", "#ff9933", "#ff6699"]) 
  
# Remove axes splines 
for s in ['top', 'bottom', 'left', 'right']: 
    ax.spines[s].set_visible(False) 
  
# Remove x, y Ticks 
ax.xaxis.set_ticks_position('none') 
ax.yaxis.set_ticks_position('none') 
  
# Add padding between axes and labels 
ax.xaxis.set_tick_params(pad = 5) 
ax.yaxis.set_tick_params(pad = 10) 
  
# Add x, y gridlines 
ax.grid(b = True, color ='grey', 
        linestyle ='-.', linewidth = 0.5, 
        alpha = 0.2) 
  
# Show top values  
ax.invert_yaxis() 
  
# Add annotation to bars 
for i in ax.patches: 
    plt.text(i.get_width()+0.2, i.get_y()+0.5,  
             str(round((i.get_width()), 2)), 
             fontsize = 10, fontweight ='bold', 
             color ='grey')# Add title 
ax.set_title('Cops Convicted across States in India 2001-12', 
             loc ='left', ) 
  
# Add Text watermark 
fig.text(0.9, 0.15, 'By Sthitaprajna Mishra', fontsize = 12, 
         color ='grey', ha ='right', va ='bottom', 
         alpha = 0.7) 
  
# Show Plot 
plt.show()

داده یابی

نمودار فوق نشان می‌دهد در اکثر ایالات، حتی یک پلیس هم به جرم کشته ‌شدن فرد تحت‌بازداشت، محکوم نشده است.

نکته جالب دیگر این است که در سه ایالتی که بیشترین تعداد افراد کشته‌شده در جریان بازداشت را به خود اختصاص داده‌اند، در طول 12 سال، هیچ پلیسی به جرم کشته شدن فرد تحت بازداشت، متهم شناخته نشده است.

4- اقداماتی که طی این سال‌ها صورت گرفته است

در این قسمت، تصمیم داریم یک نمودار چندخطی ترسیم کنیم و توزیع تعداد افراد کشته‌شده در حین بازداشت و  تعداد پلیس‌هایی را نشان دهیم که در طول این سال‌ها متهم شناخته شده‌اند. هدف از رسم این نمودار این است که نشان دهیم سالانه چه اقداماتی علیه پلیس‌هایی صورت گرفته است که در کشته شدن افراد در جریان بازداشت مشارکت داشته‌اند.

مقادیر x سال‌های 2001 تا 2012 هستند.

x4_values = [i for i in range(2001, 2013)]

نموداری که تصمیم داریم رسم کنیم، یک نمودار چندخطی است، به همین دلیل دو مقدار y متفاوت خواهیم داشت. مقدار y اول، توزیع تعداد افرادی است که در جریان بازداشت کشته شده‌اند.

y4_1_values = []
for i in range(1, 48, 4):
    y4_1_values.append(int(final_df.iloc[37, i]))

دومین مقدار y، توزیع پلیس‌هایی است که متهم شناخته شده‌اند.

y4_2_values = []
for i in range(4, 52, 4):
    y4_2_values.append(int(final_df.iloc[37, i]))
        
print(y4_2_values)

و حالا نمودار را رسم می‌کنیم.

# plotting the line 1 points 
plt.plot(x4_values, y4_1_values, label = "Deaths", color="#ff9900", linestyle='dashed', linewidth = 2, 
         marker='o', markerfacecolor='#ff3300', markersize=8)# plotting the line 2 points 
plt.plot(x4_values, y4_2_values, label = "Convicted", color= "#6666ff", linestyle='dashed', linewidth = 2, 
         marker='o', markerfacecolor='blue', markersize=8)# Add x, y gridlines 
plt.grid(b = True, color ='grey', 
        linestyle ='-.', linewidth = 0.5, 
        alpha = 0.2)plt.title('Custodial Deaths vs Cops Convicted 2001-12')
plt.legend()

داده یابی

تفاوت میان تعداد افرادی که در جریان بازداشت کشته‌ شده‌اند و تعداد پلیس‌هایی که متهم شناخته شده‌اند، به‌خوبی در نمودار فوق نشان داده شده است. از سال 2007 تا سال 2010، تعداد افرادی که در جریان بازداشت کشته شده‌اند، سیر نزولی داشته، اما از آن زمان به بعد، سیر صعودی در پیش گرفته و تعداد  افرادی که در جریان بازداشت کشته شده‌اند، افزایش داشته است.

از سوی دیگر، نموداری که برای تعداد پلیس‌هایی که به جرم کشته شدن افراد تحت‌بازداشت، متهم شناخته شده‌اند، به صورت یک خط صاف است.

5- دادرسی‌های قضایی

در قسمت قبل، تفاوت میان تعداد افرادی را که در جریان بازداشت کشته‌ شده‌اند و تعداد پلیس‌هایی که متهم شناخته شده‌اند، بررسی کردیم. در این قسمت، قصد داریم نحوه عملکرد سیستم قضایی را در این اتفاقات بررسی کنیم.

آیا شکایت‌های محدودی علیه پلیس صورت گرفته است؟ یا اینکه دادگاه‌ها شکایت‌هایی را که علیه نیروی پلیس مطرح شده، علنی نمی‌کنند؟ یا باید مقامات قضایی را مقصر دانست که نیروهای پلیس را محکوم نمی‌کنند؟

برای اینکه دید کلی‌تری از دیتاست داشته باشیم، یک نمودار خطی جامع‌تری ترسیم می‌کنیم.

مقادیر y  نشان‌دهنده تعداد کل پروندهای تشکیل‌شده و شکایت‌های مطرح‌شده علیه نیروی پلیس است که نمودار آن‌ها را با یکدیگر ترسیم می‌کنیم.

y5_1_values = [] #cases registered

for i in range(2, 48, 4):
    y5_1_values.append(int(final_df.iloc[37, i]))

y5_2_values = [] #cops chargesheeted

for i in range(3, 48, 4):
    y5_2_values.append(int(final_df.iloc[37, i]))

# plotting the line 'death' points 
plt.plot(x4_values, y4_1_values, label = "Deaths", color= "#cc3300",
linestyle='dashed', linewidth = 2, 
         marker='o', markerfacecolor='#802000', markersize=8)

# plotting the line 1 points 
plt.plot(x4_values, y5_1_values, label = "Cases Registered", 
color="#ff9900", linestyle='dashed', linewidth = 2, 
         marker='o', markerfacecolor='#ff3300', markersize=8)

# plotting the line 2 points 
plt.plot(x4_values, y5_2_values, label = "Chargesheeted", color= 
"#cccc00", linestyle='dashed', linewidth = 2, 
         marker='o', markerfacecolor='#808000', markersize=8)

# plotting the line 3 points 
plt.plot(x4_values, y4_2_values, label = "Convicted", color= 
"#6666ff", linestyle='dashed', linewidth = 2, 
         marker='o', markerfacecolor='blue', markersize=8)

# Add x, y gridlines 
plt.grid(b = True, color ='grey', 
        linestyle ='-.', linewidth = 0.5, 
        alpha = 0.2)

plt.title('Tracking Custodial Death Proceedings 2001-12')
plt.legend()

داده یابی

نمودار فوق نشان می‌دهد، در چه بخش‌هایی اقدامات کمی برای مقابله با این مشکل، صورت گرفته است.

از میان تمامی افرادی که در جریان بازداشت کشته شده‌اند، کمتر از 50 درصد از نیروی پلیس، شکایت کرده‌اند و تعداد کمی پرونده علیه نیروهای پلیس تشکیل شده است. از میان آن‌ها نیز تعداد کمی از نیروهای پلیس محکوم شده‌اند.

نتایج حاصل از تحلیل فوق نشان می‌دهد، زمانی‌ که صحبت از برخورد جدی و قاطعانه با نیروی پلیس به میان می‌آید، سیستم قضایی عملکرد ضعیفی دارد.

یکی از دلایلی که می‌توان برای آن برشمرد، این است که بسیاری از قربانیان این وقایع از ترس واکنش نیروی پلیس، از آن‌ها شکایت نمی‌کنند. به همین دلیل با وجود شکایت‌هایی که علیه نیروی پلیس مطرح می‌شود، اما فقط تعداد کمی از این شکایت‌ها علنی می‌شوند.

تا زمانی که شهروندان ترس خود را کنار نگذارند و شکایت‌ خود را علیه نیروی پلیس مطرح نکنند و سیستم قضایی، اقدامات قاطعانه‌ای انجام ندهد، نیروهای پلیسی به این رفتارهای خود ادامه خواهند داد.

داده‌هایی که در این مقاله از آن‌ها استفاده کردیم، نسبتاً قدیمی هستند؛ اما رفتار‌ خشونت‌بار نیروی پلیس با افراد تحت‌بازداشت کماکان ادامه دارد و طی سال‌های اخیر، سیر صعودی داشته است.

میانگین امتیاز / 5. تعداد ارا :

مطالب پیشنهادی مرتبط

اشتراک در
اطلاع از
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
لطفاً برای تکمیل این فرم، جاوا اسکریپت را در مرورگر خود فعال کنید.