المتغيرات والأنواع الأساسية في Python للمهندسين
بصفتك مهندس AI، ستتعامل يوميًا مع أنواع بيانات محددة. في بايثون، لا تحتاج لتعريف نوع المتغير مسبقًا (Dynamic Typing)، لكن فهم الأنواع الأساسية ضروري لتجنب الأخطاء في حسابات النماذج.
1. تعريف المتغيرات (Variables)
المتغير هو "صندوق" يخزن قيمة في الذاكرة. الاسم يجب أن يكون واضحًا وصفيًا.
# تعريف متغيرات مرتبطة ببيانات ML
learning_rate = 0.01 # معدل التعلم
epoch_count = 100 # عدد دورات التدريب
model_name = "ResNet50" # اسم النموذج
is_converged = False # هل تم الوصول للتقارب؟
قواعد تسمية مهمة:
- استخدم snake_case (مثل input_size).
- تجنب الكلمات المحجوزة (مثل if, for, class).
- اجعل الاسم يعكس الوظيفة (مثل weights وليس w).
2. الأنواع الأساسية (Basic Types)
هذه هي الأربعة أنواع التي ستستخدمها في 90% من كود الـPreprocessing وTraining:
A. الأعداد الصحيحة (int)
تستخدم للعناصر التي لا تحتوي على كسور.
- أمثلة في ML: عدد الطبقات (layers)، حجم الدفعة (batch_size)، عدد العينات (samples).
- الخاصية: لا يمكن أن تحتوي على نقطة عشرية.
batch_size = 32
hidden_units = 128
B. الأعداد العشرية (float)
تستخدم للأرقام الحقيقية. هذا هو النوع الأهم في حسابات الشبكات العصبية.
- أمثلة في ML: الأوزان (weights)، الانحياز (bias)، معدل التعلم (learning_rate)، دقة النموذج (accuracy).
- الخاصية: تدعم العمليات الحسابية الدقيقة المطلوبة للخوارزميات.
weight_w1 = 0.523
bias_b1 = -0.12
loss_value = 2.456
C. النصوص (str)
تستخدم للتسميات والمعايير.
- أمثلة في ML: أسماء الملفات، أنواع البيانات، رسائل السجلات (logs).
- الخاصية: يجب وضعها بين علامات تنصيص (مفردة ' أو مزدوجة ").
dataset_name = "Cifar10"
log_message = "Training started..."
D. المنطقي (bool)
يأخذ قيمتين فقط: True أو False.
- أمثلة في ML: التحقق من اكتمال التدريب، وجود بيانات مفقودة (is_nan)، تفعيل الـRegularization.
- الخاصية: مفيد جدًا في الشروط (if statements) للتحكم في سير التدريب.
early_stopping = True
data_missing = False
3. التحويل بين الأنواع (Type Casting)
في معالجة البيانات، قد تصلك القيم كنصوص من ملف CSV أو API، وتحتاج لتحويلها لأرقام لحسابات المصفوفات (NumPy).
| الدالة | الوظيفة | مثال |
|---|---|---|
int() |
تحويل إلى عدد صحيح | int("100") → 100 |
float() |
تحويل إلى عدد عشري | float("0.5") → 0.5 |
str() |
تحويل إلى نص | str(0.95) → "0.95" |
bool() |
تحويل إلى منطقي | bool(1) → True |
مثال عملي: تنظيف بيانات قبل التدريب
# افتراض أن البيانات قادمة من ملف نصي (كلها str)
raw_accuracy = "95.5"
raw_epochs = "50"
# التحويل للنوع الصحيح قبل الحساب
accuracy = float(raw_accuracy) # الآن يمكن مقارنتها أو رسمها
epochs = int(raw_epochs) # الآن يمكن استخدامه في حلقة for
# خطأ شائع: محاولة الجمع بين str و int
# print(raw_accuracy + 1) # سيعطي خطأ TypeError
# الحل الصحيح:
print(accuracy + 1) # 96.5
4. الفرق الجوهري بين int و float
كثير من المبتدئين يخلطون بينهما. الفرق في الدقة وحجم الذاكرة:
-
العمليات الحسابية:
```python
# قسمة أرقام صحيحة في Python 3 تعطي float دائمًا
result = 10 / 2
print(type(result)) #(النتيجة 5.0) إذا أردت ناتجًا صحيحًا فقط (قسمة أرضية)
floor_div = 10 // 2
print(type(floor_div)) #(النتيجة 5)
``` -
في سياق ML:
- استخدم
intدائمًا للفهارس (indices) والأحجام (shapes). - استخدم
floatدائمًا للأوزان (weights) والقيم المستهدفة (targets) إذا كانت مستمرة. - تحذير: لا تحاول تحويل
floatكبير جدًا إلىintفقد تفقد دقة مهمة في الحسابات العلمية.
- استخدم
خلاصة
int: للعدّ والأحجام (Batch Size, Layers).float: للأوزان والقيم المستمرة (Weights, Loss, Accuracy).str: للأسماء والنصوص (Model Name, Logs).bool: للحالات الثنائية (True/False) للتحكم في منطق التدريب.- استخدم دوال التحويل (
float(),int()) لنظيف البيانات النصية قبل إدخالها في النماذج.