🎁A comprehensive cheat sheet for Python for Data Science!
#ScikitLearn
#Numpy
#Pandas
#python
#Data
#Visualization
#CrossValidation
@toobabigdatascience
#ScikitLearn
#Numpy
#Pandas
#python
#Data
#Visualization
#CrossValidation
@toobabigdatascience
⬅️#کاهش_ابعاد در Numphy
➡️⬆️محورها در NumPy واقعاً چه هستند؟
فرض کنید آرایه زیر را داریم:
X = np.array([
[1, 2, 3],
[4, 5, 6]
])
●شکل (Shape) آن:
X.shape
●خروجی:
(2, 3)
یعنی:
Dimension 0 = 2 rows
Dimension 1 = 3 columns
● نامپای از صفر شمارهگذاری میکند :
axis=0 → بُعد اول
axis=1 → بُعد دوم
●بنابراین:
axis=1
┌───────────┐
axis=0 │ 1 2 3 │
│ 4 5 6 │
└───────────┘
↕️مفهوم واقعی axis
وقتی مینویسید:
np.mean(X, axis=0)
معنایش این نیست که:
«روی محور 0 حرکت کن»
●بلکه معنایش این است:
«بُعد شماره 0 را حذف کن.»
یا به زبان فنیتر:
● روی بعد 0 عمل Reduction انجام بده.
حالا خود ِ Reduction چیست؟
ادامه دارد
#NumPy
#python
@toobabigdatascience
مشکل اصلی کجاس؟ مشکل از اینجا ناشی میشود که بسیاری از افراد axis را با جهت حرکت اشتباه میگیرند.
در واقع در NumPy، محور (Axis) یک «جهت محاسبه» نیست؛ بلکه یک شمارهٔ بُعد (Dimension Index) است.
➡️⬆️محورها در NumPy واقعاً چه هستند؟
فرض کنید آرایه زیر را داریم:
X = np.array([
[1, 2, 3],
[4, 5, 6]
])
●شکل (Shape) آن:
X.shape
●خروجی:
(2, 3)
یعنی:
Dimension 0 = 2 rows
Dimension 1 = 3 columns
● نامپای از صفر شمارهگذاری میکند :
axis=0 → بُعد اول
axis=1 → بُعد دوم
●بنابراین:
axis=1
┌───────────┐
axis=0 │ 1 2 3 │
│ 4 5 6 │
└───────────┘
↕️مفهوم واقعی axis
وقتی مینویسید:
np.mean(X, axis=0)
معنایش این نیست که:
«روی محور 0 حرکت کن»
●بلکه معنایش این است:
«بُعد شماره 0 را حذف کن.»
یا به زبان فنیتر:
● روی بعد 0 عمل Reduction انجام بده.
حالا خود ِ Reduction چیست؟
ادامه دارد
#NumPy
#python
@toobabigdatascience
👏2
متخصصان علم داده ها data scientists
⬅️#کاهش_ابعاد در Numphy مشکل اصلی کجاس؟ مشکل از اینجا ناشی میشود که بسیاری از افراد axis را با جهت حرکت اشتباه میگیرند. در واقع در NumPy، محور (Axis) یک «جهت محاسبه» نیست؛ بلکه یک شمارهٔ بُعد (Dimension Index) است. ➡️⬆️محورها در NumPy واقعاً چه هستند؟…
■ کاهش یا Reduction چیست؟
یادآوری : توابعی مثل:
mean
sum
max
min
std
تعداد ابعاد را کم میکنند.
◀️مثلاً:
X.shape
برابر است با:
(2, 3)
اما:
np.mean(X, axis=0)
خروجی:
[2.5, 3.5, 4.5]
شکل خروجی:
(3,)
↩️دقت کنید:
(2,3)
↓
(3,)
بُعد ِشماره 0 حذف شده است.
⏺چرا میانگین ستونها محاسبه میشود؟
چون NumPy باید بُعد 0 را حذف کند.
برای حذف آن مجبور است مقادیر موجود در آن بعد را با هم ترکیب کند:
[[1,2,3],
[4,5,6]]
●بُعد صفر شامل این دو سطر است:
row0
row1
پس:
(1,4) → 2.5
(2,5) → 3.5
(3,6) → 4.5
◀️نتیجه:
[2.5, 3.5, 4.5]
axis=1
چه میکند؟
np.mean(X, axis=1)
نامپای میگوید :
> بُعد شماره 1 را حذف کن.
بُعد 1 همان ستونها هستند.
پس:
[1,2,3] → 2
[4,5,6] → 5
■نتیجه:
[2,5]
⏪شکل خروجی:
(2,)
چون بعد 1 حذف شده است.
↔️حرفهایتر فکر کنیم:
به جای فکر کردن به «سطر» و «ستون»، به شکل آرایه نگاه کنید.
مثلاً:
X.shape = (100, 50)
یعنی:
axis=0 → 100
axis=1 → 50
وقتی میگویید:
np.mean(X, axis=0)
در واقع میگویید:
⬅️ آن 100 مقدار را به یک مقدار تبدیل کن.
بنابراین:
(100,50)
↓
(50,)
وقتی میگویید:
np.mean(X, axis=1)
میگویید:
⬅️ آن 50 مقدار را به یک مقدار تبدیل کن.
بنابراین:
(100,50)
↓
(100,)
↖️↘️↙️مثال سهبعدی (جایی که حفظ کردن سطر و ستون دیگر جواب نمیدهد)
فرض کنید:
X.shape = (10, 20, 30)
اینجا دیگر سطر و ستون معنای روشنی ندارند.
اما مفهوم axis کاملاً روشن است:
np.mean(X, axis=0)
شکل خروجی:
(20,30)
زیرا بُعد اول حذف شده است.
np.mean(X, axis=1)
⬅️خروجی:
(10,30)
np.mean(X, axis=2)
خروجی:
(10,20)
👁🗨قاعدهی حرفهای ها
بسیاری از برنامهنویسان باتجربه اصلاً به «سطر» و «ستون» فکر نمیکنند.
🔄آنها فقط این قانون را به خاطر میسپارند:
یا حتی کوتاهتر:
➡️ Axis = dimension to collapse.
اگر این جمله را بفهمیم، دیگر هیچوقت در NumPy، Pandas، TensorFlow، PyTorch یا JAX در مورد axis گیج و ویج نخواهیم شد.
#کاهش_ابعاد
#NumPy
#TensorFlow
#Tensor
#PyTorch
@toobabigdatascience
یادآوری : توابعی مثل:
mean
sum
max
min
std
تعداد ابعاد را کم میکنند.
◀️مثلاً:
X.shape
برابر است با:
(2, 3)
اما:
np.mean(X, axis=0)
خروجی:
[2.5, 3.5, 4.5]
شکل خروجی:
(3,)
↩️دقت کنید:
(2,3)
↓
(3,)
بُعد ِشماره 0 حذف شده است.
⏺چرا میانگین ستونها محاسبه میشود؟
چون NumPy باید بُعد 0 را حذف کند.
برای حذف آن مجبور است مقادیر موجود در آن بعد را با هم ترکیب کند:
[[1,2,3],
[4,5,6]]
●بُعد صفر شامل این دو سطر است:
row0
row1
پس:
(1,4) → 2.5
(2,5) → 3.5
(3,6) → 4.5
◀️نتیجه:
[2.5, 3.5, 4.5]
axis=1
چه میکند؟
np.mean(X, axis=1)
نامپای میگوید :
> بُعد شماره 1 را حذف کن.
بُعد 1 همان ستونها هستند.
پس:
[1,2,3] → 2
[4,5,6] → 5
■نتیجه:
[2,5]
⏪شکل خروجی:
(2,)
چون بعد 1 حذف شده است.
↔️حرفهایتر فکر کنیم:
به جای فکر کردن به «سطر» و «ستون»، به شکل آرایه نگاه کنید.
مثلاً:
X.shape = (100, 50)
یعنی:
axis=0 → 100
axis=1 → 50
وقتی میگویید:
np.mean(X, axis=0)
در واقع میگویید:
⬅️ آن 100 مقدار را به یک مقدار تبدیل کن.
بنابراین:
(100,50)
↓
(50,)
وقتی میگویید:
np.mean(X, axis=1)
میگویید:
⬅️ آن 50 مقدار را به یک مقدار تبدیل کن.
بنابراین:
(100,50)
↓
(100,)
↖️↘️↙️مثال سهبعدی (جایی که حفظ کردن سطر و ستون دیگر جواب نمیدهد)
فرض کنید:
X.shape = (10, 20, 30)
اینجا دیگر سطر و ستون معنای روشنی ندارند.
اما مفهوم axis کاملاً روشن است:
np.mean(X, axis=0)
شکل خروجی:
(20,30)
زیرا بُعد اول حذف شده است.
np.mean(X, axis=1)
⬅️خروجی:
(10,30)
np.mean(X, axis=2)
خروجی:
(10,20)
👁🗨قاعدهی حرفهای ها
بسیاری از برنامهنویسان باتجربه اصلاً به «سطر» و «ستون» فکر نمیکنند.
🔄آنها فقط این قانون را به خاطر میسپارند:
آکسیس مشخص میکند کدام بُعد کاهش (reduce) پیدا کند و از خروجی حذف شود.
یا حتی کوتاهتر:
➡️ Axis = dimension to collapse.
اگر این جمله را بفهمیم، دیگر هیچوقت در NumPy، Pandas، TensorFlow، PyTorch یا JAX در مورد axis گیج و ویج نخواهیم شد.
#کاهش_ابعاد
#NumPy
#TensorFlow
#Tensor
#PyTorch
@toobabigdatascience
👏2