آموزش دیتاساینس و ماشین‌لرنینگ
1.91K subscribers
161 photos
9 videos
134 links
🔴 آموزش مباحث حوزه دیتا شامل علم داده، یادگیری ماشین و تحلیل داده (رضا شکرزاد)

🌀 کانال اخبار و منابع هوش مصنوعی:
@DSLanders

🌀 مشاوره و ارتباط مستقیم:
https://t.me/dslanders_admin

یوتیوب:
Youtube.com/@RezaShokrzad

دوره‌ها:
cafetadris.com/datascience
Download Telegram
کوییز شماره ۱۷۱: یکی از ویژگی‌های بارز شبکه‌های عصبی خودسازمان‌ده (Self-Organizing Maps - SOM) چیه که اونها رو از بقیه روش‌های خوشه‌بندی متمایز می‌کنه؟
Anonymous Quiz
25%
استفاده از الگوریتم گرادیان کاهشی برای به‌روزرسانی وزن‌ها
20%
استفاده از لایه‌های متعدد برای یادگیری ویژگی‌
15%
استفاده از تابع هزینه برای کاهش خطای پیش‌بینی
40%
استفاده از شبکه‌ای دو بعدی برای نگاشت داده‌ها
2👍2🤔1👌1😎1
🧑‍🎓 راهنمای جامع تحلیل داده و تحلیلگر داده

راهنمای جامع تحلیل داده و تحلیلگر داده برای ارائه اطلاعات کامل و کاربردی در زمینه تحلیل داده‌ها و نقش تحلیلگران داده طراحی شده.

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

🟢برای مطالعه بیشتر کلیک کنین:
👉📎 ctdrs.ir/ds0287

#Data_Analysis

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍2🔥1👏1
👨‍🎓 معیارهای خوشه‌بندی

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

🔵 شاخص دیویس-بولدین (Davies-Bouldin Index)

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

🔵 شاخص سیلوئت (Silhouette Coefficient)

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

🔵 شاخص چسبندگی (Cohesion) و جداسازی (Separation)

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

🔵 شاخص NMI یا Normalized Mutual Information

شاخص NMI معیاری برای مقایسه دو خوشه‌بندی مختلف (معمولاً خوشه‌بندی واقعی و خوشه‌بندی پیش‌بینی‌شده) استفاده می‌شه. این شاخص نشون‌دهنده میزان اطلاعات مشترک بین دو خوشه‌بندیه. مقدار این شاخص بین 0 و 1 قرار داره و هرچه به 1 نزدیک‌تر باشه، دو خوشه‌بندی بیشتر به هم شباهت دارن.

🔵 شاخص CH (Calinski-Harabasz Index)

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

🔵 شاخص Purity

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

🔵 شاخص دان (Dunn Index)

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

🔵 شاخص Rand Index

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

🔵 شاخص Adjusted Rand Index (ARI)

شاخص Adjusted Rand Index نسخه بهبود یافته شاخص Rand است که برای تصحیح اثر شانس طراحی شده. این شاخص برای ارزیابی کیفیت خوشه‌بندی با در نظر گرفتن خوشه‌های واقعی و پیش‌بینی شده استفاده می‌شه. مقدار ARI بین -1 و 1 قرار داره و مقدار نزدیک به 1 نشون‌دهنده کیفیت بهتر خوشه‌بندی است.

🔵 شاخص Fowlkes-Mallows

شاخص Fowlkes-Mallows برای ارزیابی کیفیت خوشه‌بندی بر اساس مقایسه خوشه‌بندی پیش‌بینی شده با خوشه‌بندی واقعی استفاده می‌شه. این شاخص ترکیبی از دقت و بازیابی (precision and recall) است و مقدار آن بین 0 و 1 قرار داره. هرچه مقدار این شاخص بیشتر باشه، کیفیت خوشه‌بندی بهتره.

🔵 شاخص Entropy

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

🔵 شاخص Homogeneity, Completeness و V-measure

