وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

مقدمه ای کوتاه بر matplotlib برای تجسم داده ها

0 15
زمان لازم برای مطالعه: 4 دقیقه


معرفی

پایتون طیف گسترده ای از بسته های مفید برای یادگیری ماشین و تجزیه و تحلیل آماری مانند TensorFlow، NumPy، scikit-یادگیری، پانداها، و بیشتر. یکی از بسته هایی که برای اکثر پروژه های علم داده ضروری است این است matplotlib.

برای هر توزیع پایتون موجود است، می توان آن را نصب کرد روی پایتون 3 با pip. روش های دیگر نیز موجود است، بررسی کنید https://matplotlib.org/ برای جزئیات بیشتر

نصب و راه اندازی

اگر از سیستم عاملی با a terminal، دستور زیر matplotlib را با آن نصب می کند pip:

$ python3 -m pip install matplotlib

واردات و محیط زیست

در یک فایل پایتون، ما می خواهیم import را pyplot تابعی که به ما اجازه می دهد با یک محیط ترسیم مانند MATLAB ارتباط برقرار کنیم. ما همچنین import آ lines تابعی که به ما اجازه می دهد خطوطی را به نمودارها اضافه کنیم:

import matplotlib.pyplot as plt
import matplotlib.lines as mlines

اساساً، این محیط رسم به ما اجازه می دهد تا ارقام و ویژگی های آنها را به عنوان متغیر ذخیره کنیم. سپس می توان این نمودارها را با یک دستور ساده چاپ و مشاهده کرد. به عنوان مثال، می‌توانیم به قیمت سهام گوگل نگاهی بیندازیم: به طور خاص تاریخ، باز کن، بستن، جلد، و قیمت بسته تنظیم شده (تاریخ به صورت یک ذخیره می شود np.datetime64) برای 250 روز اخیر:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook

with cbook.get_sample_data('goog.npz') as datafile:
    price_data = np.load(datafile)('price_data').view(np.recarray)
price_data = price_data(-250:) 

سپس داده ها را به گونه ای تبدیل می کنیم که اغلب برای سری های زمانی و غیره انجام می شود. $d_i$بین هر مشاهده و مشاهده قبل از آن:

$$d_i = y_i - y_{i - 1} $$

delta1 = np.diff(price_data.adj_close) / price_data.adj_close(:-1)

همچنین می توانیم به تبدیل متغیرهای مختلف مانند جلد و قیمت بسته شدن:


volume = (15 * price_data.volume(:-2) / price_data.volume(0))**2
close = 0.003 * price_data.close(:-2) / 0.003 * price_data.open(:-2)

طرح یک طرح پراکنده

برای رسم واقعی این داده ها، می توانید از subplots() توابع از plt (matplotlib.pyplot). به طور پیش فرض این مساحت شکل و محورهای یک نمودار را ایجاد می کند.

در اینجا ما یک نمودار پراکنده از تفاوت بین روزهای متوالی خواهیم ساخت. برای توضیح بیشتر، ایکس تفاوت روز است من و روز قبل y تفاوت روز است i+1 و روز قبل (من):

fig, ax = plt.subplots()
ax.scatter(delta1(:-1), delta1(1:), c=close, s=volume, alpha=0.5)

ax.set_xlabel(r'$\Delta_i$', fontsize=15)
ax.set_ylabel(r'$\Delta_{i+1}$', fontsize=15)
ax.set_title('Volume and percent change')

ax.grid(True)
fig.tight_layout()

plt.show()

مقدمه ای کوتاه بر matplotlib برای تجسم داده ها

سپس برچسب هایی برای آن ایجاد می کنیم ایکس و y محورها، و همچنین عنوانی برای طرح. ما انتخاب می‌کنیم که این داده‌ها را با شبکه‌ها و یک چیدمان فشرده ترسیم کنیم.

plt.show() طرح را برای ما نمایش می دهد.

اضافه کردن یک خط

ما می توانیم با ارائه یک خط به این طرح اضافه کنیم ایکس و y مختصات به عنوان لیست به a Line2D نمونه، مثال:

import matplotlib.lines as mlines

fig, ax = plt.subplots()
line = mlines.Line2D((-.15,0.25), (-.07,0.09), color='red')
ax.add_line(line)


ax.scatter(delta1(:-1), delta1(1:), c=close, s=volume, alpha=0.5)

ax.set_xlabel(r'$\Delta_i$', fontsize=15)
ax.set_ylabel(r'$\Delta_{i+1}$', fontsize=15)
ax.set_title('Volume and percent change')

ax.grid(True)
fig.tight_layout()

plt.show()

مقدمه ای کوتاه بر matplotlib برای تجسم داده ها

