原文:
http://ihoge.cn/2018/sklearn-ensemble.html

随机森林分类预测泰坦尼尼克号幸存者

import pandas as pd
import numpy as npdef read_dataset(fname):data = pd.read_csv(fname, index_col=0)data.drop(['Name', 'Ticket', 'Cabin'], axis=1, inplace=True)lables = data['Sex'].unique().tolist()data['Sex'] = [*map(lambda x: lables.index(x) , data['Sex'])]lables = data['Embarked'].unique().tolist()data['Embarked'] = data['Embarked'].apply(lambda n: lables.index(n))data = data.fillna(0)return data
train = read_dataset('code/datasets/titanic/train.csv')from sklearn.model_selection import train_test_splity = train['Survived'].values
X = train.drop(['Survived'], axis=1).valuesX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
print("X_train_shape:", X_train.shape, " y_train_shape:", y_train.shape)
print("X_test_shape:", X_test.shape,"  y_test_shape:", y_test.shape)
X_train_shape: (712, 7)  y_train_shape: (712,)
X_test_shape: (179, 7)   y_test_shape: (179,)
****
from sklearn.ensemble import RandomForestClassifier
import timestart = time.clock()
entropy_thresholds = np.linspace(0, 1, 50)
gini_thresholds = np.linspace(0, 0.1, 50)
#设置参数矩阵:
param_grid = [{'criterion': ['entropy'], 'min_impurity_decrease': entropy_thresholds},{'criterion': ['gini'], 'min_impurity_decrease': gini_thresholds},{'max_depth': np.arange(2,10)},{'min_samples_split': np.arange(2,20)},{'n_estimators':np.arange(2,20)}]
clf = GridSearchCV(RandomForestClassifier(), param_grid, cv=5)
clf.fit(X, y)print("耗时:",time.clock() - start)
print("best param:{0}\nbest score:{1}".format(clf.best_params_, clf.best_score_))
耗时: 13.397480000000002
best param:{'min_samples_split': 10}
best score:0.8406285072951739
clf = RandomForestClassifier(min_samples_split=10)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)print("训练集得分:", clf.score(X_train, y_train))
print("测试集得分:", clf.score(X_test, y_test))
print("查准率:", metrics.precision_score(y_test, y_pred))
print("召回率:", metrics.recall_score(y_test, y_pred))
print("F1_score:", metrics.f1_score(y_test, y_pred))
训练集得分: 0.8974719101123596
测试集得分: 0.7988826815642458
查准率: 0.8082191780821918
召回率: 0.7283950617283951
F1_score: 0.7662337662337663

这次分别对模型的criterion,max_depth,min_samples_split,n_estimators四个参数进行了比较。

经过多次执行发现结果仍不是很稳定,最优参数集中在min_samples_split分别为8,10,12上

自助聚合算法预测泰坦尼尼克号幸存者

from sklearn.ensemble import BaggingClassifierclf = BaggingClassifier(n_estimators=50)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)print("训练集得分:", clf.score(X_train, y_train))
print("测试集得分:", clf.score(X_test, y_test))
print("查准率:", metrics.precision_score(y_test, y_pred))
print("召回率:", metrics.recall_score(y_test, y_pred))
print("F1_score:", metrics.f1_score(y_test, y_pred))
训练集得分: 0.9817415730337079
测试集得分: 0.7877094972067039
查准率: 0.7792207792207793
召回率: 0.7407407407407407
F1_score: 0.7594936708860759

Boosting正向激励算法预测泰坦尼尼克号幸存者

from sklearn.ensemble import AdaBoostClassifierclf = AdaBoostClassifier()
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)print("训练集得分:", clf.score(X_train, y_train))
print("测试集得分:", clf.score(X_test, y_test))
print("查准率:", metrics.precision_score(y_test, y_pred))
print("召回率:", metrics.recall_score(y_test, y_pred))
print("F1_score:", metrics.f1_score(y_test, y_pred))
训练集得分: 0.8300561797752809
测试集得分: 0.8156424581005587
查准率: 0.8076923076923077
召回率: 0.7777777777777778
F1_score: 0.7924528301886792

