赞
踩
本内容都是基于ml-100k数据集操作
1 数据特征分析
- from pyspark.sql import SparkSession
- from pyspark.sql import Row
- import matplotlib.pyplot as plt
- import numpy as np
-
- spark = SparkSession.builder.appName("pyhton").config("spark.some.config.option","some-value").getOrCreate()
-
- sc = spark.sparkContext
- userrdd = sc.textFile("D:/hadoop/spark/ml-100k/u.user").map(lambda line:line.split("|"))
-
- df = userrdd.map(lambda field:Row(name=field[0],age=int(field[1]),gender=field[2],occupation=field[3],zip=field[4]))
-
- schemauser = spark.createDataFrame(df)
- schemauser.createOrReplaceTempView("user")
-
- age = spark.sql("select age from user")
- ages = age.rdd.map(lambda p:p.age).collect()
-
- plt.hist(ages,bins=20,color='lightblue',normed=True)
-
- # 选择用户职业数据
- count_occp = spark.sql("select occupation,count(occupation) as cnt from user group by occupation order by cnt")
- count_occp.show(5)
-
- # 获取职业名称及职业数 以及画出各职业总数图形
- # 把运行结果转为RDD
- x_axis = count_occp.rdd.map(lambda p:p.occupation).collect()
- y_axis = count_occp.rdd.map(lambda p:p.cnt).collect()
-
- pos = np.arange(len(x_axis))
- width = 1.0
-
- # 隐式新增一个figure,或为当前figure新增一个axes
-
- ax = plt.axes()
- # 设置x轴刻度
- ax.set_xticks(pos + (width / 2))
- # 为对应刻度打标签
- ax.set_xticklabels(x_axis)
- plt.bar(pos,y_axis,width,color='orange')
- # x轴上的标签旋转30度
- plt.xticks(rotation=90)
- # 获取当前figure的应用
- fig = plt.gcf()
-
- fig.set_size_inches(10,10)

输出:
用户年龄分布图
查看职业前五行数据
用户职业分布图
2 特征分布及相关性分析
3 对比分析
4数据可视化
5 数据预处理
数据预处理能够提高数据质量还能提高模型的性能。
数据预处理过程:数据清理、数据变换、数据集成、数据归约。
数据清理:它的主要任务是填补缺失值、光滑噪声数据、处理奇异数据、纠正错误数据、删除重复数据、删除唯一性属性、去除不相关字段或特征、处理不一致数据等。噪声数据的处理方法分为分箱、聚类等。
数据变换:对数据进行规范化、离散化、衍生指标、类别特征数值化、平滑噪声等都属于数据变换。
spark自带的数据变换算法:
数据预处理 | 算法 | 功能简介 |
特征提取 | TF-IDF | 统计文档的词频----逆向文件频率(TF-IDF) |
Word2Vec | 将文档转换为向量 | |
特征转换 | Tokenization | 将文本划分为独立个体 |
StopWordsRemover | 删除了所有停用词 | |
PCA | 使用PCA方法可以对变量集合进行降维 | |
StringIndexer | 将字符串列编码为标签索引列 | |
OneHotEncoder | 将标签指标映射为二值(0或1)向量 | |
Normalizer | 规范每个向量以具有单位范数 | |
StandardScaler | 标准化每个特征使得其具有统一的标准差以及均值为0,方差为1 | |
VectorAssembler | 将给定的多列表组合成一个单一的向量列 |
数据集成:是将多文件或者多数据库中的数据进行合并,然后存放在一个一致的数据存储中。它一般通过join、union或merge等关键字把两个或多个数据集放在一起。
spark sql中有三种join方法:
数据规约:通过数据规约技术删除或减少冗余属性(或维)、精简数据集等,使规约后的数据比原数据小,但仍然接近于保持原数据的完整性,且结果与规约前结果相同或几乎相同。
spark 自带的数据选择算法和功能简介:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。