马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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。这个分数又高又稳定。 |