این شاخص‌ها برای ارزیابی کیفیت خوشه‌بندی بر اساس یکپارچگی و کامل بودن خوشه‌ها استفاده می‌شن. شاخص Homogeneity نشون می‌ده که تمام اعضای یک خوشه به یک کلاس تعلق دارند، شاخص Completeness نشون می‌ده که تمام اعضای یک کلاس در یک خوشه قرار دارند، و V-measure میانگینی هماهنگ از این دو شاخص است.

#Clustering

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43👏2👌1
کوییز شماره ۱۷۲: کدوم یک از شاخص‌های زیر برای ارزیابی شباهت بین دو خوشه‌بندی با استفاده از مقیاس احتمال شرطی طراحی شده؟
Anonymous Quiz
9%
Davies-Bouldin Index
27%
Calinski-Harabasz Index (CH )
32%
Normalized Mutual Information (NMI)
32%
Silhouette Coefficient Index
4😎3🤔2👌1
📝 جمع‌بندی معیارهای ارزیابی خوشه‌بندی

🔵 در این جدول، داخلی و خارجی به نوع معیارهای ارزیابی خوشه‌بندی اشاره دارن.

🔵داخلی (Internal): معیارهای داخلی از اطلاعات درون داده‌ها و خوشه‌ها استفاده می‌کنن تا کیفیت خوشه‌بندی رو ارزیابی کنن. این معیارها تنها به داده‌های خودشان متکی هستن و نیازی به اطلاعات برچسب‌های خارجی ندارن.

🔵خارجی (External): معیارهای خارجی از اطلاعات اضافی مثل برچسب‌های حقیقی داده‌ها استفاده می‌کنن تا عملکرد خوشه‌بندی رو ارزیابی کنن. این معیارها برای ارزیابی نیاز به دونستن برچسب‌های درست یا یک مبنای خارجی دارن.

🔵 تنظیم شده برای شانس به این اشاره داره که آیا معیار ارزیابی به نحوی طراحی شده که اثرات شانس و تصادفی بودن رو کاهش بده یا نه. این تنظیم به منظور اطمینان از اینکه ارزیابی عملکرد خوشه‌بندی به طور دقیق‌تر انجام شه و نتایج تحت تأثیر تصادفی بودن نباشن.

🔵بله: این معیارها اثرات احتمالی شانس رو کاهش می‌دن و اطمینان حاصل می‌کنه که نتایج به دست اومده واقعی‌تر و معتبرترن.

🔵خیر: در این معیارها نتایج ممکنه تحت تأثیر شانس قرار بگیرن و به طور کامل تنظیم نشدن تا اثرات تصادفی رو حذف کنن.

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

🔵کروی: خوشه‌ها به صورت کروی در نظر گرفته می‌شن.

🔵اندازه مشابه: اندازه خوشه‌ها تقریباً مشابه هم دیگه است. معیارهایی که این فرض رو در نظر می‌گیرن، معمولاً در داده‌هایی با خوشه‌های نابرابر به خوبی عمل نمی‌کنن.

🔵هیچ: معیار هیچ فرض خاصی در مورد شکل یا اندازه خوشه‌ها نداره و می‌تونه برای انواع مختلف ساختارهای خوشه‌ها به کار بره.

#Clustering

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2🔥2👌1
پست‌های هفته‌ای که گذشت رو این‌جا پیدا کنین!

🔺 آموزشی

🔵تعریف خوشه‌بندی (Clustering)
📎 https://t.me/data_ml/609

🔵الگوریتم K-means
📎 https://t.me/data_ml/611

🔵خوشه‌بندی سلسله‌مراتبی یا Hierarchical Clustering
📎 https://t.me/data_ml/614

🔵الگوریتم DBSCAN
📎 https://t.me/data_ml/617

🔵استفاده از شبکه‌های عصبی برای خوشه‌بندی
📎 https://t.me/data_ml/621

🔵معیارهای ارزیابی خوشه‌بندی
📎 https://t.me/data_ml/624

🔺 کوئیز

🔵کوییز شماره ۱۶۸: کاهش تاثیر داده‌های پرت در نتایج K-means
📎 https://t.me/data_ml/612

🔵کوییز شماره ۱۶۹: کاربرد روش UPGMA در خوشه‌بندی سلسله‌مراتبی
📎 https://t.me/data_ml/615

