Spark机器学习库MLlib编程实践
一、实验目的
- 通过实验掌握基本的MLLib编程方法;
- 掌握用MLLib解决一些常见的数据分析问题,包括数据导入、成分分析和分类和预测等。
二、实验平台
- 新工科智慧平台。
- 数据集1:下载Adult数据集(http://archive.ics.uci.edu/ml/datasets/Adult),该数据集也可以从教学平台获取。
- 数据从美国1994年人口普查数据库抽取而来,可用来预测居民收入是否超过50K$/year。
- 该数据集类变量为年收入是否超过50k$,属性变量包含年龄、工种、学历、职业、人种等重要信息。
- 值得一提的是,14个属性变量中有7个类别型变量。
- 数据集2:鸢尾花数据集 150条鸢尾花数据集
三、实验内容和要求
3.1 居民收入数据分类
1.数据导入
- 从文件中导入数据,并转化为DataFrame。
- 在进行数据导入前,要先对所下载的adult数据集进行预处理(本次实验只用到了adult.data和adult.test两个文件)
- 处理1:两个文件最后的空行要删掉,不然会报错!!!
- 处理2:adult.test文件的第一行删掉,不然会报错!!
- 处理3:把adult.test文件中每一行最后的“.”删掉(直接替换即可),不然会报错!!!
- 处理1:两个文件最后的空行要删掉,不然会报错!!!
- 从文件中导入数据,并转化为DataFrame
from pyspark.ml.feature import PCA
from pyspark.shell import spark
from pyspark.sql import Row
from pyspark.ml.linalg import Vector, Vectors
from pyspark.ml.evaluation import MulticlassClassificationEvaluator
from pyspark.ml import Pipeline, PipelineModel
from pyspark.ml.feature import IndexToString, StringIndexer, VectorIndexer, HashingTF, Tokenizer
from pyspark.ml.classification import LogisticRegression
from pyspark.ml.classification import LogisticRegressionModel
from pyspark.ml.classification import BinaryLogisticRegressionSummary, LogisticRegression
from pyspark.sql import functions
from pyspark.ml.tuning import CrossValidator, ParamGridBuilder
def f(x):
rel = {
'features': Vectors.dense(float(x[0]), float(x[2]), float(x[4]), float(x[10]), float(x[11]), float(x[12])),
'label': str(x[14])}
return rel
df = spark.sparkContext.textFile("/Users/liuhao/MyProject/PycharmProject/Spark/Data/adult.data")\
.map(lambda line: line