应用分类算法,预测泰坦尼克号乘客幸存结果

  • 一、业务场景
  • 二、数据集说明
  • 三、操作步骤
    • 阶段一、启动HDFS、Spark集群服务和zeppelin服务器
    • 阶段二、准备案例中用到的数据集
    • 阶段三、对数据集进行探索和分析

未经许可,禁止以任何形式转载,若要引用,请标注链接地址
全文共计3832字,阅读大概需要3分钟

一、业务场景

受某咨询公司委托,拟根据泰坦尼克号乘客信息数据,来预测乘客在遇到海难时的幸存结果。经过分析,这是一个二元分类问题,因此决定使用逻辑回归算法进行预测分析。

二、数据集说明

本案例所使用的数据集,以CSV格式提供,有两个文件:train.csv和test.csv。其中train.csv文件包含label列。
  数据集路径:/data/dataset/ml/titanic/

三、操作步骤

阶段一、启动HDFS、Spark集群服务和zeppelin服务器

1、启动HDFS集群
  在Linux终端窗口下,输入以下命令,启动HDFS集群:

1.   $ start-dfs.sh

2、启动Spark集群
  在Linux终端窗口下,输入以下命令,启动Spark集群:

1.   $ cd /opt/spark
2.  $ ./sbin/start-all.sh

3、启动zeppelin服务器
  在Linux终端窗口下,输入以下命令,启动zeppelin服务器:

1.   $ zeppelin-daemon.sh start

4、验证以上进程是否已启动
  在Linux终端窗口下,输入以下命令,查看启动的服务进程:

1.   $ jps

如果显示以下6个进程,则说明各项服务启动正常,可以继续下一阶段。

2288 NameNode
2402 DataNode
2603 SecondaryNameNode
2769 Master
2891 Worker
2984 ZeppelinServer

阶段二、准备案例中用到的数据集

1、将本案例要用到的数据集上传到HDFS文件系统的/data/dataset/ml/目录下。在Linux终端窗口下,输入以下命令:

1.   $ hdfs dfs -mkdir -p /data/dataset/ml
2.  $ hdfs dfs -put /data/dataset/ml/titanic /data/dataset/ml/

2、在Linux终端窗口下,输入以下命令,查看HDFS上是否已经上传了该数据集:

1.   $ hdfs dfs -ls /data/dataset/ml/

这时应该看到titanic文件夹及其中的数据集已经上传到了HDFS的/data/datset/ml/目录下。

阶段三、对数据集进行探索和分析

1、新建一个zeppelin notebook文件,并命名为titanic_project。
  2、读取数据源。在notebook单元格中,输入以下代码:

1.   // 使用Logistic回归算法预测Titanic乘客的存活率
2.  import org.apache.spark.ml.Pipeline
3.  import org.apache.spark.ml.feature.{VectorAssembler,StringIndexer}
4.  import org.apache.spark.ml.classification.LogisticRegression
5.  import org.apache.spark.ml.evaluation.BinaryClassificationEvaluator
6.       
7.  // 加载数据
8.  val file = "hdfs://localhost:9000/data/dataset/ml/titanic/train.csv"
9.  val titanic_data = spark.read.option("header", "true").option("inferSchema","true").csv(file)
10.      
11. println("乘客共有" + titanic_data.count() + "位")
12. titanic_data.show(5,false)

同时按下”【Shift+Enter】”键,执行以上代码,输出内容如下:

3、探索模式schema。在notebook单元格中,输入以下代码:

1.   titanic_data.printSchema

同时按下”【Shift+Enter】”键,执行以上代码,输出内容如下:

4、选择特征列。所提供的数据本身包含许多特征,不过我们只使用age、gender和ticket_class这三个属性作为特征。在notebook单元格中,输入以下代码:

