2021年安徽省大数据与人工智能应用竞赛 大数据-本科组赛题第五部分spark mllib

文章目录

    • 1、请列出Hadoop中需要哪些配置文件,其作用是什么(5分)
    • 2、利用spark进行数据挖掘建模(15分)

1、请列出Hadoop中需要哪些配置文件,其作用是什么(5分)

答:
1)core-site.xml:
(1)fs.defaultFS:hdfs://cluster1(域名),这里的值指的是默认的HDFS路径 。
(2)hadoop.tmp.dir:/export/data/hadoop_tmp,这里的路径默认是NameNode、DataNode、secondaryNamenode等存放数据的公共目录。用户也可以自己单独指定这三类节点的目录。
(3)ha.zookeeper.quorum:hadoop101:2181,hadoop102:2181,hadoop103:2181,这里是ZooKeeper集群的地址和端口。注意,数量一定是奇数,且不少于三个节点 。
2)hadoop-env.sh: 只需设置jdk的安装路径,如:export JAVA_HOME=/usr/local/jdk。
3)hdfs-site.xml:
(1) dfs.replication:他决定着系统里面的文件块的数据备份个数,默认为3个。
(2) dfs.data.dir:datanode节点存储在文件系统的目录 。
(3) dfs.name.dir:是namenode节点存储hadoop文件系统信息的本地系统路径 。
4)mapred-site.xml:
mapreduce.framework.name: yarn指定mr运行在yarn上。
Hadoop的几个默认端口及其含义
1)dfs.namenode.http-address:50070
2)SecondaryNameNode辅助名称节点端口号:50090
3)dfs.datanode.address:50010
4)fs.defaultFS:8020 或者9000
5)yarn.resourcemanager.webapp.address:8088

2、利用spark进行数据挖掘建模(15分)

本题目只能使用 spark的ml相关技术,不得使用python的数据挖掘。
数据集:
客户流失已成为每个希望提高品牌忠诚度的公司重点关注的问题,本题目基于某电信公司流失客户数据集,将提供训练集和验证集供建模使用,请回复验证集数据的模型计算结果文件和建模过程文档。
a)回复 当前模型的查全率和查准率分别是多少
b)回复结果文件要求
结果文件请以逗号分隔符文本文件提供,包含以下字段:
1、用户标志
2、预测是否进入异常状态(1:异常状态;0-非异常状态)
c)建模过程文 档请以WORD文档形式提供,需要详细列出数据探索过程和建模思路。

数据说明:
字段名称 字段类型 中文名称和注释
USER_ID VARCHAR(16) 用户标志(两文件里的用户标志没有关联性)
FLOW DECIMAL(16) 当月流量(Byte)
FLOW_LAST_ONE DECIMAL(16) 上一月流量(Byte)
FLOW_LAST_TWO DECIMAL(16) 上两个月流量(Byte)
MONTH_FEE DECIMAL(18,2) 当月收入(元)
MONTHS_3AVG DECIMAL(18,2) 最近3个月平均收入(元)
BINDEXP_DATE DATE 绑定到期时间
PHONE_CHANGE INTEGER 当月是否更换终端
AGE INTEGER 年龄
OPEN_DATE DATE 开户时间
REMOVE_TAG CHARACTER(1) 用户状态(‘A’:正常,其他异常)(验证集中不提供此字段)

使用spark的describe函数来对训练集 数据探查,数据描述结果(每一列的最大值,最小值,最大值等数据描述信息)截图(1分):
2021年安徽省大数据与人工智能应用竞赛 大数据-本科组赛题第五部分spark mllib_第1张图片
使用spark的describe函数来对训练集 数据探查,数据描述结果(每一列的最大值,最小值,最大值等数据描述信息)截图(1分):
2021年安徽省大数据与人工智能应用竞赛 大数据-本科组赛题第五部分spark mllib_第2张图片
2021年安徽省大数据与人工智能应用竞赛 大数据-本科组赛题第五部分spark mllib_第3张图片
训练集数据处理 结果截图(3分):2021年安徽省大数据与人工智能应用竞赛 大数据-本科组赛题第五部分spark mllib_第4张图片
2021年安徽省大数据与人工智能应用竞赛 大数据-本科组赛题第五部分spark mllib_第5张图片
2021年安徽省大数据与人工智能应用竞赛 大数据-本科组赛题第五部分spark mllib_第6张图片
模型的查全率,查准率 结果截图(2分):
2021年安徽省大数据与人工智能应用竞赛 大数据-本科组赛题第五部分spark mllib_第7张图片
代码截图:2021年安徽省大数据与人工智能应用竞赛 大数据-本科组赛题第五部分spark mllib_第8张图片
2021年安徽省大数据与人工智能应用竞赛 大数据-本科组赛题第五部分spark mllib_第9张图片
2021年安徽省大数据与人工智能应用竞赛 大数据-本科组赛题第五部分spark mllib_第10张图片

2021年安徽省大数据与人工智能应用竞赛 大数据-本科组赛题第五部分spark mllib_第11张图片
在这里插入图片描述

预测 结果截图(3分):
2021年安徽省大数据与人工智能应用竞赛 大数据-本科组赛题第五部分spark mllib_第12张图片

  def main(args: Array[String]): Unit = {
    //创建spark环境
    val spark: SparkSession = SparkSession
      .builder()
      .appName("spark")
      .master("local[4]")
      .config("spark.sql.shuffle.partitions", 1)
      .getOrCreate()

    import spark.implicits._
    import org.apache.spark.sql.functions._


    val data: DataFrame = spark.read
      .format("csv")
      .option("header", "true")
      .load("data/预测集.csv")
    data.printSchema()
    data.show()


    val data1: DataFrame = data.map(row => {

      val USER_ID: Double = row.getAs[String]("USER_ID").toDouble
      val FLOW: Double = row.getAs[String]("FLOW").toDouble
      val FLOW_LAST_ONE: Double = row.getAs[String]("FLOW_LAST_ONE").toDouble
      val FLOW_LAST_TWO: Double = row.getAs[String]("FLOW_LAST_TWO").toDouble
      val MONTH_FEE: Double = row.getAs[String]("MONTH_FEE").toDouble
      val MONTHS_3AVG: Double = row.getAs[String]("MONTHS_3AVG").toDouble
      val BINDEXP_DATE: Double = row.getAs[String]("BINDEXP_DATE").toDouble
      val PHONE_CHANGE: Double = row.getAs[String]("PHONE_CHANGE").toDouble
      val AGE: Double = row.getAs[String]("AGE").toDouble
      val OPEN_DATE: Double = row.getAs[String]("OPEN_DATE").toDouble

      //特征值
      val array: Array[Double] = Array(USER_ID, FLOW, FLOW_LAST_ONE, FLOW_LAST_TWO, MONTH_FEE, MONTHS_3AVG, BINDEXP_DATE, PHONE_CHANGE, AGE, OPEN_DATE)
      //将特征值转成向量

      val features: linalg.Vector = Vectors.dense(array)
      Tuple1(features)


    }).toDF("features")


    //加载模型
    val mode1: LogisticRegression = LogisticRegression.load("data/model")
    val proData: DataFrame = mode1.transform(data1)
    proData.show()
  }

}

建模过程,建模思路描述(6分):

你可能感兴趣的:(大数据,大数据,人工智能,spark-ml)