روش ذخیره آرایه نام پای در فایل برای یادگیری ماشین — راهنمای کاربردی
برای توسعه مدلهای «یادگیری ماشین» (Machine Learning)، معمولا نیاز به استفاده از آرایههای «نامپای» (NumPy) است. آرایههای نامپای ساختارهای داده موثری برای کار با دادهها در «زبان برنامهنویسی پایتون» (Python Programming Language) هستند و مدلهای یادگیری ماشین همچون مواردی که در کتابخانه «سایکیتلِرن» (Scikit Learn) وجود دارد، و مدلهای «یادگیری عمیق» (Deep Learning) مانند مواردی که در کتابخانه «کِرَس» (Keras) وجود دارد، دادهها را در قالب آرایههای نامپای میپذیرند و پیشبینیهای خود را در قالب آرایههای نامپای انجام میدهند.
از این روز، متداول است که آرایههای نامپای در یک فایل ذخیره شوند. برای مثال، کاربران ممکن است دادههای خود را با تبدیلهایی مانند «مقیاس کردن» (Scaling) تبدیل کنند و نیاز به ذخیرهسازی آنها در یک فایل برای استفادههای آتی داشته باشند. همچنین، کاربر ممکن است از یک مدل برای انجام پیشبینی استفاده کند و نیاز به ذخیره پیشبینیها در یک فایل برای استفادههای آتی داشته باشد. در این مطلب، روش ذخیره آرایههای NumPy در یک فایل، مورد بررسی قرار خواهند گرفت. با مطالعه این راهنما، مخاطبان با مباحث زیر آشنا خواهند شد.
- روش ذخیرهسازی آرایههای نامپای در قالب فایل CSV
- روش ذخیرهسازی آرایههای نامپای در قالب فایل NPY
- چگونگی ذخیرهسازی آرایه در فرمت فایل فشرده NPZ
چشمانداز مطلب
این راهنما به سه بخش کلی تقسیم شده است که عبارتند از:
- ذخیرهسازی آرایه نامپای در فایل CSV. (اسکی)
- ذخیرهسازی آرایه نامپای در فایل NPY. (دودویی)
- ذخیرهسازی آرایه نامپای در فایل NPZ. (فشرده)
- ذخیره آرایه نامپای در فایل CSV. (اسکی)
متداولترین فرمت فایل برای ذخیرهسازی دادهها در فایلها، فرمت «متغیر جدا شده با ویرگول» (Comma-Separated Variable | CSV) است. معمولا دادههای آموزش و دادههای ورودی مدل، در قالب CSV ذخیره شدهاند. راحتتر است که دادهها، مثلا پیشبینیهای ارائه شده توسط مدل، در فایلهای CSV ذخیره شوند.میتوان آرایههای نامپای را با استفاده از تابع savetxt() در فایلهای CSV ذخیره کرد. این تابع یک نام فایل و آرایه را به عنوان آرگومان دریافت و آرایه را در قالب CSV ذخیره میکند. کاربر باید جدا کننده را تعیین کند. جداکننده کاراکتری است که متغیرها را درون فایل از یکدیگر جدا میکند. معمولا استفاده از ویرگول در این راستا، متداول است. این مورد را میتوان با استفاده از آرگومان «Delimiter» تعیین کرد.
مثالی از ذخیره یک آرایه NumPy در فایل CSV
مثال زیر نشان میدهد که چگونه میتوان یک آرایه نامپای را در فایل فرمت CSV ذخیره کرد.
# save numpy array as csv file
from numpy import asarray
from numpy import savetxt
# define data
data = asarray([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
# save to csv file
savetxt('data.csv', data, delimiter=',')
با اجرای قطعه کد بالا، یک آرایه نامپای تعریف و در فایل «data.csv» ذخیره میشود. آرایه دارای یک سطر مجرد از دادهها با ۱۰ ستون است. انتظار میرود که این دادهها در یک فایل CSV به عنوان یک سطر مجرد از دادهها ذخیره شوند. پس از اجرای مثال، میتوان محتوای فایل «data.csv» را بررسی کرد. آنچه مشاهده میشود، باید به صورت زیر باشد.
۰٫۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰e+00,1.000000000000000000e+00,2.000000000000000000e+00,3.000000000000000000e+00,4.000000000000000000e+00,5.000000000000000000e+00,6.000000000000000000e+00,7.000000000000000000e+00,8.000000000000000000e+00,9.000000000000000000e+00
میتوان مشاهده کرد که دادهها به درستی به عنوان یک سطر ذخیره شدهاند و اعداد «ممیز شناور» (Float) با دقت کامل ذخیره میشوند.
مثالی از بارگذاری آرایه NumPy از فایل CSV
میتوان بعدا این دادهها را به عنوان آرایه نامپای و با استفاده از تابعloadtext() بارگذاری و نام فایل و جداکننده ویرگول مشابهی برای آن تعیین کرد. مثال کامل در ادامه آمده است.
# load numpy array from csv file
from numpy import loadtxt
# load array
data = loadtxt('data.csv', delimiter=',')
# print the array
print(data)
با اجرای مثال بالا، دادهها از فایل CSV بارگذاری میشوند و محتوا چاپ میشود که با دادههای تک سطری و دارای ۱۰ ستون موجود که در مثال پیشین تعریف شد، مطابقت دارد.
[۰٫ ۱٫ ۲٫ ۳٫ ۴٫ ۵٫ ۶٫ ۷٫ ۸٫ ۹٫]
ذخیره آرایه نامپای در فایل NPY. (دودویی)
گاهی، دادههای زیادی در آرایههای نامپای وجود دارد و در عین حال، کاربر تمایل به حفظ کارایی دارد؛ در این راستا، تنها نیاز به استفاده از یک برنامه پایتون دیگر است. بنابراین، میتوان آرایههای نامپای را در یک قالب دودویی که هم برای ذخیرهسازی و هم بارگذاری مفید هستند، ذخیره کرد. این کار برای دادههای ورودی که آماده شدهاند، مانند دادههای تبدیل شده، متداول است. در این راستا، نیاز به استفاده از مبانی برای آزمودن طیفی از مدلهای یادگیری ماشین در آینده یا اجرای آزمایشهای زیاد است. فرمت فایل npy. برای این استفاده مفید است و به آن فایل فرمت نامپای گفته میشود. این مورد را میتوان با استفاده از تابع save() در نامپای به دست آورد و نام فایل و آرایهای که باید ذخیره کرد را تعیین کرد.
مثالی از ذخیرهسازی یک آرایه نامپای در فایل NPY
در مثال زیر، آرایههای دوبُعدی نامپای تعریف و در یک فایل npy. ذخیره میشوند.
# save numpy array as npy file
from numpy import asarray
from numpy import save
# define data
data = asarray([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
# save to npy file
save('data.npy', data)
پس از اجرای مثال، یک فایل جدید با نام «data.npy» در دایرکتوری مشاهده میشود. کاربر نمیتواند محتوای این فایل را به طور مستقیم و با ویرایشگر متن بررسی کند، زیرا در قالب دودویی است.
مثالی از بارگذاری آرایه نامپای با فایل NPY
بعدا، میتوان این فایل را با استفاده از تابع load() به صورت آرایه نامپای دانلود کرد. مثال کامل در ادامه آمده است.
# load numpy array from npy file
from numpy import load
# load array
data = load('data.npy')
# print the array
print(data)
با اجرای این مثال، فایل بارگذاری و محتوای آن چاپ میشود؛ این تایید میکند که هم دادهها به درستی بارگذاری شدهاند و هم اینکه با آنچه در قالب دوبُعدی مشابه مورد انتظار بوده، مطابقت دارد.
[[۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹]]
ذخیره آرایه نامپای در فایل NPZ. (فشرده)
گاهی، دادهها برای مدلسازی آماده میشوند و نیاز به استفاده مجدد از آنها در آزمایشهای گوناگون است، اما دادهها بزرگ هستند. این ممکن است آرایههای نامپای «پیشپردازش» (PreProcess) شدهای مانند بدنه یک متن (صحیح | Integer) یا مجموعهای از دادههای تصویر بازمقیاسدهی شده (پیکسل) باشند. در این شرایط، برای هر دو مطلوب است که دادهها در فایل ذخیره شوند؛ اما در قالب فشرده شده. این کار، این امکان را فراهم میکند که گیگابایتها داده به صدها مگ داده کاهش پیدا کنند و امکان انتقال آسان آنها به دیگر سرورهای «رایانش ابری» (Cloud Computing) برای اجرای الگوریتمهای طولانی فراهم میشود. فرمت فایل NPZ. برای این مورد مناسب است و از نسخه فشرده شده فرمت فایل نامپای محلی پشتیبان میکند. تابع نامپای savez_compressed() میپذیرد که چندین آرایه در یک فایل فشرده NPZ. ذخیره شوند.
مثالهایی از ذخیرهسازی یک آرایهنامپای در فایل NPZ
میتوان از این تابع برای ذخیرهسازی آرایه نامپای مجرد برای فایل فشرده شده استفاده کرد. مثال کامل در ادامه آمده است.
# save numpy array as npz file
from numpy import asarray
from numpy import savez_compressed
# define data
data = asarray([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
# save to npy file
savez_compressed('data.npz', data)
با اجرای مثال بالا، آرایه تعریف و در فرمت فایل فشرده نامپای به نام data.npz ذخیره شد. همچون فرمت npy.، نمیتوان محتوای فایل ذخیره شده را با یک ویرایشگر متن بررسی کرد، زیرا فرمت فایل دودویی است.
مثالی از بارگذاری یک آرایه نامپای با فایل NPZ
میتوان از این تابع برای ذخیرهسازی آرایه نامپای در یک فایل فشرده شده استفاده کرد. مثال کامل، در ادامه آمده است.
# save numpy array as npz file
from numpy import asarray
from numpy import savez_compressed
# define data
data = asarray([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
# save to npy file
savez_compressed('data.npz', data)
با اجرای مثال بالا، آرایه تعریف و در یک فایل فشرده شده با استفاده از قالب نامپای و با نام «data.npz» ذخیره میشود. همچون قالب «npy.» نمیتوان محتوای فایل ذخیره شده با یک ویرایشگر متن را بررسی کرد، زیرا قالب فایل دودویی است.
مثالی از بارگذاری یک آرایه NumPy از فایل NPZ
این فایل را میتوان بعدا با استفاده از تابع load() مشابهی از بخش قبل، بارگذاری کرد. در این شرایط، تابع savez_compressed() از ذخیرهسازی چندین آرایه در یک فایل تنها پشتیبانی میکند. بنابراین، تابع load() ممکن است چندین آرایه را بارگذاری کند. آرایههای بارگذاری شده از تابع load() در یک دیکشنری با نام arr_0 برای اولین آرایه، arr_1 برای دومین آرایه و به همین ترتیب ذخیره میشود. مثال کامل از بارگذاری آرایه یکتا در ادامه آمده است.
# load numpy array from npz file
from numpy import load
# load dict of arrays
dict_data = load('data.npz')
# extract the first array
data = dict_data['arr_0']
# print the array
print(data)
با اجرای قطعه کد بالا، فایل نامپای که حاوی یک دیکشنری از آرایهها است بارگذاری میشود، سپس، اولین آرایه ذخیره شده استخراج میشود (تنها یکی ذخیره شده است)؛ پس از آن، محتوا چاپ میشود که تایید میکند مقدار و شکل آرایه با آنچه در اولین جایگاه ذخیره شده، مطابقت دارد.
[[۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹]]
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی پایتون
- آموزش تکمیلی برنامهنویسی پایتون
- مجموعه آموزشهای دادهکاوی و یادگیری ماشین
- زبان برنامهنویسی پایتون (Python) — از صفر تا صد
- یادگیری علم داده (Data Science) با پایتون — از صفر تا صد
- آموزش پایتون (Python) — مجموعه مقالات جامع وبلاگ فرادرس
مجموعه: برنامه نویسی, یادگیری ماشینی برچسب ها: NumPy, NumPy Array, آرایه نام پای, ذخیره آرایه نام پای, فایل NPY, فایل NPZ