🔵کوییز شماره ۱۷۰: تشخیص نقاط پرت توسط DBSCAN
📎 https://t.me/data_ml/619

🔵کوییز شماره ۱۷۱: وجه تمایز SOM از بقیه روش‌های خوشه‌بندی
📎 https://t.me/data_ml/622

🔵کوییز شماره ۱۷۲: ارزیابی شباهت بین دو خوشه‌بندی با استفاده از احتمال شرطی
📎 https://t.me/data_ml/625

🔺 نکته

🔵 معرفی جامع تکنیک‌های خوشه‌بندی در یادگیری ماشین
📎 https://t.me/data_ml/610

🔵بلاگ معرفی الگوریتم K-means
📎 https://t.me/data_ml/613

🔵مقایسه K-means و خوشه‌بندی سلسله‌مراتبی
📎 https://t.me/data_ml/616

🔵بلاگ الگوریتم DBSCAN
📎 https://t.me/data_ml/620

🔵جمع‌بندی معیارهای ارزیابی خوشه‌بندی
📎 https://t.me/data_ml/626

#Weekend
#Clustering

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥2👌2👍1
👩‍🎓 برنامه آموزشی هفته: پایگاه داده‌ها

🟠شنبه: عملیات CRUD

🔵یک‌شنبه: کوئری چیست؟

🟢دوشنبه: پیاده‌سازی شرط‌ در کوئری

🔴سه‌شنبه: آشنایی با Group by و Order by

🟠چهارشنبه: Subquery چیست؟

🔵پنج‌شنبه: ابزارها و نرم‌افزارها

🟢جمعه: جمع بندی

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2🔥1👏1
🟡 سلسه وبینارهای رایگان علم داده و ماشین لرنینگ تابستان ۱۴۰۳

🔵 سرفصل‌های وبینار اول: بازارکار علم داده و تحلیل داده
🔵موقعیت‌های شغلی جهانی مرتبط با داده
🔵نحوه جستجو شغل کردن در لینکدین و ست کردن جاب آلارم
🔵آشنایی با ساختار شرح شغل‌ها و نحوه بهبود صفحه شخصی براساس نیاز شرکت‌ها
🔵بررسی راه‌های شبکه‌سازی در لینکدین
🔵راهکارهای افزایش احتمال موفقیت در تماس اولیه از طرف شرکت‌ها
🔵بررسی ترفندهای جستجو شغل
🔵 ۵ نکته کلیدی در فرآیند جستجو شغل
🔵پنل پرسش و پاسخ

🗓 شنبه، ۱۶ تیر
ساعت ۲۰

▶️ این وبینار ضبط نمی‌شه و فقط به‌صورت لایو در دسترسه.

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

🟢 رایگان ثبت‌نام کنین:‌

👉📎 http://ctdrs.ir/cr15841

@DSLanders | دی‌اس‌لندرز
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2👏1👌1
👨‍🎓 عملیات CRUD در پایگاه‌های داده

عملیات CRUD یک مخفف برای چهار عملیات اساسی در پایگاه‌های داده است که عبارت‌اند از: ایجاد (Create)، خواندن (Read)، به‌روزرسانی (Update) و حذف (Delete). این چهار عملیات، اصول اولیه‌ای هستن که هر سیستم پایگاه داده‌ باید پشتیبانی کنه.

🔵 ایجاد: عملیات ایجاد یا Create به فرایند اضافه کردن رکوردهای جدید به پایگاه داده اشاره داره. این عملیات معمولاً از طریق دستورات SQL مثل INSERT INTO انجام می‌شه. در این مثال، ما یک رکورد جدید با نام علی، ایمیل ali@example.com و سن ۳۰ به جدول کاربران اضافه می‌کنیم.

INSERT INTO users (name, email, age) VALUES ('Ali', 'ali@example.com', 30);


🔵 خواندن: عملیات خواندن یا Read به فرایند بازیابی اطلاعات از پایگاه داده اشاره داره. این عملیات معمولاً از طریق دستوراتی مثل SELECT انجام می‌شه. برای بهینه‌سازی بازیابی داده‌ها، از فیلترها و شرط‌ها استفاده می‌شه. در این مثال، ما نام و ایمیل کاربرانی که سن آن‌ها بیشتر از ۲۰ است را از جدول کاربران بازیابی می‌کنیم.

