from sklearn.ensemble import VotingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.model_selection import RandomizedSearchCV
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# Load the iris dataset
iris = load_iris()
X, y = iris.data, iris.target
# Split the data into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Create a list of base classifiers
base_classifiers = [
('svc', SVC()),
('dt', DecisionTreeClassifier())
]
# Create a voting classifier
voting_classifier = VotingClassifier(estimators=base_classifiers)
# Define the parameter space
param_dist = {'svc__C': [0.1, 1, 10],
'svc__kernel': ['linear', 'poly', 'rbf', 'sigmoid'],
'dt__max_depth': [2, 4, 6, 8],
'dt__min_samples_leaf': [1, 2, 3, 4]}
# Perform random search cross-validation
rs = RandomizedSearchCV(voting_classifier, param_distributions=param_dist, cv=5)
rs.fit(X_train, y_train)
# Evaluate the classifier
score = rs.score(X_test, y_test)
print("Score: ", score)
print("Best Parameters: ", rs.best_params_)