import numpy as np from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.ensemble import StackingClassifier from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier from sklearn.neighbors import KNeighborsClassifier from sklearn.svm import SVC from sklearn.metrics import accuracy_score, confusion_matrix, classification_report data = load_iris() X = data.data y = data.target X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) base_models = [ ('decision_tree', DecisionTreeClassifier()), ('knn', KNeighborsClassifier()), ('svc', SVC(probability=True)) ] meta_model = LogisticRegression() stacking_model = StackingClassifier(estimators=base_models, final_estimator=meta_model, cv=5) stacking_model.fit(X_train, y_train) y_pred = stacking_model.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print(f"Accuracy: {accuracy * 100:.2f}%") print("Confusion Matrix:") print(confusion_matrix(y_test, y_pred)) print("Classification Report:") print(classification_report(y_test, y_pred))