SELECT name, email FROM users WHERE age > 20;


🔵 به‌روزرسانی: عملیات به‌روزرسانی یا Update فرایند تغییر داده‌های موجود در پایگاه داده است. این عملیات معمولاً از طریق دستوراتی مثل UPDATE انجام می‌شه. در این مثال، سن کاربری به نام علی را به ۳۱ تغییر می‌دیم.

UPDATE Users SET Age = 31 WHERE Name = 'Ali';


🔵 حذف: عملیات حذف یا Delete به فرایند حذف داده‌ها از پایگاه داده اشاره داره. این عملیات معمولاً از طریق دستوراتی مثل DELETE انجام می‌شه. در این مثال، کاربر علی رو از جدول کاربران حذف می‌کنیم.

DELETE FROM Users WHERE Name = 'Ali';


🔵 تراکنش‌: Transaction به گروهی از عملیات‌های CRUD گفته می‌شه که باید به صورت یکجا و بدون خطا اجرا شن. اگه هر کدوم از عملیات‌ها در یک تراکنش با شکست مواجه شه، تمام عملیات‌های انجام شده در اون تراکنش باید به حالت قبل برگردن (Rollback). تراکنش‌ها از چهار ویژگی اصلی به نام ACID پیروی می‌کنن:

🔵اتمی بودن (Atomicity): همه عملیات‌های تراکنش باید به طور کامل انجام شن یا هیچ کدوم انجام نشن.

🔵سازگاری (Consistency): تراکنش باید پایگاه داده رو از یک حالت سازگار به حالت سازگار دیگه انتقال بده.

🔵انزوا (Isolation): عملیات‌های تراکنش‌های مختلف باید به نحوی انجام شن که انگار تراکنش‌های دیگه وجود ندارن.

🔵دوام (Durability): بعد از پایان تراکنش، تغییراتش باید دائمی و حتی در صورت وقوع خطاهای سیستم، قابل بازیابی باشن. مثال:

BEGIN TRANSACTION;
UPDATE Bank_Account SET Balance = Balance - 100 WHERE User_id = 1;
UPDATE Bank_Account SET Balance = Balance + 100 WHERE User_id = 2;
COMMIT;


🔵 جداول مجازی یا View نتایج یک پرس و جوی SELECT رو ذخیره می‌کنن و برای ساده‌سازی پیچیدگی‌های پایگاه داده و همچنین برای امنیت داده‌ها استفاده می‌شن، در نتیجه می‌شه دسترسی به داده‌های حساس رو محدود کرد.

🔵 رویه‌های ذخیره شده یا Stored Procedures، بلوک‌های کدی هستن که در پایگاه داده ذخیره می‌شن و می‌تونن عملیات‌های پیچیده و تکراری رو اجرا کنن. همچنین برای بهبود عملکرد و کاهش بار شبکه بین برنامه کاربردی و پایگاه داده استفاده می‌شن.

AS
BEGIN
RETURN @درآمد * 0.1;
END;


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

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥2👏1
کوییز شماره ۱۷۳: کدوم گزینه یکی از مزایای استفاده از رویه‌های ذخیره شده (Stored Procedures) نیست؟
Anonymous Quiz
20%
کاهش بار شبکه بین برنامه کاربردی و پایگاه داده
31%
افزایش امنیت داده‌ها
29%
افزایش انعطاف‌پذیری در تغییرات داده‌ها
20%
بهبود عملکرد پرس‌وجوها
🤔4😎21👌1
🧑‍🎓 با زبان SQL و دستورهای آن برای دیتا ساینس آشنا شوید!

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

🟢برای مطالعه بیشتر کلیک کنین:
👉📎 ctdrs.ir/ds0291

#Database
@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3👏1👌1👨‍💻1
👨‍🎓 مروری بر پرس‌وجو یا Query در پایگاه داده

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

🔵 پرس‌وجو چیه؟

