应用分类算法,预测泰坦尼克号乘客幸存结果
应用分类算法,预测泰坦尼克号乘客幸存结果
- 一、业务场景
- 二、数据集说明
- 三、操作步骤
- 阶段一、启动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 —
应用分类算法,预测泰坦尼克号乘客幸存结果相关推荐
- ML之DT:基于DT算法对泰坦尼克号乘客数据集进行二分类(是否获救)预测
ML之DT:基于DT算法对泰坦尼克号乘客数据集进行二分类(是否获救)预测 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 X_train, X_test, y_train, y_te ...
- 机器学习中的特征选择——决策树模型预测泰坦尼克号乘客获救实例
在机器学习和统计学中,特征选择(英语:feature selection)也被称为变量选择.属性选择或变量子集选择.它是指:为了构建 模型而选择相关特征(即属性.指标)子集的过程.使用特征选择技术 ...
- sklearn集合算法预测泰坦尼克号幸存者
原文: http://ihoge.cn/2018/sklearn-ensemble.html 随机森林分类预测泰坦尼尼克号幸存者 import pandas as pd import numpy as ...
- 人工智能第一课:使用分类算法预测糖尿病
原文链接:https://mp.weixin.qq.com/s/nXFVTorYOm5LjRV5Cic2_w 如果你不能用数据表示你所知,那么说明你对它所知不多:如果你对它所知不多,那么你就无法控制它 ...
- 机器学习之路:python 集成分类器 随机森林分类RandomForestClassifier 梯度提升决策树分类GradientBoostingClassifier 预测泰坦尼克号幸存者...
python3 学习使用随机森林分类器 梯度提升决策树分类 的api,并将他们和单一决策树预测结果做出对比 附上我的git,欢迎大家来参考我其他分类器的代码: https://github.com/l ...
- 编写KNN算法预测泰坦尼克号存活率
1.读取文件:titanic3.csv 2.数据预处理 3.分析相关性,定义合适的特征变量 4.训练模型,得出存活率 首先引用库(没用的和有用的都在里面,需要你们自己去选择): from sklear ...
- 决策树模型之泰坦尼克号乘客是否生还预测
泰坦尼克号乘客数据查验 import pandas as pd #利用pandas的read_csv模块直接从互联网收集泰坦尼克号乘客数据 titanic = pd.read_csv('http:// ...
- python预测糖尿病_使用机器学习的算法预测皮马印第安人糖尿病
皮马印第安人糖尿病预测 pima_diabetes_analysis_and_prediction 文件夹: data --> 存储原始样本 和 数据清洗后的样本 data_analysis_a ...
- 机器学习--分类算法中单标签与多标签的问题
目录 一 单标签问题(二分类算法进行预测单标签多分类) 1 ovo(one versus one,一对一) 2 ovr(one versus rest,一对多) 3 error correcting ...
最新文章
- luogu P1280 尼克的任务 序列DP
- Eclipse link方式安装反编译插件
- 王海峰发布百度智能云最新架构,推出AI中台和知识中台
- 4.04Day14递推、三元表达式、列表/字典推导式、匿名函数
- redis(一) 安装以及基本数据类型操作
- 贝叶斯分类器期望损失函数理解及衍生的全新理解
- 广度优先搜索(入门)
- Memcache所有方法及参数详解以及使用方法
- Exchange性能调优(上)
- POJ1742 Coins(DP)
- 钉钉机器人发送图片 python_python封装钉钉Webhook机器人消息发送逻辑
- java操作Excel的poi 遍历一个工作簿
- GNU make manual 翻译( 一百六十二)
- python进制转换大全
- cada0图纸框_CAD图框尺寸大全
- 【ARM】Linux驱动移植
- UWB定位系统LinkPro
- 用例图、活动图、时序图、类图的详细介绍
- 用数据激活线下,更好玩的新营销来了
- yolov3运行及保存检测视频(包括摄像头)
热门文章
- 学生党什么蓝牙耳机比较适合?500左右高人气蓝牙耳机分享
- Vijos P1028魔族密码
- linux服务器批量文件上传,Windows定时任务下载linux服务器批量文件到本地
- 挂耳式耳机品牌排行榜,排行靠前的五款骨传导耳机推荐
- 解决Idea乱码问题 SpringBoot-yaml配置文件乱码问题
- 度量学习(Metric Learning)【AMSoftmax、Arcface】
- 你正在为互联网上的“免费”付出什么?
- ​男子用ChatGPT编假新闻被采取刑事强制措施;苹果M3芯片下半年量产;Safari超Edge,成第二大桌面浏览器|极客头条...
- python 接口是什么_python3中的接口类是什么?怎么用?
- 【 Apollo 】dreamview 无法启动