![](https://img-blog.csdnimg.cn/20200826223207571.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
PySpark从入门到放弃
小白从头开始学习PySpark,入门大数据的第一步
Roc Huang
代码连接世界,Python创造未来!
展开
-
PySpark入门二十三:ML--随机森林
随机森林相关概念介绍随机森林随机森林是由许多决策树构成,是一种有监督学习方法,可以用于分类和回归,通过合并汇总来自个体决策树的结果来进行预测,采用多数选票作为分类结果,采用预测结果平均值作为回归结果。“随机”是针对森林中的每一颗决策树,有两种含义:1. 数据采样随机构建决策树的训练数据集通过有放回的随机采样,并且只会选择一定百分比的样本,这样可以在数据集合存在噪声点、异常点的情况下,有些决策树的构造过程中不会选择到这些噪声点、异常点从而达到一定的泛化作用在一定程度上抑制过拟合;2. 特征随机训原创 2020-09-17 22:22:45 · 1565 阅读 · 1 评论 -
PySpark入门二十二:ML--线性回归
ML–线性回归线性回归的总体目标是预测直线通过数据, 使每个点的垂直距离是最小的到该预测线。squared errors - 均方误差是反映估计量与被估计量之间差异程度的一种度量协方差(Covariance)在概率论和统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就原创 2020-09-16 23:16:31 · 1015 阅读 · 0 评论 -
PySpark入门二十一:ML机器学习之参数调优
网格搜索法这篇文章主要是接着上一篇文章来继续学习,如果感兴趣,请点击查看网格搜索法,是根据给定的评估指标,循环遍历定义的参数值列表,估计各个单独的模型,从而选择一个最优的模型。调整参数需要用到tuning这个包# 导包import pyspark.ml.tuning as tune# 指定模型和参数列表logistic = cl.LogisticRegression(labelCol='INFANT_ALIVE_AT_REPORT')grid = tune.ParamGridBuilde原创 2020-09-15 23:00:10 · 1207 阅读 · 0 评论 -
PySpark入门二十:ML预测婴儿生存几率--逻辑回归实践
ML建模之逻辑回归实操数据集可以点击此下载加载数据# 导包from pyspark.sql.session import SparkSessionfrom pyspark import SparkContextimport pyspark.sql.types as typ# 穿键spark通信sc = SparkContext.getOrCreate()spark = SparkSession(sc)# 这里采用了指定数据类型的方式创建DFlabels = [ ('INFA原创 2020-09-14 23:15:43 · 1077 阅读 · 4 评论 -
PySpark入门十九:ML评估器之回归与聚类
回归ML中可用于回归的有七种模型:AFTSurvivalRegression:适合加速失效时间回归模型。是一个参数化模型,假设其中一个特征的边际效应加速或减缓了预期寿命。适用于具有明确阶段的过程。DecisionTreeRegressor:类似于分类模型,明显不同的是其标签是连续的而不是多项的。GBTRegressor: 与 DecisionTreeRegressor 一样,区别在于标签的数据类型。GeneralizedLinearRegression: 广义线性回归是具有不同内核功能的线性模型原创 2020-09-13 17:56:51 · 424 阅读 · 0 评论 -
PySpark入门十八:ML之评估器
评估器评估器被视为需要评估的统计模型,对数据做预测或分类。包含了七种分类。评估器分类LogisticRegresssion: 逻辑斯蒂回归,实际作用于二分类场景;DecisionTreeClassifier: 决策树,适用于分类场景。maxDepth:限制树的深度,minInstancePerNode:树节点观察数据的最小数量,maxBins:参数指定连续变量将被分割的Bin的最大数量,impurity:测量并计算来自分割信息的度量;GBTClassifier: 用于分类的梯度提升决策树模型,集原创 2020-09-12 09:50:47 · 313 阅读 · 0 评论 -
PySpark入门十七:ML之转换器
ML介绍ML主要包含了三个类:转换器、评估器和管道。 那么今天着重学习的是转换器转换器转换器:顾名思义,通常通过将一个新列附加到DataFrame来转换数据。转换器类型在spark.ml.feature中提供许多转化器,下面会介绍常用的几个:Binarizer: 根据指定阈值将连续变量转化为对应的二进制;Bucketizer: 根据阈值范围将连续变量转化为多项值,即将连续变量离散化到指定的范围区间;ChiSqSelector: 卡方检验选择器(这个不知道大家怎么讲,我自己这样叫的)。顾名原创 2020-09-11 23:49:38 · 343 阅读 · 0 评论 -
PySpark入门十六:机器学习库ML和MLlib
ML和MLlib的联系和区别两个库都适用于机器学习,且可以满足大多数场景需求;Spark 在3.0版本后将会弃用MLlib 所以现在学习的同学们,可以直接学习ML就好了,不用学习MLlib了;ML主要操作的是DataFrame,而MLlib是处理的RDD对象,相比较而言,处理DataFrame会比处理RDD更加简洁和灵活。ML对DataFrame的抽象级别更高,数据和操作的耦合度很低;ML的操作可以使用pipeline,就像sklearn一样,把特征提取、算法等操作可以串起来,会非常的方便和流畅;原创 2020-09-10 22:52:15 · 834 阅读 · 0 评论 -
PySpark 入门十五:RDD的map和flatMap
RDD的map和flatMap最近约看约有些困惑这两个方法了,于是仔细查了一下,总结了以下的区别和联系区别map() 接收一个函数,把这个函数用于 RDD 中的每个元素,将函数的返回结果作为RDD 中对应元素的结果;flatMap()对RDD每个输入元素生成多个输出元素,我们提供给 flatMap() 的函数被分别应用到了输入 RDD 的每个元素上。这样看起来还是比较复杂,接下来举个非常简单的例子就非常明确了from pyspark import SparkContextfrom pys原创 2020-09-09 23:16:46 · 1960 阅读 · 0 评论 -
PySpark入门十四:数据可视化--直方图histogram
——直方图histogramhistogram(buckets)输入参数buckets可以是一个数字,也可以是一个列表输出结果为一个元组,元组包含两个列表分别是桶和直方图例如:对一个0到50的序列组成的列表,buckets是数字时# 生成rddrdd =sc.parallelize(range(51)).histogram(4)# 利用matplotlib 生成图表data = { 'bins': rdd[0][:-1], 'freq': rdd[1]}# {'bi原创 2020-09-08 23:34:00 · 3505 阅读 · 0 评论 -
PySpark入门十三:数据清洗之描述性统计
描述性统计描述性统计是熟悉数据的最直接的方法之一,可以让我们很轻松就知道数据中有多少个缺失的观测数据、平均值、标准差、最大最下值# 导包和创建连接的代码我就不写了# 加载数据类型模块import pyspark.sql.types as typ# 加载数据fraud = sc.textFile('./ccFraud.csv')header = fraud.first()# 删除标题行 并将每个元素转化为整形fraud = fraud.filter(lambda row: row !=原创 2020-09-07 23:33:33 · 1301 阅读 · 0 评论 -
PySpark入门十二:数据清洗之离群值
离群值的查找及处理构造数据# 导包from pyspark import SparkContextfrom pyspark.sql.session import SparkSession# 连接sc = SparkContext.getOrCreate()spark = SparkSession(sc)# 生成数据df_outliers = spark.createDataFrame([ (1, 144.5, 5.9, 33,), (2, 167.2, 5.4, 45,原创 2020-09-06 17:10:22 · 782 阅读 · 0 评论 -
PySpark入门十一:数据清洗之缺失值处理
缺失值处理在数据清洗中,查看缺失值、处理缺失值是非常重要的一个环节,通常对缺失值的处理是两种策略:删除和填充。接下来一起学习一下在PySpark中如何通过代码实现这两种操作。首先构建数据# 导包from pyspark import SparkContextfrom pyspark.sql.session import SparkSession# 创建连接sc = SparkContext.getOrCreate()spark = SparkSession(sc)# 构造数据df =原创 2020-09-05 23:19:42 · 4548 阅读 · 0 评论 -
PySpark入门十:数据清洗之去重
去重首先构建学习数据# 导包from pyspark import SparkContextfrom pyspark.sql.session import SparkSession# 创建连接sc = SparkContext.getOrCreate()spark = SparkSession(sc)# 生成数据df = spark.createDataFrame([ (1, 144.5, 5.9, 33, 'M'), (2, 167.2, 5.4, 45, 'M'),原创 2020-09-04 23:22:00 · 2840 阅读 · 0 评论 -
PySpark入门九:飞行数据案例
飞行数据案例此案例主要是为了熟悉dataframe的基础操作以及SQL语句的再熟悉,此案例的所有数据都可以从这里获得。话不多说,直接上代码# 导包from pyspark import SparkContextfrom pyspark.sql.session import SparkSession# 构造spark连接sc = SparkContext.getOrCreate()spark = SparkSession(sc)# 加载数据--从文件flightPath = './l原创 2020-09-03 23:07:51 · 663 阅读 · 0 评论 -
PySpark入门八:DataFrame 删及SQL操作
一、删1.1 删除列df.drop('age').collect()df.drop(df.age).collect()1.2 删除空值df = df.na.drop() # 删除任何列包含na的行df = df.dropna(subset=['col1', 'col2']) # 删掉col1或col2中任一一列包含na的行1.3 填充NAdf.fillna(-1)1.4 去重# 返回不包含重复行的dataframedf.distinct()# 指定字段去重df.sele原创 2020-09-02 22:55:01 · 966 阅读 · 0 评论 -
PySpark入门七:DataFrame的合并、分割
合并 join/union1.1 join# 1. 拼接两个dfdf3 = df1.union(df2)df.unionALL(df.limit(1))# 2. 根据条件拼接# 单字段df = df_left.join(df_right, df_left.key == df_right.key, "inner")# 多字段df1.join(df2, Seq("id", "name"))# 混合字段df1.join(df2, df1("id" ) === df2( "t1_id"))原创 2020-09-01 23:33:50 · 5328 阅读 · 0 评论 -
PySpark入门六:DataFrame常用方法(查/增)
一、查1.1 行元素操作打印行数据df.show()df.show(20)df.take(20)打印数据概要df.printSchema()df.describe().show()查行数、取别名、查null值# 查行数df.count()# 取别名df.select(df.age.alias('age_v'),'name')# 查询某列为null的行from pyspark.sql.functions import isnulldf = df.filter(isnull(原创 2020-08-31 23:23:54 · 556 阅读 · 0 评论 -
PySpark 入门五:DataFrame
一、DataFrame创建spark下创建dataframe 一般是通过SparkSession 导入数据来创建的# 导包from pyspark import SparkContextfrom pyspark.sql.session import SparkSession# 创建sessionsc = SparkContext.getOrCreate()spark = SparkSession(sc)在之前的文章中,我们已知了 RDD可以通过自己创建,也可以通过访问本地的文件系统获得。原创 2020-08-30 14:27:56 · 320 阅读 · 0 评论 -
PySpark入门四:常用函数(下)
leftOuterJoin()、join()、intersection()leftOuterJoin() 与pandas中的merge() 外连接方法功能相似。根据两个RDD中都有的值来连接,并返回RDD记录。当然这也是一个高开销的方法,需要谨慎使用。join()与内连接方法相似、intersection()查找两个RDD相等的元素。# 定义两个RDD 并连接rdd1 = sc.parallelize([('a', 1), ('b', 2), ('c', 3)])rdd2 = sc.paralle原创 2020-08-30 01:04:13 · 478 阅读 · 0 评论 -
PySpark入门三:常用的函数(上)
一、起步在jupyter notebook中如何使用pyspark? 打开Anaconda Prompt 并使用pip 安装好pyspark第三方库。pip install pyspark二、常用函数2.1 导包# 导包from pyspark import SparkContext# 创建会话sc = SparkContext.getOrCreate()2.2 创建RDD# 创建RDD 有两种方式# 1. parallelize()创建。这种方式创建的是ParallelCo原创 2020-08-30 00:21:45 · 669 阅读 · 0 评论 -
PySpark入门二:认识RDD
一、RDD介绍弹性分布式数据集,简称为RDD,是不可变JVM对象的分布式集合,Spark 就是围绕RDD而构建的。RDD对对象的作业是非常快速的执行的,这依赖于RDD的计算是依据缓存和存储在内存中的模式进行。RDD有两组并行操作:转换和动作。转换是指返回指向新RDD的指针;动作是指在运行计算后返回值。同时,RDD也有它惰性的一面,他们并不立即计算其结果,只有动作执行了,并且需要返回值时,才会进行计算转换。二、Schema与pandas的dataframe有所区别的是,spark的RDD是一种无s原创 2020-08-27 23:40:50 · 420 阅读 · 0 评论 -
PySpark入门第一课:环境安装
一、Python和Java安装由于我的电脑是已经安装好了Java–11.0.4,python–3.7的所以,这两个的安装我就直接跳过了,如果你电脑上没有安装这两个怎么办? 作为贴心小暖男的我,当然是为你们考虑的很周全了呀!Click这个神奇的超链接,你将看见完整的环境安装文档哟!没错,我的PySpark安装也是按照这个操作手册来做的!二、Spark安装2.1 下载文件点击此处访问Apache官网,如果你点击了这个链接,那么你将看到如下截图:而一般建议是版本选择2.1以上的,现在最新版本是3.0,原创 2020-08-26 23:40:23 · 382 阅读 · 0 评论