پرس‌وجو به دستوری گفته می‌شه که به یک پایگاه داده ارسال می‌شه تا اطلاعات خاصی رو ازش استخراج کنه. این دستورات می‌تونن به زبان‌های مختلفی مثل SQL (Structured Query Language) نوشته شن. پرس‌وجوها به کاربران اجازه می‌دن تا داده‌ها رو جستجو، بازیابی، به‌روز‌رسانی یا حذف کنن.

🔵 انواع Query

🔵پرس‌وجوی انتخابی (SELECT Query): این نوع پرس‌وجو برای بازیابی داده‌ها از پایگاه داده استفاده می‌شه. دستور SELECT برای انتخاب سطرها و ستون‌های خاصی از یک یا چند جدول در پایگاه داده به کار می‌ره.

🔵پرس‌وجوی درج: INSERT برای اضافه کردن داده‌های جدید به جدول پایگاه داده استفاده می‌شه. دستور INSERT INTO برای این کار به کار می‌ره.

🔵پرس‌وجوی به‌روز‌رسانی: UPDATE برای تغییر داده‌های موجود در جدول پایگاه داده استفاده می‌شه.

🔵پرس‌وجوی حذف: DELETE برای حذف داده‌های موجود در جدول پایگاه داده استفاده می‌شود.

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

🔵کلید اصلی (Primary Key): کلید اصلی یک ستون یا ترکیبی از ستون‌ها در یک جدوله که به طور یکتا هر سطر رو مشخص و به حفظ یکپارچگی داده‌ها کمک می‌کنه، مقادیر Null نمی‌پذیره و سرعت دسترسی به داده‌ها رو افزایش می‌ده. کلید اصلی به عنوان مرجعی برای کلیدهای خارجی در جداول دیگه استفاده می‌شه و به ایجاد روابط بین جداول کمک می‌کنه.

🔵کلید خارجی (Foreign Key): کلید خارجی یک ستون یا ترکیبی از ستون‌ها در یک جدوله که به کلید اصلی در جدول دیگه اشاره می‌کنه و برای ایجاد روابط بین جداول مختلف استفاده می‌شه. برای مثال، اگه رکوردی در جدول پدر حذف شه، می‌شه با استفاده از قوانین محدودیت‌ها (Constraints) مشخص کرد که چه اتفاقی برای رکوردهای وابسته در جدول فرزند بیفتد (حذف cascade یا set null).

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

🔵استفاده از ایندکس‌: Indexها ساختارهایی هستن که سرعت دسترسی به داده‌ها را افزایش می‌دهند. ایجاد ایندکس روی ستون‌های پرکاربرد می‌تواند زمان جستجو و بازیابی داده‌ها را کاهش دهد.

🔵استفاده از VIEW: جداول مجازی‌ای که نتیجه یک پرس‌وجو رو ذخیره و به ساده‌سازی پرس‌وجوهای پیچیده کمک می‌کنن.

CREATE VIEW StudentGrades AS
SELECT students.name, courses.course_name, enrollments.grade
FROM students
JOIN enrollments ON students.id = enrollments.student_id
JOIN courses ON enrollments.course_id = courses.id;


🔵استفاده از SUBQUERY و CTE: پرس‌وجوی فرعی و CTE (عبارت‌های مشترک) برای ساده‌سازی و خوانایی پرس‌وجوهای پیچیده استفاده می‌شن.

WITH TopStudents AS (
SELECT student_id, AVG(grade) AS avg_grade
FROM enrollments
GROUP BY student_id
HAVING AVG(grade) > 85
)
SELECT students.name
FROM students
JOIN TopStudents ON students.id = TopStudents.student_id;


🔵 ایجاد امنیت در پرس‌وجوها

🔵جلوگیری از حملات SQL Injection: استفاده از پرس‌وجوهای آماده (Prepared Statements) و پارامترهای ورودی به جای وارد کردن مستقیم مقادیر، از حملات SQL Injection جلوگیری می‌کنه.

PREPARE stmt FROM 'SELECT * FROM users WHERE username = ? AND password = ?';
EXECUTE stmt USING @username, @password;