Extra Trees算法预测泰坦尼尼克号幸存者

from sklearn.ensemble import RandomForestClassifier
import timestart = time.clock()
entropy_thresholds = np.linspace(0, 1, 50)
gini_thresholds = np.linspace(0, 0.1, 50)
#设置参数矩阵:
param_grid = [{'criterion': ['entropy'], 'min_impurity_decrease': entropy_thresholds},{'criterion': ['gini'], 'min_impurity_decrease': gini_thresholds},{'max_depth': np.arange(2,10)},{'min_samples_split': np.arange(2,20)},{'n_estimators':np.arange(2,20)}]
clf = GridSearchCV(ExtraTreesClassifier(), param_grid, cv=5)
clf.fit(X, y)print("耗时:",time.clock() - start)
print("best param:{0}\nbest score:{1}".format(clf.best_params_, clf.best_score_))
耗时: 16.29516799999999
best param:{'min_samples_split': 12}
best score:0.8226711560044894
from sklearn.ensemble import ExtraTreesClassifierclf = ExtraTreesClassifier(min_samples_split=12from sklearn.ensemble import RandomForestClassifier
import timestart = time.clock()
entropy_thresholds = np.linspace(0, 1, 50)
gini_thresholds = np.linspace(0, 0.1, 50)
#设置参数矩阵:
param_grid = [{'criterion': ['entropy'], 'min_impurity_decrease': entropy_thresholds},{'criterion': ['gini'], 'min_impurity_decrease': gini_thresholds},{'max_depth': np.arange(2,10)},{'min_samples_split': np.arange(2,20)},{'n_estimators':np.arange(2,20)}]
clf = GridSearchCV(ExtraTreesClassifier(), param_grid, cv=5)
clf.fit(X, y)print("耗时:",time.clock() - start)
print("best param:{0}\nbest score:{1}".format(clf.best_params_, clf.best_score_)))
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)print("训练集得分:", clf.score(X_train, y_train))
print("测试集得分:", clf.score(X_test, y_test))
print("查准率:", metrics.precision_score(y_test, y_pred))
print("召回率:", metrics.recall_score(y_test, y_pred))
print("F1_score:", metrics.f1_score(y_test, y_pred))
训练集得分: 0.8932584269662921
测试集得分: 0.8100558659217877
查准率: 0.8405797101449275
召回率: 0.7160493827160493
F1_score: 0.7733333333333333

结论:

针对此数据集预测泰坦尼克号的结果对比中,Boosting正向激励算法性能最佳最稳定,其次是参数优化后的Extra Trees算法。

