集成学习

137 阅读1分钟

VotingClassifier 是一个集成学习方法,通过结合多个分类器的预测结果,以投票的方式确定最终的分类结果。它主要有两种投票策略:

  1. 硬投票(Hard Voting):每个分类器对一个样本进行分类,投票时,选择获得最多票数的类别作为最终分类结果。
  2. 软投票(Soft Voting):每个分类器输出一个样本属于每个类别的概率,投票时,将所有分类器的概率加权求和,选择概率最大的类别作为最终分类结果。
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier, VotingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

# 加载数据集
data = load_iris()
X, y = data.data, data.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 定义基分类器
clf1 = LogisticRegression()
clf2 = RandomForestClassifier(n_estimators=50)
clf3 = SVC(probability=True)

# 定义 VotingClassifier,使用软投票
voting_clf = VotingClassifier(estimators=[('lr', clf1), ('rf', clf2), ('svc', clf3)], voting='soft')

# 训练模型
voting_clf.fit(X_train, y_train)

# 预测
y_pred = voting_clf.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Voting Classifier Accuracy: {accuracy:.4f}")