- 投票,少数服从多数
- 投票的一种分类器:Voting Classifier
加载数据集
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
X,y = datasets.make_moons(n_samples=500,noise=0.3,random_state=42)
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=666)
使用三种分类器,三种算法对同一数据集进行分类
#%% 逻辑回归
from sklearn.linear_model import LogisticRegression
log_clf = LogisticRegression()
log_clf.fit(X_train,y_train)
log_clf.score(X_test,y_test)
结果:0.824
#%% SVM
from sklearn.svm import SVC
svm_clf = SVC()
svm_clf.fit(X_train,y_train)
svm_clf.score(X_test,y_test)
结果:0.856
#%% 决策树
from sklearn.tree import DecisionTreeClassifier
dt_clf = DecisionTreeClassifier()
dt_clf.fit(X_train,y_train)
dt_clf.score(X_test,y_test)
结果:0.832
手动将三种分类器结合起来
y_predict1 = log_clf.predict(X_test)
y_predict2 = svm_clf.predict(X_test)
y_predict3 = dt_clf.predict(X_test)
y_predict = np.array((y_predict1 + y_predict2 + y_predict3) >= 2,dtype='int')
from sklearn.metrics import accuracy_score
accuracy_score(y_test,y_predict)
结果:0.856
使用投票分类器
#%% 使用Voting Classifier(hard voting)
from sklearn.ensemble import VotingClassifier
voting_clf = VotingClassifier(estimators=[
('log_clf',LogisticRegression()),
('svm_clf',SVC()),
('dt_clf',DecisionTreeClassifier())
],voting='hard') # 'hard'意思是少数服从多数
voting_clf.fit(X_train,y_train)
voting_clf.score(X_test,y_test)
结果:0.864