sklearn集合算法预测泰坦尼克号幸存者相关推荐

  1. 【阅读笔记】使用决策树预测泰坦尼克号幸存者实例 - scikit-learn机器学习

    文章目录 使用决策树预测泰坦尼克号幸存者实例 一.数据获取 二.数据探索 数据质量分析(缺失值.异常值.一致性) 三.数据预处理 四.数据建模 五.优化模型参数 使用决策树预测泰坦尼克号幸存者实例 代 ...

  2. sklearn机器学习(七)决策树预测泰坦尼克号幸存者

    接下来我们开始使用决策树来预测泰坦尼克号的辛存者名单. 其中的数据集是在kaggle上下载的taitanic的训练数据集. 以下一些特征为此人是否幸存做出了贡献. PassengerId:乘客的ID号 ...

  3. 极简sklearn-使用决策树预测泰坦尼克号幸存者

    泰坦尼克号幸存者数据集是kaggle竞赛中入门级的数据集,今天我们就来用决策树来预测下哪些人会成为幸存者. 数据集下载地址: https://download.csdn.net/download/ti ...

  4. 机器学习之路:python 集成分类器 随机森林分类RandomForestClassifier 梯度提升决策树分类GradientBoostingClassifier 预测泰坦尼克号幸存者...

    python3 学习使用随机森林分类器 梯度提升决策树分类 的api,并将他们和单一决策树预测结果做出对比 附上我的git,欢迎大家来参考我其他分类器的代码: https://github.com/l ...

  5. 编写KNN算法预测泰坦尼克号存活率

    1.读取文件:titanic3.csv 2.数据预处理 3.分析相关性,定义合适的特征变量 4.训练模型,得出存活率 首先引用库(没用的和有用的都在里面,需要你们自己去选择): from sklear ...

  6. 决策树——预测泰坦尼克号幸存者

    数据集解释: • Passengerld :乘客ID ,这是个顺序编号, 唯一地标识 乘客.这个特征和幸存与否无关,我们不使用这个特征 • Survived : 表示幸存者表示遇难.这个是我们的标注数 ...

  7. 特征工程实践:泰坦尼克号幸存者预测

    文章目录 泰坦尼克号幸存者预测 泰坦尼克号幸存者预测 数据集下载地址:https://www.kaggle.com/c/titanic/data . 本案例主要展示特征工程对数据集的处理方法,模型只选 ...

  8. sklearn决策树--泰坦尼克号幸存者预测

     决策树的原理即利用不同的最优特征选择方法,优先选择样本纯度最高的特征来进行样本分类.其中:   使用信息增益的决策树算法为 ID3:   使用信息增益率的决策树算法为 C4.5:   使用Gini指 ...

  9. Python数据挖掘项目:构建随机森林算法模型预测分析泰坦尼克号幸存者数据

    作者CSDN:进击的西西弗斯 本文链接:https://blog.csdn.net/qq_42216093/article/details/120196972 版权声明:本文为作者原创文章,未经作者同 ...

最新文章

  1. 理解java并发工具Phaser
  2. 左手菲尔兹右手突破奖,这个中国女婿其实是英国贵族?拿到300万奖金后他这样说……...
  3. 平方变换法提取载波MATLAB,毕业设计(论文)MPSK信号的载波同步算法研究与仿真.doc...
  4. 2021年中国云计算软件市场趋势报告、技术动态创新及2027年市场预测
  5. Activemq判断队列存活脚本(一)
  6. Java异常统一处理
  7. 如何实现扫码登陆 扫码登陆原理
  8. WCF Endpoint分类
  9. 黑金AX301 SDRAM读写
  10. 斯坦福大学NLP课程CS224N课第一次作业第一部分
  11. Element Plus的分页组件el-pagination显示英文
  12. 还在使用Window原始的CMD界面?教你一招进行界面完美优化
  13. word只读模式怎么改成编辑模式
  14. 荣耀magic5和vivox90参数对比 荣耀magic5和vivox90哪个好
  15. 计算机视觉相关网站整理
  16. 特征提取网络之Darknet
  17. Nexus因异常重启导致OrientDB数据库变为只读的问题修复
  18. 修改iOS工程的Organization Name
  19. 【SQL武林秘籍】零基础带你快速上手SQL语言
  20. 【转】Linux下定时删除指定目下n天前的文件

热门文章

  1. .NET 应用程序支持直接调用 WebAssembly 模块
  2. 程序员35岁不转型就退休,是真的吗?
  3. ASP.NET Core中使用GraphQL - 第一章 Hello World
  4. C# 中使用面向切面编程(AOP)中实践代码整洁
  5. DDD理论学习系列(9)-- 领域事件
  6. 详解CockroachDB事务处理系统
  7. 编写高效率的C#代码
  8. 编程语言的发展趋势及未来方向(2):声明式编程与DSL
  9. Python趣味编程---Python也会讲笑话
  10. Android studio之Error:(23, 17) Failed to resolve: junit:junit:4.12