sklearn集合算法预测泰坦尼克号幸存者
原文:
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集合算法预测泰坦尼克号幸存者相关推荐
- 【阅读笔记】使用决策树预测泰坦尼克号幸存者实例 - scikit-learn机器学习
文章目录 使用决策树预测泰坦尼克号幸存者实例 一.数据获取 二.数据探索 数据质量分析(缺失值.异常值.一致性) 三.数据预处理 四.数据建模 五.优化模型参数 使用决策树预测泰坦尼克号幸存者实例 代 ...
- sklearn机器学习(七)决策树预测泰坦尼克号幸存者
接下来我们开始使用决策树来预测泰坦尼克号的辛存者名单. 其中的数据集是在kaggle上下载的taitanic的训练数据集. 以下一些特征为此人是否幸存做出了贡献. PassengerId:乘客的ID号 ...
- 极简sklearn-使用决策树预测泰坦尼克号幸存者
泰坦尼克号幸存者数据集是kaggle竞赛中入门级的数据集,今天我们就来用决策树来预测下哪些人会成为幸存者. 数据集下载地址: https://download.csdn.net/download/ti ...
- 机器学习之路:python 集成分类器 随机森林分类RandomForestClassifier 梯度提升决策树分类GradientBoostingClassifier 预测泰坦尼克号幸存者...
python3 学习使用随机森林分类器 梯度提升决策树分类 的api,并将他们和单一决策树预测结果做出对比 附上我的git,欢迎大家来参考我其他分类器的代码: https://github.com/l ...
- 编写KNN算法预测泰坦尼克号存活率
1.读取文件:titanic3.csv 2.数据预处理 3.分析相关性,定义合适的特征变量 4.训练模型,得出存活率 首先引用库(没用的和有用的都在里面,需要你们自己去选择): from sklear ...
- 决策树——预测泰坦尼克号幸存者
数据集解释: • Passengerld :乘客ID ,这是个顺序编号, 唯一地标识 乘客.这个特征和幸存与否无关,我们不使用这个特征 • Survived : 表示幸存者表示遇难.这个是我们的标注数 ...
- 特征工程实践:泰坦尼克号幸存者预测
文章目录 泰坦尼克号幸存者预测 泰坦尼克号幸存者预测 数据集下载地址:https://www.kaggle.com/c/titanic/data . 本案例主要展示特征工程对数据集的处理方法,模型只选 ...
- sklearn决策树--泰坦尼克号幸存者预测
决策树的原理即利用不同的最优特征选择方法,优先选择样本纯度最高的特征来进行样本分类.其中: 使用信息增益的决策树算法为 ID3: 使用信息增益率的决策树算法为 C4.5: 使用Gini指 ...
- Python数据挖掘项目:构建随机森林算法模型预测分析泰坦尼克号幸存者数据
作者CSDN:进击的西西弗斯 本文链接:https://blog.csdn.net/qq_42216093/article/details/120196972 版权声明:本文为作者原创文章,未经作者同 ...
最新文章
- 理解java并发工具Phaser
- 左手菲尔兹右手突破奖,这个中国女婿其实是英国贵族?拿到300万奖金后他这样说……...
- 平方变换法提取载波MATLAB,毕业设计(论文)MPSK信号的载波同步算法研究与仿真.doc...
- 2021年中国云计算软件市场趋势报告、技术动态创新及2027年市场预测
- Activemq判断队列存活脚本(一)
- Java异常统一处理
- 如何实现扫码登陆 扫码登陆原理
- WCF Endpoint分类
- 黑金AX301 SDRAM读写
- 斯坦福大学NLP课程CS224N课第一次作业第一部分
- Element Plus的分页组件el-pagination显示英文
- 还在使用Window原始的CMD界面?教你一招进行界面完美优化
- word只读模式怎么改成编辑模式
- 荣耀magic5和vivox90参数对比 荣耀magic5和vivox90哪个好
- 计算机视觉相关网站整理
- 特征提取网络之Darknet
- Nexus因异常重启导致OrientDB数据库变为只读的问题修复
- 修改iOS工程的Organization Name
- 【SQL武林秘籍】零基础带你快速上手SQL语言
- 【转】Linux下定时删除指定目下n天前的文件
热门文章
- .NET 应用程序支持直接调用 WebAssembly 模块
- 程序员35岁不转型就退休,是真的吗?
- ASP.NET Core中使用GraphQL - 第一章 Hello World
- C# 中使用面向切面编程(AOP)中实践代码整洁
- DDD理论学习系列(9)-- 领域事件
- 详解CockroachDB事务处理系统
- 编写高效率的C#代码
- 编程语言的发展趋势及未来方向(2):声明式编程与DSL
- Python趣味编程---Python也会讲笑话
- Android studio之Error:(23, 17) Failed to resolve: junit:junit:4.12