🔵مدیریت دسترسی کاربران: تعریف سطوح دسترسی مختلف برای کاربران از دسترسی غیرمجاز به داده‌ها جلوگیری می‌کنه.

GRANT SELECT ON students TO read_only_user;


#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3👏21👌1
🧑‍🎓 تفاوت پایگاه‌های داده SQL و NoSQL چیه و هر کدوم چه کاربردهایی دارن؟

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

🟢برای مطالعه بیشتر کلیک کنین:
👉📎 http://ctdrs.ir/ds0282

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2👏2👌1
👨‍🎓 به‌کارگیری شرط (WHERE) در پرس‌وجوهای پایگاه داده

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

🔵 ساختار کلی عبارت WHERE: ساختار کلی عبارت WHERE به شکل زیره:

SELECT column1, column2, ...
FROM table_name
WHERE condition;


در این ساختار:
🔵SELECT column1, column2, ...: تعیین می‌کنه که کدوم ستون‌ها از جدول بازیابی شن.
🔵FROM table_name: مشخص می‌کنه که داده‌ها از کدام جدول بازیابی شن.
🔵WHERE condition: شرطی که باید برای هر رکورد بررسی شه. تنها رکوردهایی که این شرط رو برآورده می‌کنن، در نتیجه نشون داده می‌شن.

🔵 انواع شرط در عبارت WHERE

🔵شرایط مقایسه‌ای برای مقایسه مقادیر استفاده می‌شن و شامل عملگرهای زیر هستن:

- = (برابر بودن): برای بررسی اینکه آیا دو مقدار برابرن یا نه.
- != یا < > (مخالف بودن): برای بررسی اینکه آیا دو مقدار نابرابرن یا نه.
- > (بزرگتر بودن): برای بررسی اینکه آیا مقدار اول بزرگتر از مقدار دومه یا نه.
- < (کوچکتر بودن): برای بررسی اینکه آیا مقدار اول کوچکتر از مقدار دومه یا نه.
- >= (بزرگتر یا مساوی بودن): برای بررسی اینکه آیا مقدار اول بزرگتر یا مساوی با مقدار دومه یا نه.
- <= (کوچکتر یا مساوی بودن): برای بررسی اینکه آیا مقدار اول کوچکتر یا مساوی با مقدار دومه یا نه. در مثال زیر، همه کارمندانی که سن اونها بیشتر از 30 ساله، انتخاب می‌شن.
SELECT * FROM employees
WHERE age > 30;


🔵شرایط منطقی برای ترکیب چند شرط به کار می‌رن و شامل عملگرهای زیر هستن:

- AND (و): وقتی هر دو شرط باید صحیح باشند.
- OR (یا): وقتی حداقل یکی از دو شرط باید صحیح باشد.
- NOT (نفی): برای معکوس کردن شرط. در مثال زیر، همه کارمندانی که سن‌ بیشتر از 30 سال و حقوق بیشتر از 50000 دارن، انتخاب می‌شن.
SELECT * FROM employees
WHERE age > 30 AND salary > 50000;


🔵عبارت BETWEEN برای بررسی اینکه آیا مقدار یک ستون در یک بازه مشخص قرار دارد یا نه، استفاده می‌شه. در مثال زیر، همه کارمندانی که سن‌شون بین 30 و 40 ساله، انتخاب می‌شن.
SELECT * FROM employees
WHERE age BETWEEN 30 AND 40;


🔵عبارت IN برای بررسی اینکه آیا مقدار یک ستون در یک مجموعه از مقادیر مشخص قرار داره یا نه، استفاده می‌شه. در این مثال، همه کارمندانی که در یکی از دپارتمان‌های HR، Finance یا IT کار می‌کنن، انتخاب می‌شن.

SELECT * FROM employees
WHERE department IN ('HR', 'Finance', 'IT');


🔵عبارت LIKE برای جستجوی الگوهای مشخص در رشته‌ها به کار می‌ره. این عبارت معمولاً با % و _ استفاده می‌شه. % نماینده هیچ یا چند کاراکتر و _ نماینده دقیقاً یک کاراکتر هست. در این مثال، همه کارمندانی که نام آن‌ها با حرف A شروع می‌شه، انتخاب می‌شن.

