یادگیری ترکیبی Boosting

یادگیری ترکیبی Boosting

boosting
هوش مصنوعي یادگیری گروهی

یادگیری ترکیبی Boosting








مثال در Python (با استفاده از کتابخانه scikit-learn):

from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap

# بارگذاری داده‌های Iris
iris = load_iris()
X = iris.data[:, :2]  # فقط دو ویژگی اول (طول و عرض کاسبرگ)
y = iris.target

# تقسیم داده‌ها به آموزش و تست
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# ایجاد مدل AdaBoost با درخت تصمیم به عنوان مدل پایه
base_estimator = DecisionTreeClassifier(max_depth=1)  # درخت کم‌عمق
ada_boost = AdaBoostClassifier(base_estimator=base_estimator, n_estimators=10, random_state=42)

# آموزش مدل
ada_boost.fit(X_train, y_train)

# ارزیابی دقت
accuracy = ada_boost.score(X_test, y_test)
print(f"دقت مدل: {accuracy:.2f}")

# رسم نواحی تصمیم‌گیری
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.01), np.arange(y_min, y_max, 0.01))

# پیش‌بینی برای نواحی تصمیم‌گیری
Z = ada_boost.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

# رسم نواحی تصمیم‌گیری و نقاط داده
plt.figure(figsize=(10, 6))
cmap = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF'])
plt.contourf(xx, yy, Z, cmap=cmap, alpha=0.3)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=cmap, edgecolors='k', s=100)
plt.xlabel('طول کاسبرگ (cm)')
plt.ylabel('عرض کاسبرگ (cm)')
plt.title('نواحی تصمیم‌گیری مدل AdaBoost (Iris)')
plt.show()

% بارگذاری مجموعه داده Iris
load fisheriris;
X = meas(:, 1:2); % فقط دو ویژگی اول (طول و عرض کاسبرگ)
y = species;      % برچسب‌های کلاس

% تبدیل برچسب‌های رشته‌ای به عددی
[~, ~, y_numeric] = unique(y);

% تقسیم داده‌ها به آموزش و تست
rng(42); % برای تکرارپذیری
cv = cvpartition(length(y), 'HoldOut', 0.3); % 30% برای تست
X_train = X(cv.training, :);
y_train = y_numeric(cv.training);
X_test = X(cv.test, :);
y_test = y_numeric(cv.test);

% ایجاد و آموزش مدل AdaBoost
base_model = fitctree(X_train, y_train, 'MaxDepth', 1); % درخت تصمیم کم‌عمق
ada_model = fitcensemble(X_train, y_train, 'Method', 'AdaBoostM2', ...
                         'NumLearningCycles', 10, 'Learners', base_model);

% ارزیابی دقت مدل
y_pred = predict(ada_model, X_test);
accuracy = sum(y_pred == y_test) / length(y_test);
fprintf('دقت مدل: %.2f\n', accuracy);

% رسم نواحی تصمیم‌گیری
x_min = min(X(:,1)) - 1; x_max = max(X(:,1)) + 1;
y_min = min(X(:,2)) - 1; y_max = max(X(:,2)) + 1;
[xx, yy] = meshgrid(x_min:0.01:x_max, y_min:0.01:y_max);
X_grid = [xx(:), yy(:)];

% پیش‌بینی برای نواحی تصمیم‌گیری
Z = predict(ada_model, X_grid);
Z = reshape(Z, size(xx));

% رسم نواحی تصمیم‌گیری و نقاط داده
figure;
contourf(xx, yy, Z, 'LineStyle', 'none');
colormap([1 0.7 0.7; 0.7 1 0.7; 0.7 0.7 1]); % رنگ‌های متمایز
hold on;
gscatter(X(:,1), X(:,2), y, 'rbg', 'o', 5, 'filled'); % نقاط داده
xlabel('طول کاسبرگ (cm)');
ylabel('عرض کاسبرگ (cm)');
title('نواحی تصمیم‌گیری مدل AdaBoost (Iris)');
legend('Location', 'best');
hold off;

فکر خود را اینجا بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

زمینه‌های نمایش داده شده را انتخاب نمایید. بقیه مخفی خواهند شد. برای تنظیم مجدد ترتیب، بکشید و رها کنید.
  • تصویر
  • شناسۀ محصول
  • امتیاز
  • قيمت
  • موجودی
  • دسترسی
  • افزودن به سبد خرید
  • توضیح
  • محتوا
  • وزن
  • اندازه
  • اطلاعات اضافی
برای مخفی‌کردن نوار مقایسه، بیرون را کلیک نمایید
مقایسه