ترسیم هیستوگرام ها

برای ترسیم یک هیستوگرام، مشابه را دنبال می کنیم process و استفاده کنید hist() تابع از pyplot. ما 10000 نقطه داده تصادفی تولید خواهیم کرد، ایکس، با میانگین 100 و انحراف معیار 15.

این hist تابع داده ها را می گیرد، ایکس، تعداد bin ها و آرگومان های دیگر مانند تراکم، که داده ها را به یک چگالی احتمال عادی می کند، یا آلفا، که شفافیت هیستوگرام را تنظیم می کند.

از کتابخانه هم استفاده خواهیم کرد mlab برای اضافه کردن یک خط نشان دهنده یک تابع چگالی نرمال با میانگین و انحراف استاندارد یکسان:

import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

mu, sigma = 100, 15
x = mu + sigma*np.random.randn(10000)


n, bins, patches = plt.hist(x, 30, density=1, facecolor='blue', alpha=0.75)


y = mlab.normpdf( bins, mu, sigma)
l = plt.plot(bins, y, 'r--', linewidth=4)

plt.xlabel('IQ')
plt.ylabel('Probability')
plt.title(r'$\mathrm{Histogram\ of\ IQ:}\ \mu=100,\ \sigma=15$')
plt.axis((40, 160, 0, 0.03))
plt.grid(True)

plt.show()

مقدمه ای کوتاه بر matplotlib برای تجسم داده ها

نمودار میله

در حالی که هیستوگرام ها به ما در چگالی بصری کمک می کنند، نمودار میله ای به ما کمک می کند تا تعداد داده ها را مشاهده کنیم. برای رسم نمودار میله ای با matplotlib، از عبارت استفاده می کنیم bar() تابع. این تعداد و برچسب های داده را به عنوان در نظر می گیرد ایکس و y، همراه با استدلال های دیگر.

به عنوان مثال، می‌توانیم به نمونه‌ای از تعداد برنامه‌نویسانی که از زبان‌های مختلف استفاده می‌کنند نگاه کنیم:

import numpy as np
import matplotlib.pyplot as plt
 
objects = ('Python', 'C++', 'Java', 'Perl', 'Scala', 'Lisp')
y_pos = np.arange(len(objects))
performance = (10,8,6,4,2,1)
 
plt.bar(y_pos, performance, align='center', alpha=0.5)
plt.xticks(y_pos, objects)
plt.ylabel('Usage')
plt.title('Programming language usage')
 
plt.show()

مقدمه ای کوتاه بر matplotlib برای تجسم داده ها

ترسیم تصاویر

تجزیه و تحلیل تصاویر در پایتون بسیار رایج است. جای تعجب نیست که ما می توانیم استفاده کنیم matplotlib برای مشاهده تصاویر ما استفاده می کنیم cv2 کتابخانه برای خواندن در تصاویر

این read_image() خلاصه عملکرد در زیر آمده است:

  • فایل تصویری را می خواند
  • کانال های رنگی را تقسیم می کند
  • آنها را به RGB تغییر می دهد
  • اندازه تصویر را تغییر می دهد
  • ماتریسی از مقادیر RGB را برمی گرداند

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

import matplotlib.pyplot as plt
import numpy as np
import os, cv2

cwd = os.getcwd()
TRAIN_DIR = cwd + '/data/train/'

ROWS = 256
COLS = 256
CHANNELS = 3

train_images = (TRAIN_DIR+i for i in os.listdir(TRAIN_DIR)) 
train_dogs =   (TRAIN_DIR+i for i in os.listdir(TRAIN_DIR) if 'dog' in i)
train_cats =   (TRAIN_DIR+i for i in os.listdir(TRAIN_DIR) if 'cat' in i)

def read_image(file_path):
    img = cv2.imread(file_path, cv2.IMREAD_COLOR) 
    b,g,r = cv2.split(img)
    img2 = cv2.merge((r,g,b))
    return cv2.resize(img2, (ROWS, COLS), interpolation=cv2.INTER_CUBIC)

for a in range(0,5):
    cat = read_image(train_cats(a))
    dog = read_image(train_dogs(a))
    pair = np.concatenate((cat, dog), axis=1)
    plt.figure(figsize=(10,5))
    plt.imshow(pair)
    plt.show()

مقدمه ای کوتاه بر matplotlib برای تجسم داده ها
مقدمه ای کوتاه بر matplotlib برای تجسم داده ها
مقدمه ای کوتاه بر matplotlib برای تجسم داده ها
مقدمه ای کوتاه بر matplotlib برای تجسم داده ها
مقدمه ای کوتاه بر matplotlib برای تجسم داده ها

نتیجه

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

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-26 20:46:05

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید