SparkMLib 编程基础
实验目的:
- 通过实验掌握Spark MLlib 的基本编程方法;
- 熟悉spark与数据挖掘和机器学习的综合使用;
实验内容:
数据从美国 1994 年人口普查数据 库抽取而来,可用来预测居民收入是否超过 50K / y e a r 。 该 数 据 集 类 变 量 为 年 收 入 是 否 超 过 50 k /year。该数据集类变量为年收入是否超过 50k /year。该数据集类变量为年收入是否超过50k,属性变量包含年龄、工种、学历、职业、人种等重要信息,值得一提的是,14 个属 性变量中有 7 个标签变量。
#step0.环境准备
from pyspark import SparkConf, SparkContext
from pyspark.sql import SparkSession
spark = SparkSession.builder.master('local[6]').appName('spark-ml').getOrCreate()
spark.sparkContext.setLogLevel('WARN')
#step1.从文件中导入数据adult.data.txt和测试数据adult.test.txt,并转化为 DataFrame
from pyspark.sql.types import *
# 设置schema
schema = StructType([
StructField('age', IntegerType()),
StructField('workclass', StringType()),
StructField('fnlwgt', IntegerType()),
StructField('education', StringType()),
StructField('educationNum', IntegerType()),
StructField('maritalStatus', StringType()),
StructField('occupation', StringType()),
StructField('relationship', StringType()),
StructField('race', StringType()),
StructField('sex', StringType()),
StructField('capitalGain', IntegerType()),
StructField('capitalLoss', IntegerType()),
StructField('hoursPerWeek', IntegerType()),
StructField('nativeCountry', StringType()),
StructField('50K', StringType())
])
adult_data_path = 'file:///home/chenE2000/code/pyspark/data/adult.data.csv'
adult_test_path = 'file:///home/chenE2000/code/pyspark/data/adult.test.csv'
# 读入rdd
adult_data = spark.read.csv(adult_data_path, header=False, schema=schema, ignoreLeadingWhiteSpace=True)
adult_test = spark.read.csv(adult_test_path, header=False, schema=schema, ignoreLeadingWhiteSpace=True)
不要忘记ignoreLeadingWhiteSpace参数 它可以有效地去除数据之前的空格
#step2.进行主成分分析(PCA)
对6个连续型的数值型变量进行主成分分析。PCA(主成分分析)是通过正交变换把一 组相关变量的观测值转化成一组线性无关的变量值,即主成分的一种方法。PCA 通过使用 主成分把特征向量投影到低维空间,实现对特征向量的降维。请通过setK()方法将主成分数 量设置为3,把连续型的特征向量转化成一个3维的主成分。
分析:
如下的features为连续值:
age fnlwgt educationNum capitalGain capitalLoss hoursPerWeek
from pyspark.ml