快速入门Python机器学习(26)
10.4 投票分类(Voting Classifier)
10.4.1 理论
模型 :A - 99%、B - 1%,表示模型 认为该样本是 A 类型的概率为 99%,为 B 类型的概率为 1%。
硬投票
Hard Voting | |||
---|---|---|---|
模型 | A得分 | B得分 | 获胜者 |
1 | 99% | 1% | A |
2 | 49% | 51% | B |
3 | 40% | 60% | B |
4 | 90% | 10% | A |
5 | 30% | 70% | B |
A:两票、B三票,B获胜 |
软投票
Soft Voting | ||
---|---|---|
模型 | A得分 | B得分 |
1 | 99% | 1% |
2 | 49% | 51% |
3 | 40% | 60% |
4 | 90% | 10% |
5 | 30% | 70% |
A:(99%+49%+40%+90%+30%)/5=61.6%B:(1%+51%+60%+10%+70%)/5=38.4%A获胜 |
10.4.2投票分类(Voting Classifier)
类参数、属性和方法
类
class sklearn.ensemble.VotingClassifier(estimators, *, voting='hard', weights=None, n_jobs=None, flatten_transform=True, verbose=False)
参数
属性 | 类型 | 解释 |
---|---|---|
voting | {'hard', 'soft'}, default='hard' | 如果'hard',则使用预测的类别标签进行多数规则投票。否则,如果为'soft',则根据预测概率之和的最大值预测类别标签,这是一组校准良好的分类器所推荐的。 |
属性
属性 | 类型 | 解释 |
---|---|---|
estimators_ | list of classifiers | 非“下降”估计量中定义的拟合子估计量的集合。 |
named_estimators_ | Bunch | 属性按名称访问任何合适的子估计量。 |
classes_ | array-like of shape (n_predictions,) | 类别标签。 |
方法
fit(X, y[, sample_weight]) | 拟合估计值。 |
---|---|
fit_transform(X[, y]) | 返回每个估计量的类别标签或概率。 |
get_params([deep]) | 从集合中获取估计量的参数。 |
predict(X) | 预测X的类标签。 |
score(X, y[, sample_weight]) | 返回给定测试数据和标签的平均准确度。 |
set_params(**params) | 从集合中设置估计器的参数。 |
transform(X) | 返回每个估计量的类标签或X的概率。 |
投票分类(Voting Classifier)分析
def My_VotingClassifier(mydata,title):
warnings.filterwarnings("ignore")
myutil = util()
if title=="两个月亮数据":
X, y = mydata
else:
X,y = mydata.data,mydata.target
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
votings=['hard','soft']
for voting in votings:
voting_clf = VotingClassifier(estimators=[('log_clf', LogisticRegression()),('svm_clf', SVC(probability=True)),('dt_clf', DecisionTreeClassifier(random_state=666))], voting=voting)
voting_clf.fit(X_train, y_train)
mytitle = title+" "+voting+"Voting训练"
myutil.print_scores(voting_clf,X_train,y_train,X_test,y_test,mytitle)
myutil.plot_learning_curve(VotingClassifier(estimators=[('log_clf', LogisticRegression()),('svm_clf', SVC(probability=True)),('dt_clf', DecisionTreeClassifier(random_state=666))], voting='hard'),X,y,mytitle)
myutil.show_pic(mytitle)
def call_VotingClassifier():
mydatas = [datasets.make_moons(n_samples=500, noise=0.3, random_state=42), datasets.load_iris(), datasets.load_wine(), datasets.load_breast_cancer()]
titles = ["两个月亮数据","鸢尾花数据","红酒数据","乳腺癌数据"]
for (mydata,title) in zip(mydatas, titles):
My_VotingClassifier(mydata,title)
分别用到:LogisticRegression、SVC和DecisionTreeClassifier
probability必须为true
输出
两个月亮数据 hardVoting训练:
93.60%
两个月亮数据 hardVoting训练:
90.40%
两个月亮数据 softVoting训练:
96.27%
两个月亮数据 softVoting训练:
90.40%
鸢尾花数据 hardVoting训练:
96.43%
鸢尾花数据 hardVoting训练:
100.00%
鸢尾花数据 softVoting训练:
100.00%
鸢尾花数据 softVoting训练:
100.00%
红酒数据 hardVoting训练:
98.50%
红酒数据 hardVoting训练:
95.56%
红酒数据 softVoting训练:
100.00%
红酒数据 softVoting训练:
95.56%
乳腺癌数据 hardVoting训练:
96.48%
乳腺癌数据 hardVoting训练:
96.50%
乳腺癌数据 softVoting训练:
97.89%
乳腺癌数据 softVoting训练:
95.80%
数据 | Hard | Soft |
---|---|---|
两个月亮数据 | 93.60% | 96.27% |
90.40% | 90.40% | |
鸢尾花数据 | 96.43% | 100.00% |
100.00% | 100.00% | |
红酒数据 | 98.50% | 100.00% |
95.56% | 95.56% | |
乳腺癌数据 | 96.48% | 97.89% |
96.50% | 95.80% |
相关文章
- Python 学习笔记 列表 排序 xxx XXX
- 《深入浅出Python机器学习》读书笔记 第一章 概述
- 快速入门Python机器学习(16)
- 快速入门Python机器学习(31)
- 超详细的80个Python入门实例,代码清晰拿来即用,学习提升必备「建议收藏」
- 快速入门Python机器学习(37)
- 快速入门Python机器学习(15)
- 快速入门Python机器学习(19)
- Python学习笔记(28)-Python读取word文本「建议收藏」
- Python学习系列:PyCharm CE 安装与测试
- 快速入门Python机器学习(30)
- 快速入门Python机器学习(32)
- 快速入门Python机器学习(22)
- 快速入门Python机器学习(18)
- 快速入门Python机器学习(12)
- 快速入门Python机器学习(36)
- 快速入门Python机器学习(24)
- Python 学习笔记 列表 range() xxx XXX
- 快速入门Python机器学习(27)
- 快速入门Python机器学习(11)