SELECT * FROM employees
WHERE name LIKE 'A%';


🔵عبارت IS NULL برای بررسی خالی بودن مقدار یک ستون استفاده می‌شه. در این مثال، همه کارمندانی که شماره تلفن‌شون خالیه، انتخاب می‌شن.

SELECT * FROM employees
WHERE phone_number IS NULL;


🔵 اولویت عملگرها در عبارت WHERE

زمان استفاده از چند شرط در یک عبارت WHERE، اولویت عملگرها اهمیت داره. عملگرهای NOT دارای بالاترین اولویت، بعد عملگرهای مقایسه‌ای (=, !=, >, <, >=, <=)، و در نهایت عملگرهای AND و OR قرار دارن. در این مثال، اول شرط داخل پرانتز ارزیابی می‌شه (آیا سن بیشتر از 30 یا حقوق کمتر از 50000 است)، بعد نتیجه‌اش با NOT معکوس می‌شه.

SELECT * FROM employees
WHERE NOT (age > 30 OR salary < 50000);


🔵 استفاده از پرانتزها برای تغییر اولویت

برای تغییر اولویت عملگرها و اعمال شرط‌ها به ترتیبی که مورد نظره، می‌شه از پرانتزها استفاده کرد. در این مثال، اول شرط داخل پرانتز ارزیابی می‌شه (آیا سن بیشتر از 30 و حقوق بیشتر از 50000 است)، بعد نتیجه‌اش با شرط خارج پرانتز ترکیب می‌شه (یا دپارتمان برابر با IT).

SELECT * FROM employees
WHERE (age > 30 AND salary > 50000) OR department = 'IT';


#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63👌2👨‍💻2
کوییز شماره ۱۷۵: فرض کنین جدولی به نام sales داریم و می‌خواهیم رکوردهایی رو انتخاب کنیم که مقدار فروش اونها بیشتر از مقدار فروش تمامی رکوردهایی باشه که مربوط به سال 2020 هستن. کدوم یک از گزینه‌های زیر صحیحه؟
Anonymous Quiz
10%
SELECT * FROM sales WHERE amount > ANY (SELECT amount FROM sales WHERE year = 2020);
13%
SELECT * FROM sales WHERE amount > (SELECT AVG(amount) FROM sales WHERE year = 2020);
30%
SELECT * FROM sales WHERE amount > ALL (SELECT amount FROM sales WHERE year = 2020);
47%
SELECT * FROM sales WHERE amount > (SELECT MAX(amount) FROM sales WHERE year = 2020);
👍4🤔2👌1😎1
🧑‍🎓 متداول‌ترین سوالات مصاحبه SQL و بهترین روش‌ها برای پاسخگویی

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

🟢برای مطالعه بیشتر کلیک کنین:
👉📎 http://ctdrs.ir/ds0283

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43👌1😎1
👨‍🎓 مفاهیم Group By و Order By در پایگاه‌ داده‌ها


🔵 دستور GROUP BY

دستور GROUP BY در SQL برای گروه‌بندی رکوردها بر اساس یک یا چند ستون استفاده می‌شه. این دستور اکثرا همراه با توابع تجمعی مثل SUM ،COUNT ،AVG ،MAX و MIN به کار می‌ره. هدف اصلی GROUP BY، جمع‌بندی و تجمیع داده‌ها به نحوی هست که بتونیم نتایج خلاصه‌تری از داده‌ها استخراج کنیم.

🔵 نکات مهم در استفاده از GROUP BY

- ستون‌هایی که در دستور SELECT استفاده می‌شن، باید یا در دستور GROUP BY آورده شن یا شامل توابع تجمعی باشن.
- نمی‌شه از GROUP BY برای گروه‌بندی بر اساس ستون‌هایی که شامل داده‌های غیرتجمعی هستن، استفاده کرد.

🔵دستور HAVING

دستور HAVING در SQL برای فیلتر کردن گروه‌های داده بعد از گروه‌بندی با استفاده از دستور GROUP BY به کار می‌ره. برخلاف دستور WHERE که برای فیلتر کردن رکوردها قبل از گروه‌بندی استفاده می‌شه، HAVING برای اعمال شرط‌ها روی گروه‌های ایجاد شده به کار می‌رن.

