实验目的
1.掌握逻辑回归与决策树模型模型的原理及使用场景
2.掌握pyspark库使用
3.掌握模型预测结果保存的方法
实验背景
下面以鸾尾花数据集(Iris)为例进行分析,Iris 以鸾尾花的特征作为数据来源,数据集包含 150 个数据,分为 3 类,每类 50 个数据,每个数据包含 4 个属性,是在数据挖掘、数据分类中非常常用的测试集、训练集。为了便于理解,这里主要用后两个属性(花瓣的长度和宽度)来进行分类。
首先来看一下逻辑回归分类器。逻辑斯蒂回归(Logistic Regression)是统计学习中的经典分 类方法,属于对数线性模型。逻辑回归的因变量可以是二分类的,也可以是多分类的。
其次看一下决策树(Decision Tree)分类器,决策树是一种基本的分类与回归方法,这里主要介绍用于分类的决策树。决策树模式呈树形结构,其中每个内部节 点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。学习 时利用训练数据,根据损失函数最小化的原则建立决策树模型;预测时,对新的数据,利用 决策树模型进行分类。
实验原理
1.逻辑回归模决策树模型原理型的原理
2.使用pyspark进行模型的创建、训练、评估、保存
实验环境
ubuntu 16.04
Python 3.6
numpy 1.18.3
pandas 0.25.0
pyspark 2.4.4
实验步骤
下载数据
wget http://i9000.net:8888/sgn/HUP/spark/iris.txt
安装numpy库:
pip install numpy
首先来看一下逻辑回归分类器
打开终端,输入指令打开pyspark
pyspark
(1)导入本地向量 Vector 和 Vectors,导入所需要的类
from pyspark.ml.linalg import Vector,Vectors
from pyspark.sql import Row,functions
from pyspark.ml.evaluation import MulticlassClassificationEvaluator
from pyspark.ml import Pipeline
from pyspark.ml.feature import IndexToString,StringIndexer,VectorIndexer,HashingTF,Tokenizer
from pyspark.ml.classification import LogisticRegression,LogisticRegressionModel,BinaryLogisticRegressionSummary
(2)定制一个函数,来返回一个指定的数据,然后读取文本文件,第一个 map 把每行的数据用","隔开,如在数据集中,每行被分成了 5 部分,前 4 部分是鸾尾花的 4 个特征,最后一部分是鸾尾花的分类;这里把特征存储在 Vector 中,创建一个 Iris 模式的 RDD,然后转化成 dataframe;最后调用 show()方法来查看一下部分数据。
def f(x):
rel = {
}
rel['features']=Vectors.dense(float(x[0]),float(x[1]),float(x[2]),float(x[3]))
rel['label'] = str(x[4])
return rel
data = spark.sparkContext.textFile("/home/ubuntu/iris.txt").map(lambda line:line.split(',')