投票集成是集成学习技术中的一种,它通过结合多个不同的机器学习模型来提高预测的准确性。这种技术包括分类和回归两种类型。在分类问题中,投票分类器会使用多个不同的机器学习算法模型,每个模型都会对整个数据集进行训练和预测。所有模型对样本数据进行预测后,通常会采用多数投票策略来确定模型的最终预测结果。例如,如果三个模型预测为“是”,两个模型预测为“否”,则“是”将被视为模型的最终预测结果。
投票集成的实现方式
在分类问题中,可以直接使用VotingClassifier
类来实现投票集成,也可以手动实现。以下是使用VotingClassifier
类的示例代码:
from sklearn.ensemble import VotingClassifier
model1 = LogisticRegression(random_state=7)
model2 = tree.DecisionTreeClassifier(random_state=7)
model = VotingClassifier(estimators=[('lr', model1), ('dt', model2)])
model.fit(x_train,y_train)
在回归问题中,实现投票集成有两种方法:使用VotingRegressor
类和手动实现。以下是使用VotingRegressor
类的示例代码:
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import VotingRegressor
from sklearn.neighbors import KNeighborsRegressor
r1 = LinearRegression()
r2 = RandomForestRegressor(n_estimators=10, random_state=1)
r3 = KNeighborsRegressor()
rer = VotingRegressor([('lr', r1), ('rf', r2), ('r3', r3)])
手动实现投票集成通常涉及对多个模型的预测结果进行平均处理。以下是正常平均和加权平均的示例代码:
# 正常平均
model1 = tree.DecisionTreeClassifier()
model2 = KNeighborsClassifier()
model3= LogisticRegression()
model1.fit(x_train,y_train)
model2.fit(x_train,y_train)
model3.fit(x_train,y_train)
pred1=model1.predict_proba(x_test)
pred2=model2.predict_proba(x_test)
pred3=model3.predict_proba(x_test)
finalpred=(pred1+pred2+pred3)/3
# 加权平均
model1 = tree.DecisionTreeClassifier()
model2 = KNeighborsClassifier()
model3= LogisticRegression()
model1.fit(x_train,y_train)
model2.fit(x_train,y_train)
model3.fit(x_train,y_train)
pred1=model1.predict_proba(x_test)
pred2=model2.predict_proba(x_test)
pred3=model3.predict_proba(x_test)
finalpred=(pred1*0.3+pred2*0.3+pred3*0.4)