|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这次用一个新的数据,也是sklearn自带的数据库make_moons,这个数据集 是有许多个点组成的,有的点是第一类,有的点是第二类,输出项只有0和1两类,不像鸢尾花是3个种类,所以相对来说比较简单,我们先把数据分为训练集和测试集:
- from sklearn.datasets import make_moons
- from sklearn.model_selection import StratifiedShuffleSplit
- from sklearn.model_selection import StratifiedShuffleSplit
- X,y=make_moons(n_samples=500, shuffle=True, noise=0.3, random_state=42)
- split=StratifiedShuffleSplit(n_splits=1,test_size=0.2,random_state=42)
- for train_index,test_index in split.split(X,y):
- X_train=X[train_index]
- X_test=X[test_index]
- y_train=y[train_index]
- y_test=y[test_index]
复制代码
然后做一个投票分类器的模型:
- from sklearn.ensemble import RandomForestClassifier
- from sklearn.ensemble import VotingClassifier
- from sklearn.linear_model import LogisticRegression
- from sklearn.svm import SVC
- log_clf=LogisticRegression()
- rnd_clf=RandomForestClassifier()
- svm_clf=SVC(probability=True)
- voting_clf=VotingClassifier(
- estimators=[('lr',log_clf),('rf',rnd_clf),('svc',svm_clf)],
- voting='soft'
- )
- voting_clf.fit(X_train,y_train)
复制代码
投票分类器是由许多个分类器组合成的,精确度和稳定性会有所提高,我们看看预测数据:
- from sklearn.metrics import accuracy_score
- for clf in (log_clf,rnd_clf,svm_clf,voting_clf):
- clf.fit(X_train,y_train)
- y_pred=clf.predict(X_test)
- print(clf.__class__.__name__,accuracy_score(y_test,y_pred))
复制代码
以上为4种分类器的预测得分,输出为:
LogisticRegression 0.81
RandomForestClassifier 0.88
SVC 0.9
VotingClassifier 0.88
可以看出第四种是投票分类器,虽然分数不是最高但是会很稳定,他是对其他分类器的综合评价得分。还有一种综合型的分类器也很好用:
- from sklearn.ensemble import BaggingClassifier
- from sklearn.tree import DecisionTreeClassifier
- bag_clf=BaggingClassifier(
- DecisionTreeClassifier(),n_estimators=500,
- max_samples=100,bootstrap=True,n_jobs=-1
- )
复制代码
看看评分:
- bag_clf.fit(X_train,y_train)
- y_pred=bag_clf.predict(X_test)
- accuracy_score(y_test,y_pred)
复制代码
输出为:0.93000000000000005。这个分数又高又稳定。 |
|