🔵 دستور ORDER BY

دستور ORDER BY برای مرتب‌سازی نتایج جستجو بر اساس یک یا چند ستون استفاده می‌شه. این مرتب‌سازی می‌تونه به صورت صعودی (ASC) یا نزولی (DESC) با هدف نمایش منظم‌تر داده‌ها و پیدا کردن سریع‌تر اطلاعات مفید باشه.

🔵نکات مهم در استفاده از ORDER BY

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

   SELECT Name, Date
FROM Order
ORDER BY Name ASC, Date DESC;


🖼 در تصویر در کوئری اول 1000 رکورد اول از جدول sample در دیتابیس MyDB انتخاب می‌شه و ستون‌های ID،Name،Age و Salary نشون داده می‌شن. در کوئری دوم، نام و مجموع حقوق از جدول sample انتخاب و بر اساس ستون Name گروه‌بندی انجام می‌شه و بعد مجموع حقوق هر گروه نشون داده می‌شه.

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2👏1👌1
💡مرور مطالب گفته شده با بررسی یک کوئری

فرض کنید که سه جدول Employees شامل اطلاعات کارمندان، Departments شامل اطلاعات دپارتمان‌ها و جدول Sales شامل اطلاعات فروش‌ رو داریم.

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

🔵 ساختار جداول و کوئری

CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
EmployeeName NVARCHAR(50),
DepartmentID INT
);

CREATE TABLE Departments (
DepartmentID INT PRIMARY KEY,
DepartmentName NVARCHAR(50)
);

CREATE TABLE Sales (
SaleID INT PRIMARY KEY,
EmployeeID INT,
SaleAmount DECIMAL(10, 2),
SaleDate DATE
);


SELECT 
E.EmployeeName,
D.DepartmentName,
SUM(S.SaleAmount) AS TotalSales
FROM
Employees E
JOIN
Sales S ON E.EmployeeID = S.EmployeeID
JOIN
Departments D ON E.DepartmentID = D.DepartmentID
WHERE
S.SaleDate >= '2023-01-01' AND S.SaleDate <= '2023-12-31'
GROUP BY
E.EmployeeName, D.DepartmentName
HAVING
SUM(S.SaleAmount) > 50000
ORDER BY
TotalSales DESC;


🔵 بررسی جزئیات کوئری

🔵انتخاب ستون‌ها: در اینجا سه ستون EmployeeName (نام کارمند)، DepartmentName (نام دپارتمان) و SUM(S.SaleAmount) AS TotalSales (مجموع فروش‌ها به عنوان TotalSales) انتخاب می‌شن.
SELECT E.EmployeeName, D.DepartmentName, SUM(S.SaleAmount) AS TotalSales


🔵منبع داده و ارتباط جداول: در این بخش، جدول Employees با جدول Sales بر اساس EmployeeID و جدول Departments بر اساس DepartmentID مرتبط شدن.
FROM Employees E
JOIN Sales S ON E.EmployeeID = S.EmployeeID
JOIN Departments D ON E.DepartmentID = D.DepartmentID


🔵شرط‌ها (WHERE): این قسمت مشخص می‌کنه که فقط فروش‌هایی که در سال 2023 انجام شدن، انتخاب شن.
WHERE S.SaleDate >= '2023-01-01' AND S.SaleDate <='2023-12-31'


🔵گروه‌بندی (GROUP BY): داده‌ها بر اساس نام کارمند و نام دپارتمان گروه‌بندی می‌شن.
GROUP BY E.EmployeeName, D.DepartmentName 


🔵شرط‌ها برای گروه‌ها (HAVING): فقط گروه‌هایی که مجموع فروش‌شون بیشتر از 50000 واحده، انتخاب می‌شن.
HAVING SUM(S.SaleAmount) > 50000


🔵مرتب‌سازی (ORDER BY): نتایج بر اساس مجموع فروش به ترتیب نزولی مرتب می‌شن.
ORDER BY TotalSales DESC   


#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42👏1👌1