当前位置:   article > 正文

淘宝双十一数据的分析与预测_淘宝双11数据分析与预测实验报告

淘宝双11数据分析与预测实验报告
  • 实验目的

综合运用大数据分析生态中的相关组件,完成具有移动综合性的大数据分析任务,了解大数据分析的基本流程。

  • 实验平台
  1. 操作系统:Ubuntukylin-18.04
  2. Spark版本: 单机版2.4.0
  3. Hadoop版本: 单机版3.1.3
  4. JDK版本:1.8
  5. MySQL:5.7
  6. Python:3.6

、实验内容

数据集中有test.csv和train.csv两个文件。本次实验使用Spark的机器学习库进行简单的分类操作,并将测试结果存入MySQL数据库中。如下图所示,本实验内容涉及了数据预处理、数据分析以及大数据分析系统与数据库之间的联动

 

这里先列出test.csv和train.csv中字段的描述,字段定义如下:

  1. user_id | 买家id
  2. age_range | 买家年龄分段:1表示年龄小于18, 2表示年龄在[18,24],3表示年龄在[25,29],4表示年龄在[30,34],5表示年龄在[35,39],6表示年龄在[40,49],7和8表示年龄大于等于50, 0和NULL则表示未知
  3. gender | 性别: 0表示女性,1表示男性,2和NULL表示未知
  4. merchant_id | 商家id
  5. label | 是否是回头客,0值表示不是回头客,1值表示回头客,-1值表示该用户已经超出我们所需要考虑的预测范围。NULL值只存在测试集,在测试集中表示需要预测的值

四、实验步骤

  1. 环境配置
  • 虚拟机 + Ubuntu
  • 查看Ubuntu自带的Python版本
  • Spark + Hadoop
  • JDK
  • MySQL
  1. 数据集预处理
  • 去掉测试集test.csv中label是-1的数据
  • 去掉测试和训练数据集中表示字段名称的行(即第一行)
  • 将上述处理好的文件保存为:test_after.csv, train_after.csv
  1. 启动Hadoop
  • 在默认用户的根目录下创建dbtaobao子目录,并将解压后的训练集和测试集上传到HDFS的/dbtaobao/dataset目录下
  1. 启动MySQL服务
  • 创建数据库dbtaobao
  • 建立表格rebuy,包含score varchar(40), label varchar(40) 两个属性

使用以下命令安装MySQL:

sudo apt-get update

sudo apt-get install mysql-server -y

然后使用mysql --version查看版本

service mysql start

mysql -u root -p

create database dbtaobao;

use dbtaobao;

create table rebuy (score varchar(40),label varchar(40));

select * from rebuy

quit;

  1. 启动pyspark
  • 需提前安装numpy(请注意numpy版本与python版本的匹配)
  • 提前配置好spark与MySQL的JDBC驱动
  • 启动pyspark
  1. 使用支持向量机SVM分类器预测回头客
  • 导入需要的包,包括pyspark.mllib中相关的包,pyspark.sql中相关的包等
  • 从HDFS读取训练数据
  • 构建模型
  • 评估模型
  • 把结果添加到mysql数据库中
  • 代码如下
  1. from pyspark.ml.classification import LinearSVC
  2. from pyspark.ml.linalg import Vectors
  3. from pyspark.sql import SparkSession,Row
  4. from pyspark.ml.evaluation import MulticlassClassificationEvaluator
  5. def splitDF(x):
  6.     rel={}
  7.     rel['features']=Vectors.dense(int(x[0]),int(x[1]),int(x[2]),int(x[3]))
  8.     rel['label']=int(x[4])
  9.     return rel
  10. spark=SparkSession.builder.master("local").appName("double11").getOrCreate()
  11. training = spark.sparkContext.textFile("hdfs://localhost:9000dbtaobao/dataset/train_after.csv").map(lambda line:line.split(',')).map(lambda p:Row(**splitDF(p))).toDF()
  12. testing = spark.sparkContext.textFile("hdfs://localhost:9000dbtaobao/dataset/test_after.csv").map(lambda line:line.split(',')).map(lambda p:Row(**splitDF(p))).toDF()
  13. dsvc = LinearSVC(maxIter=10, regParam=0.1).setFeaturesCol("label").setFeaturesCol('features')
  14. dsvcModel = dsvc.fit(training)
  15. dsvcPredictions=dsvcModel.transform(testing)
  16. preRel=dsvcPredictions.select("prediction","label","features").collect()
  17. for item in preRel:
  18.     print(str(item['label'])+','+str(item['features'])+',prediction'+str(item['prediction']))
  19. #准确率
  20. evaluator=MulticlassClassificationEvaluator().setLabelCol("label").setPredictionCol("prediction")
  21. dAccuracy=evaluator.evaluate(dsvcPredictions)
  22. print(dAccuracy)

四、实验可能会出现的问题

1.python版本选取问题:

python2和python3.10以上的版本不推荐选择,目前最合适的Python版本推荐3.6,性能比较稳定。

2.numpy安装问题:

在安装numpy中遇到了无法安装的问题,可以考虑5G网络或者提前下载镜像源解压。

3.在启动pyspark时,遇到了问题:

./bin/pyspark: line 45: python: command not found

env: ‘python’: No such file or directory

在命令行输入Python不存在,输入Python3进入Python,因此需要配置Spark python的环境变量,在~/.bashrc文件中添加:

export PYTHONPATH                 = $SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.10-src.zip:$PYTHONPATH    

export PYSPARK_PYTHON=python3

然后source ~/.bashrc,再次启动pyspark就可以进入pyspark。

4.最后一行代码报错:

rebuyDF.write.jdbc("jdbc:mysql://localhost:3306/dbtaobao",'dbtaobao.rebuy','append', prop)

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

说明缺少mysql-connector-java-5.1.40-bin.jar包,但是之前明明已经解压到/usr/local/spark/jars中,这时才发现解压后是一个mysql-connector-java-5.1.40目录,mysql-connector-java-5.1.40-bin.jar在这个目录里面,将这个jar包复制到/usr/local/spark/jars中即可。

5.部分用户可能会出现内存硬盘容量不够扩容后的问题,例如

dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.

针对该类问题,需要重新进行系统初始化。

update source list,

sudo gedit /etc/apt/sources.list

sudo apt-get update

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/777763
推荐阅读
相关标签
  

闽ICP备14008679号