تعلّم الآلة باستخدام Python
تقنيات لتنفيذ نماذج تعلّم الآلة باستخدام Python.
InSkillCoach
تعلّم الآلة باستخدام Python
يُعدّ تعلّم الآلة (Machine Learning) من أكثر مجالات الحوسبة الحديثة إثارة. وقد فرضت Python نفسها كلغة مفضّلة لتطوير نماذج الذكاء الاصطناعي بفضل منظومتها الغنية ومكتباتها المتخصصة.
ما هو تعلّم الآلة؟
تعلّم الآلة فرع من الذكاء الاصطناعي يتيح للحواسيب أن تتعلّم من البيانات دون أن تتم برمجتها بشكل صريح. تكتشف خوارزميات تعلّم الآلة الأنماط في البيانات وتتخذ قرارات بأدنى قدر من التدخل البشري.
المكتبات الأساسية
توفّر Python منظومة متكاملة لتعلّم الآلة:
- NumPy: الحساب العددي والتعامل مع المصفوفات متعددة الأبعاد
- Pandas: معالجة البيانات وتحليلها
- Scikit-learn: مكتبة شاملة لتعلّم الآلة التقليدي
- TensorFlow: إطار عمل للتعلّم العميق طورته Google
- PyTorch: إطار عمل مرن وسهل الاستخدام للتعلّم العميق
- Keras: واجهة برمجية عالية المستوى للشبكات العصبية
- XGBoost: تنفيذ محسَّن لخوارزمية تعزيز التدرّج (gradient boosting)
تثبيت البيئة
ابدأ بإعداد بيئتك:
# Créer un environnement virtuel
python -m venv ml-env
source ml-env/bin/activate # Sur Windows: ml-env\Scripts\activate
# Installer les bibliothèques essentielles
pip install numpy pandas matplotlib scikit-learn tensorflow keras
أنواع التعلّم الآلي
التعلّم الخاضع للإشراف
تتعلّم الخوارزمية من بيانات مُصنَّفة (ذات وسوم):
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# Charger et préparer les données
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Créer et entraîner le modèle
model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)
# Évaluer le modèle
predictions = model.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
print(f"Précision du modèle : {accuracy:.2f}")
التعلّم غير الخاضع للإشراف
تكتشف الخوارزمية البنى الكامنة في بيانات غير مُصنَّفة:
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# Créer et entraîner le modèle
kmeans = KMeans(n_clusters=3, random_state=42)
clusters = kmeans.fit_predict(X)
# Visualiser les clusters
plt.figure(figsize=(10, 6))
plt.scatter(X[:, 0], X[:, 1], c=clusters, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1],
s=300, c='red', marker='X')
plt.title('Clustering K-means')
plt.show()
التعلّم المعزَّز
تتعلّم الخوارزمية بالتجربة والخطأ من خلال التفاعل مع بيئة ما:
import gym
import numpy as np
# Créer l'environnement
env = gym.make('CartPole-v1')
# Paramètres
learning_rate = 0.1
discount_factor = 0.99
episodes = 1000
max_steps = 500
# Table Q
q_table = np.zeros([env.observation_space.n, env.action_space.n])
# Boucle d'apprentissage
for episode in range(episodes):
state = env.reset()
done = False
for step in range(max_steps):
# Choisir une action
action = np.argmax(q_table[state, :])
# Exécuter l'action
new_state, reward, done, _ = env.step(action)
# Mettre à jour la table Q
q_table[state, action] = q_table[state, action] + learning_rate * (
reward + discount_factor * np.max(q_table[new_state, :]) - q_table[state, action])
state = new_state
if done:
break
التعلّم العميق باستخدام TensorFlow
يستخدم التعلّم العميق شبكات عصبية عميقة لحل المشكلات المعقدة:
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, Flatten, MaxPooling2D
# Charger les données
(X_train, y_train), (X_test, y_test) = tf.keras.datasets.mnist.load_data()
# Prétraitement
X_train = X_train.reshape(-1, 28, 28, 1) / 255.0
X_test = X_test.reshape(-1, 28, 28, 1) / 255.0
# Créer le modèle CNN
model = Sequential([
Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
MaxPooling2D((2, 2)),
Conv2D(64, (3, 3), activation='relu'),
MaxPooling2D((2, 2)),
Flatten(),
Dense(128, activation='relu'),
Dense(10, activation='softmax')
])
# Compiler le modèle
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# Entraîner le modèle
model.fit(X_train, y_train, epochs=5, validation_data=(X_test, y_test))
# Évaluer le modèle
test_loss, test_acc = model.evaluate(X_test, y_test)
print(f"Précision sur les données de test : {test_acc:.4f}")
معالجة اللغة الطبيعية (NLP)
معالجة اللغة الطبيعية مجال من مجالات تعلّم الآلة يتناول اللغة البشرية:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline
# Exemple de données
X = ["J'adore ce film", "Ce film est terrible", "Un excellent film", "Je déteste ce film"]
y = [1, 0, 1, 0] # 1 = positif, 0 = négatif
# Créer un pipeline
text_clf = Pipeline([
('tfidf', TfidfVectorizer()),
('clf', MultinomialNB())
])
# Entraîner le modèle
text_clf.fit(X, y)
# Prédire le sentiment
nouvelles_critiques = ["C'était un film incroyable", "Je n'ai pas aimé ce film"]
predictions = text_clf.predict(nouvelles_critiques)
print(predictions) # [1, 0]
الرؤية الحاسوبية
تتيح الرؤية الحاسوبية للآلات أن «ترى» الصور وتفسّرها:
import cv2
import numpy as np
from tensorflow.keras.applications import MobileNetV2
from tensorflow.keras.applications.mobilenet_v2 import preprocess_input, decode_predictions
# Charger le modèle pré-entraîné
model = MobileNetV2(weights='imagenet')
# Charger et prétraiter l'image
image = cv2.imread('chat.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image = cv2.resize(image, (224, 224))
image = np.expand_dims(image, axis=0)
image = preprocess_input(image)
# Prédire la classe
predictions = model.predict(image)
results = decode_predictions(predictions, top=3)[0]
# Afficher les résultats
for i, (imagenet_id, label, score) in enumerate(results):
print(f"{i+1}: {label} ({score:.2f})")
أفضل الممارسات في تعلّم الآلة
المعالجة المسبقة للبيانات
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
# Définir les transformations
numeric_features = ['age', 'income', 'credit_score']
categorical_features = ['education', 'marital_status']
numeric_transformer = Pipeline(steps=[
('imputer', SimpleImputer(strategy='median')),
('scaler', StandardScaler())
])
categorical_transformer = Pipeline(steps=[
('imputer', SimpleImputer(strategy='most_frequent')),
('onehot', OneHotEncoder(handle_unknown='ignore'))
])
preprocessor = ColumnTransformer(
transformers=[
('num', numeric_transformer, numeric_features),
('cat', categorical_transformer, categorical_features)
])
# Créer le pipeline complet
model = Pipeline(steps=[
('preprocessor', preprocessor),
('classifier', RandomForestClassifier())
])
# Utiliser le pipeline
model.fit(X_train, y_train)
التحقق المتقاطع
from sklearn.model_selection import cross_val_score, KFold
# Définir la validation croisée
cv = KFold(n_splits=5, shuffle=True, random_state=42)
# Évaluer le modèle
scores = cross_val_score(model, X, y, cv=cv, scoring='accuracy')
print(f"Précision moyenne : {scores.mean():.2f} (±{scores.std():.2f})")
ضبط المعاملات الفائقة
from sklearn.model_selection import GridSearchCV
# Définir les hyperparamètres à tester
param_grid = {
'n_estimators': [50, 100, 200],
'max_depth': [None, 10, 20, 30],
'min_samples_split': [2, 5, 10]
}
# Créer le modèle de recherche
grid_search = GridSearchCV(
RandomForestClassifier(random_state=42),
param_grid,
cv=5,
scoring='accuracy',
n_jobs=-1
)
# Trouver les meilleurs hyperparamètres
grid_search.fit(X_train, y_train)
print(f"Meilleurs paramètres : {grid_search.best_params_}")
print(f"Meilleure précision : {grid_search.best_score_:.2f}")
تطبيقات عملية لتعلّم الآلة
- أنظمة التوصية: Netflix وAmazon وSpotify
- التعرّف على الصور: اكتشاف الكائنات والتعرّف على الوجوه
- معالجة اللغة الطبيعية: روبوتات المحادثة والترجمة الآلية
- كشف الاحتيال: المعاملات المصرفية المشبوهة
- التشخيص الطبي: اكتشاف الأمراض في الصور الطبية
- المركبات ذاتية القيادة: إدراك البيئة المحيطة واتخاذ القرار
- التنبؤ بالسلاسل الزمنية: توقّع أسعار الأسهم والطقس
الخاتمة
يوفّر تعلّم الآلة باستخدام Python إمكانات لا حدود لها لحل المشكلات المعقدة وبناء تطبيقات ذكية. وبفضل المكتبات والتقنيات المناسبة، يمكنك تطوير نماذج قوية تتعلّم من البيانات وتتحسّن مع مرور الوقت.
وللمضي أبعد من ذلك، استكشف مجالات محددة مثل التعلّم العميق أو معالجة اللغة الطبيعية أو الرؤية الحاسوبية، وشارك في المسابقات على منصات مثل Kaggle لاختبار مهاراتك.
نبذة عن InSkillCoach
خبير في التدريب والتقنيات
مدرّب متخصص في التقنيات المتقدمة والذكاء الاصطناعي، تدعمه شركة GNeurone Inc.
الشهادات:
- AWS Certified Solutions Architect – Professional
- شهادات Google Cloud
- Microsoft Certified: DevOps Engineer Expert
- Certified Kubernetes Administrator (CKA)
- CompTIA Security+
التعليقات
التعليقات مدعومة عبر GitHub Discussions
سجّل الدخول باستخدام GitHub للمشاركة في النقاش