鱼C论坛

 找回密码
 立即注册
查看: 1577|回复: 0

[技术交流] 机器学习系列------投票分类器

[复制链接]
发表于 2018-6-21 06:12:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
        这次用一个新的数据,也是sklearn自带的数据库make_moons,这个数据集 是有许多个点组成的,有的点是第一类,有的点是第二类,输出项只有0和1两类,不像鸢尾花是3个种类,所以相对来说比较简单,我们先把数据分为训练集和测试集:
  1. from sklearn.datasets import make_moons
  2. from sklearn.model_selection import StratifiedShuffleSplit
  3. from sklearn.model_selection import StratifiedShuffleSplit

  4. X,y=make_moons(n_samples=500, shuffle=True, noise=0.3, random_state=42)

  5. split=StratifiedShuffleSplit(n_splits=1,test_size=0.2,random_state=42)
  6. for train_index,test_index in split.split(X,y):
  7.     X_train=X[train_index]
  8.     X_test=X[test_index]
  9.     y_train=y[train_index]
  10.     y_test=y[test_index]
复制代码

        然后做一个投票分类器的模型:
  1. from sklearn.ensemble import RandomForestClassifier
  2. from sklearn.ensemble import VotingClassifier
  3. from sklearn.linear_model import LogisticRegression
  4. from sklearn.svm import SVC

  5. log_clf=LogisticRegression()
  6. rnd_clf=RandomForestClassifier()
  7. svm_clf=SVC(probability=True)

  8. voting_clf=VotingClassifier(
  9.     estimators=[('lr',log_clf),('rf',rnd_clf),('svc',svm_clf)],
  10.     voting='soft'
  11. )
  12. voting_clf.fit(X_train,y_train)
复制代码

        投票分类器是由许多个分类器组合成的,精确度和稳定性会有所提高,我们看看预测数据:
  1. from sklearn.metrics import accuracy_score
  2. for clf in (log_clf,rnd_clf,svm_clf,voting_clf):
  3.     clf.fit(X_train,y_train)
  4.     y_pred=clf.predict(X_test)
  5.     print(clf.__class__.__name__,accuracy_score(y_test,y_pred))
复制代码

        以上为4种分类器的预测得分,输出为:
LogisticRegression 0.81
RandomForestClassifier 0.88
SVC 0.9
VotingClassifier 0.88
        可以看出第四种是投票分类器,虽然分数不是最高但是会很稳定,他是对其他分类器的综合评价得分。还有一种综合型的分类器也很好用:
  1. from sklearn.ensemble import BaggingClassifier
  2. from sklearn.tree import DecisionTreeClassifier

  3. bag_clf=BaggingClassifier(
  4.     DecisionTreeClassifier(),n_estimators=500,
  5.     max_samples=100,bootstrap=True,n_jobs=-1
  6. )
复制代码

        看看评分:
  1. bag_clf.fit(X_train,y_train)
  2. y_pred=bag_clf.predict(X_test)
  3. accuracy_score(y_test,y_pred)
复制代码

        输出为:0.93000000000000005。这个分数又高又稳定。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 18:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表