1.   val titanic_data1 = titanic_data.select('Survived.as("label"), 'Pclass.as("ticket_class"),
2.  'Sex.as("gender"), 'Age.as("age")).filter('age.isNotNull)

同时按下”【Shift+Enter】”,执行以上代码。
  5、将数据集拆分成训练集(80%)和测试集(20%)。在notebook单元格中,输入以下代码:

1.   // 将数据分成训练集(80%)和测试集(20%)
2.  val Array(training, test) = titanic_data1.randomSplit(Array(0.8, 0.2))
3.       
4.  println(s"training count: ${training.count}, test count: ${test.count}")

同时按下”【Shift+Enter】”,执行以上代码,输出内容如下:

6、组建管道。在notebook单元格中,输入以下代码:

1.   // estimator(数据转换算法的estimator): 将gender字符串转换为数值
2.  val genderIndxr = new StringIndexer().setInputCol("gender").setOutputCol("genderIdx")
3.       
4.  // transfomer: 将这些特征组合成一个特征向量
5.  val assembler = new VectorAssembler().setInputCols(Array("ticket_class","genderIdx", "age"))
6.  .setOutputCol("features")
7.       
8.  // estimator(机器学习算法的estimator)family值:"auto"、"binomial"、"multinomial"
9.  val logisticRegression = new LogisticRegression().setFamily("binomial")
10.      
11. // 设置三个阶段的管道
12. val pipeline = new Pipeline().setStages(Array(genderIndxr, assembler, logisticRegression))

同时按下”【Shift+Enter】”,执行以上代码。
  7、拟合数据,训练模型。在notebook单元格中,输入以下代码:

1.   val model = pipeline.fit(training)

同时按下”【Shift+Enter】”,执行以上代码。
  8、使用训练出来的模型,对测试数据集进行预测。在notebook单元格中,输入以下代码:

1.   // 执行预测
2.  val predictions = model.transform(test)
3.  predictions.show(5,false)

同时按下【Shift+Enter】,执行以上代码,输出内容如下:

由以上输出内容可以看出,最后一列”prediction”即为预测结果列。
  9、执行模型性能的评估,默认的度量标准是ROC下面的面积。在notebook单元格中,输入以下代码:

1.   val evaluator = new BinaryClassificationEvaluator()
2.  evaluator.evaluate(predictions)

同时按下【Shift+Enter】,执行以上代码,输出内容如下:

注:每个人每次运行的结果可能不同,因为数据集是随机拆分的。
   BinaryClassificationEvaluator产生的度量值为0.86,对于只使用了三个特征,这算是一个很好的性能了。

— END —

应用分类算法,预测泰坦尼克号乘客幸存结果相关推荐

  1. ML之DT:基于DT算法对泰坦尼克号乘客数据集进行二分类(是否获救)预测

    ML之DT:基于DT算法对泰坦尼克号乘客数据集进行二分类(是否获救)预测 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 X_train, X_test, y_train, y_te ...

  2. 机器学习中的特征选择——决策树模型预测泰坦尼克号乘客获救实例

    在机器学习和统计学中,特征选择(英语:feature selection)也被称为变量选择.属性选择或变量子集选择.它是指:为了构建   模型而选择相关特征(即属性.指标)子集的过程.使用特征选择技术 ...

  3. sklearn集合算法预测泰坦尼克号幸存者

    原文: http://ihoge.cn/2018/sklearn-ensemble.html 随机森林分类预测泰坦尼尼克号幸存者 import pandas as pd import numpy as ...

  4. 人工智能第一课:使用分类算法预测糖尿病

    原文链接:https://mp.weixin.qq.com/s/nXFVTorYOm5LjRV5Cic2_w 如果你不能用数据表示你所知,那么说明你对它所知不多:如果你对它所知不多,那么你就无法控制它 ...

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

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

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

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

  7. 决策树模型之泰坦尼克号乘客是否生还预测

    泰坦尼克号乘客数据查验 import pandas as pd #利用pandas的read_csv模块直接从互联网收集泰坦尼克号乘客数据 titanic = pd.read_csv('http:// ...

  8. python预测糖尿病_使用机器学习的算法预测皮马印第安人糖尿病

    皮马印第安人糖尿病预测 pima_diabetes_analysis_and_prediction 文件夹: data --> 存储原始样本 和 数据清洗后的样本 data_analysis_a ...

  9. 机器学习--分类算法中单标签与多标签的问题

    目录 一 单标签问题(二分类算法进行预测单标签多分类) 1 ovo(one versus one,一对一) 2 ovr(one versus rest,一对多) 3 error correcting ...

最新文章

  1. luogu P1280 尼克的任务 序列DP
  2. Eclipse link方式安装反编译插件
  3. 王海峰发布百度智能云最新架构,推出AI中台和知识中台
  4. 4.04Day14递推、三元表达式、列表/字典推导式、匿名函数
  5. redis(一) 安装以及基本数据类型操作
  6. 贝叶斯分类器期望损失函数理解及衍生的全新理解
  7. 广度优先搜索(入门)
  8. Memcache所有方法及参数详解以及使用方法
  9. Exchange性能调优(上)
  10. POJ1742 Coins(DP)
  11. 钉钉机器人发送图片 python_python封装钉钉Webhook机器人消息发送逻辑
  12. java操作Excel的poi 遍历一个工作簿
  13. GNU make manual 翻译( 一百六十二)
  14. python进制转换大全
  15. cada0图纸框_CAD图框尺寸大全
  16. 【ARM】Linux驱动移植
  17. UWB定位系统LinkPro
  18. 用例图、活动图、时序图、类图的详细介绍
  19. 用数据激活线下,更好玩的新营销来了
  20. yolov3运行及保存检测视频(包括摄像头)

热门文章

  1. 学生党什么蓝牙耳机比较适合?500左右高人气蓝牙耳机分享
  2. Vijos P1028魔族密码
  3. linux服务器批量文件上传,Windows定时任务下载linux服务器批量文件到本地
  4. 挂耳式耳机品牌排行榜,排行靠前的五款骨传导耳机推荐
  5. 解决Idea乱码问题 SpringBoot-yaml配置文件乱码问题
  6. 度量学习(Metric Learning)【AMSoftmax、Arcface】
  7. 你正在为互联网上的“免费”付出什么?
  8. ​男子用ChatGPT编假新闻被采取刑事强制措施;苹果M3芯片下半年量产;Safari超Edge,成第二大桌面浏览器|极客头条...
  9. python 接口是什么_python3中的接口类是什么?怎么用?
  10. 【 Apollo 】dreamview 无法启动