Spark Python API Docs(part four)

pyspark.ml package

ML Pipeline APIs

基于DataFrame的机器学习API,使用户可以快速组装和配置实用的机器学习管道。

class pyspark.ml.Transformer

将一个数据集转换为另一个数据集的变换器抽象类。

  1. copy(extra=None)
    使用相同的uid和一些额外的参数创建此实例的副本。 默认实现使用copy.copy()创建一个浅拷贝,然后复制嵌入的和额外的参数并返回拷贝。 如果默认方法不够,子类应该重写此方法。
    Parameters: extra – 额外的参数复制到新的实例
    Returns: 这个实例的副本
  2. explainParam(param)
    解释单个参数,并以字符串形式返回其参数的名称、文档和可选的默认值以及用户提供的值。
  3. explainParams()
    返回所有参数的文档及其可选的默认值和用户提供的值。
  4. extractParamMap(extra=None)
    提取嵌入的默认参数值和用户提供的值,然后将它们与来自输入的额外值合并到平坦参数映射中,其中在存在冲突时使用后者的值,即,在排序时使用:默认参数值<用户提供值<extra。
    Parameters: extra – 额外的参数值
    Returns: merged param map
  5. getOrDefault(param)
    获取参数的值从用户提供的参数映射或其默认值。 如果没有设置,则会引发错误。
  6. getParam(paramName)
    通过名字得到一个参数。
  7. hasDefault(param)
    检查该参数是否有默认值。
  8. hasParam(paramName)
    试此实例是否包含具有给定(字符串)名称的参数。
  9. isDefined(param)
    检查参数是否由用户明确设置或具有默认值。
  10. isSet(param)
    检查参数是否由用户明确设置。
  11. params
    返回按名称排序的所有参数。 默认实现使用dir()来获取Param类型的所有属性。
  12. transform(dataset, params=None)
    使用可选参数来转换输入的数据集。
    Parameters:
  • dataset – 输入数据集,它是pyspark.sql.DataFrame的一个实例
  • params – 一个可选的参数映射,覆盖嵌入参数。
    Returns: 转换后的数据集

class pyspark.ml.Estimator

适合数据模型的估计器抽象类。

  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. fit(dataset, params=None)
    使用可选参数将模型拟合到输入数据集。
    Parameters:
  • dataset – 输入数据集,它是pyspark.sql.DataFrame的一个实例
  • params – 一个可选的参数映射,覆盖嵌入参数。 如果给出了参数映射的列表/元组,则调用每个参数映射上的拟合并返回模型列表。
    Returns: 拟合模型
  1. getOrDefault(param)
  2. getParam(paramName)
  3. hasDefault(param)
  4. hasParam(paramName)
  5. isDefined(param)
  6. isSet(param)
  7. params

class pyspark.ml.Model

用估计量拟合的模型抽象类。

  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. getOrDefault(param)
  6. getParam(paramName)
  7. hasDefault(param)
  8. hasParam(paramName)
  9. isDefined(param)
  10. isSet(param)
  11. params
  12. transform(dataset, params=None)

class pyspark.ml.Pipeline(self, stages=None)

一个简单的管道(pipeline),作为一个估计器(estimator)。 管道由一系列阶段(stage)组成,每个阶段是估算器(Estimator)或变换器(Transformer)。 当调用Pipeline.fit()时,阶段按顺序执行。 如果一个阶段是估算器,那么将在输入数据集上调用Estimator.fit()方法来拟合模型。 然后,将使用作为变换器的模型将数据集转换为下一阶段的输入。 如果一个阶段是一个Transformer,它的Transformer.transform()方法将被调用来产生下一个阶段的数据集。 Pipeline拟合的模型是一个PipelineModel,它由拟合的模型和变换器组成,与管道阶段相对应。 如果阶段是一个空列表,那么这个管道就像一个身份转换器。

  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. fit(dataset, params=None)
  6. getOrDefault(param)
  7. getParam(paramName)
  8. getStages()
    获取pipeline的阶段(stages)。
  9. hasDefault(param)
  10. hasParam(paramName)
  11. isDefined(param)
  12. isSet(param)
  13. classmethod load(path)
    从输入路径读取ML实例,read().load(path)的快捷方式。
  14. params
  15. classmethod read()
    返回此类的MLReader实例。
  16. save(path)
    将这个ML实例保存到给定的路径,write().save(path)的快捷方式。
  17. setParams(self, stages=None)
    设置管道的参数。
  18. setStages(value)
    设置管道的阶段。
  19. stages = Param(parent='undefined', name='stages', doc='a list of pipeline stages')
  20. write()
    为这个ML实例返回一个MLWriter实例。

class pyspark.ml.PipelineModel(stages)

表示一个带有变形器和拟合模型的编译管道。

  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. getOrDefault(param)
  6. getParam(paramName)
  7. hasDefault(param)
  8. hasParam(paramName)
  9. isDefined(param)
  10. isSet(param)
  11. classmethod load(path)
  12. params
  13. classmethod read()
  14. save(path)
  15. transform(dataset, params=None)
  16. write()

pyspark.ml.param module

class pyspark.ml.param.Param(parent, name, doc, typeConverter=None)

具有自包含文档的参数。

class pyspark.ml.param.Params

需要参数的组件。 还提供了一个内部参数映射来存储附加到实例的参数值。

  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. getOrDefault(param)
  6. getParam(paramName)
  7. hasDefault(param)
  8. hasParam(paramName)
  9. isDefined(param)
  10. isSet(param)
  11. params

class pyspark.ml.param.TypeConverters

  • Note: DeveloperApi
    Param.typeConverter常用类型转换函数的工厂方法。
  1. static identity(value)
    只是返回值的虚拟转换器。
  2. static toBoolean(value)
    如果可能,将值转换为布尔值。
  3. static toFloat(value)
    如果可能,将值转换为浮点数。
  4. static toInt(value)
    如果可能,将值转换为int。
  5. static toList(value)
    如果可能,将值转换为列表。
  6. static toListFloat(value)
    如果可能的话,将值转换为浮点型列表。
  7. static toListInt(value)
    如果可能,将值转换为整数列表。
  8. static toListString(value)
    如果可能,将值转换为字符串列表。
  9. static toString(value)
    如果可能,将值转换为字符串。
  10. static toVector(value)
    如果可能,将值转换为MLlib向量。

pyspark.ml.feature module

class pyspark.ml.feature.Binarizer(self, threshold=0.0, inputCol=None, outputCol=None)

对给定阈值的一列连续特征进行二值化。
Binarizer(ML提供的二元化方法)二元化涉及的参数有inputCol(输入)、outputCol(输出)以及threshold(阀值)。(输入的)特征值大于阀值将映射为1.0,特征值小于等于阀值将映射为0.0。(Binarizer)支持向量(Vector)和双精度(Double)类型的输出

>>> df = spark.createDataFrame([(0.5,)], ["values"])
>>> binarizer = Binarizer(threshold=1.0, inputCol="values", outputCol="features")
>>> binarizer.transform(df).head().features
0.0
>>> binarizer.setParams(outputCol="freqs").transform(df).head().freqs
0.0
>>> params = {binarizer.threshold: -0.5, binarizer.outputCol: "vector"}
>>> binarizer.transform(df, params).head().vector
1.0
>>> binarizerPath = "/user/root/binarizer"
>>> binarizer.save(binarizerPath)
>>> loadedBinarizer = Binarizer.load(binarizerPath)
>>> loadedBinarizer.getThreshold() == binarizer.getThreshold()
True
  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. getInputCol()
    获取inputCol的值或其默认值。
  6. getOrDefault(param)
  7. getOutputCol()
  8. getParam(paramName)
  9. getThreshold()
    获取阈值或其默认值。
  10. hasDefault(param)
  11. hasParam(paramName)
  12. inputCol = Param(parent='undefined', name='inputCol', doc='input column name.')
  13. isDefined(param)
  14. isSet(param)
  15. classmethod load(path)
  16. outputCol = Param(parent='undefined', name='outputCol', doc='output column name.')
  17. params
  18. classmethod read()
  19. save(path)
  20. setInputCol(value)
    设置inputCol的值。
  21. setOutputCol(value)
    设置outputCol的值。
  22. setParams(self, threshold=0.0, inputCol=None, outputCol=None)
    设置这个Binarizer的参数。
  23. setThreshold(value)
    设置阈值的值。
  24. threshold = Param(parent='undefined', name='threshold', doc='threshold in binary classification prediction, in range [0, 1]')
  25. transform(dataset, params=None)
  26. write()
    返回此ML实例的MLWriter实例。

class pyspark.ml.feature.BucketedRandomProjectionLSH(self, inputCol=None, outputCol=None, seed=None, numHashTables=1, bucketLength=None)

  • Note Experimental
    欧几里德距离度量的LSH类。 输入是密集的(dense)或稀疏的(sparse)矢量,每个矢量表示欧几里德距离空间中的一个点。 输出将是可配置维度的向量。 相同维度中的哈希值由相同的哈希函数计算。
    LSH(Locality Sensitive Hashing)翻译成中文,叫做“局部敏感哈希”,它是一种针对海量高维数据的快速最近邻查找算法。
>>> from pyspark.ml.linalg import Vectors
>>> from pyspark.sql.functions import col
>>> data = [(0, Vectors.dense([-1.0, -1.0 ]),),
...         (1, Vectors.dense([-1.0, 1.0 ]),),
...         (2, Vectors.dense([1.0, -1.0 ]),),
...         (3, Vectors.dense([1.0, 1.0]),)]
>>> df = spark.createDataFrame(data, ["id", "features"])
>>> brp = BucketedRandomProjectionLSH(inputCol="features", outputCol="hashes",
...                                   seed=12345, bucketLength=1.0)
>>> model = brp.fit(df)
>>> model.transform(df).head()
Row(id=0, features=DenseVector([-1.0, -1.0]), hashes=[DenseVector([-1.0])])
>>> data2 = [(4, Vectors.dense([2.0, 2.0 ]),),
...          (5, Vectors.dense([2.0, 3.0 ]),),
...          (6, Vectors.dense([3.0, 2.0 ]),),
...          (7, Vectors.dense([3.0, 3.0]),)]
>>> df2 = spark.createDataFrame(data2, ["id", "features"])
>>> model.approxNearestNeighbors(df2, Vectors.dense([1.0, 2.0]), 1).collect()
[Row(id=4, features=DenseVector([2.0, 2.0]), hashes=[DenseVector([1.0])], distCol=1.0)]
>>> model.approxSimilarityJoin(df, df2, 3.0, distCol="EuclideanDistance").select(
...     col("datasetA.id").alias("idA"),
...     col("datasetB.id").alias("idB"),
...     col("EuclideanDistance")).show()
+---+---+-----------------+
|idA|idB|EuclideanDistance|
+---+---+-----------------+
|  3|  6| 2.23606797749979|
+---+---+-----------------+
...
>>> brpPath = "/user/root/brp"
>>> brp.save(brpPath)
>>> brp2 = BucketedRandomProjectionLSH.load(brpPath)
>>> brp2.getBucketLength() == brp.getBucketLength()
True
>>> modelPath = "/user/root/brp-model"
>>> model.save(modelPath)
>>> model2 = BucketedRandomProjectionLSHModel.load(modelPath)
>>> model.transform(df).head().hashes == model2.transform(df).head().hashes
True

bucketLength = Param(parent='undefined', name='bucketLength', doc='每个哈希桶的长度,更大的桶降低了假阴性率。')

  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. fit(dataset, params=None)
    使用可选参数将模型拟合到输入数据集。
  6. getBucketLength()
    获取bucketLength的值或其默认值。
  7. getInputCol()
  8. getNumHashTables()
    获取numHashTables的值或其默认值。
  9. getOrDefault(param)
  10. getOutputCol()
  11. getParam(paramName)
  12. getSeed()
    获取种子的值或其默认值。
  13. hasDefault(param)
  14. hasParam(paramName)
    inputCol = Param(parent='undefined', name='inputCol', doc='输入列名称')
  15. isDefined(param)
  16. isSet(param)
  17. classmethod load(path)
    numHashTables = Param(parent='undefined', name='numHashTables', doc='哈希表的数量,散列表数量的增加降低了错误的否定率,并且降低它提高了运行性能')
    outputCol = Param(parent='undefined', name='outputCol', doc='输出列名称')
  18. params
  19. classmethod read()
  20. save(path)
    seed = Param(parent='undefined', name='seed', doc='随机种子')
  21. setBucketLength(value)
    设置bucketLength的值。
  22. setInputCol(value)
    设置inputCol的值。
  23. setNumHashTables(value)
    设置numHashTables的值。
  24. setOutputCol(value)
  25. setParams(self, inputCol=None, outputCol=None, seed=None, numHashTables=1, bucketLength=None)
    为此BucketedRandomProjectionLSH设置参数。
  26. setSeed(value)
    设置种子值。
  27. write()

class pyspark.ml.feature.BucketedRandomProjectionLSHModel(java_model=None)

  • Note Experimental
    模型由BucketedRandomProjectionLSH拟合,其中存储多个随机向量。向量被归一化为单位向量,并且每个向量被用在hash函数中hi(x)=floor(ri⋅x/bucketLength), ri是第i个随机单位向量。桶的数量将是(输入向量的最大L2范数)/ bucketLength。
  1. approxNearestNeighbors(dataset, key, numNearestNeighbors, distCol='distCol')
    给定一个大的数据集和一个项,最多可以找到距离这个项最近的k个项。 如果outputCol丢失,该方法将转换数据; 如果outputCol存在,它将使用它。 这可以在必要时缓存转换后的数据。
    Parameters:
  • dataset - 在数据集中来搜索key的最近邻居。
  • key - 表示要搜索的项的特征向量。
  • numNearestNeighbors - 最近邻居的最大数量。
  • distCol - 输出列用于存储每个结果行与键之间的距离。 如果没有指定,使用“distCol”作为默认值。
    Returns: 一个最多包含k个项目的数据集。 添加一列“distCol”以显示每一行与键之间的距离。
  1. approxSimilarityJoin(datasetA, datasetB, threshold, distCol='distCol')
    连接两个数据集以近似查找距离小于阈值的所有行对。 如果outputCol丢失,该方法将转换数据; 如果outputCol存在,它将使用它。 这可以在必要时缓存转换后的数据。
    Parameters:
  • datasetA - One of the datasets to join.
  • datasetB - Another dataset to join.
  • threshold - 行对距离的阈值。
  • distCol - 输出列用于存储每对行之间的距离。 如果没有指定,使用“distCol”作为默认值。
    Returns: 包含行对的连接数据集。 原始行在“datasetA”和“datasetB”列中,添加一列“distCol”以显示每对之间的距离。
  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. getOrDefault(param)
  6. getParam(paramName)
  7. hasDefault(param)
  8. hasParam(paramName)
  9. isDefined(param)
  10. isSet(param)
  11. classmethod load(path)
  12. params
  13. save(path)
  14. transform(dataset, params=None)
  15. write()

class pyspark.ml.feature.Bucketizer(self, splits=None, inputCol=None, outputCol=None, handleInvalid="error")

将一列连续特征映射到一列特征桶。
Bucketizer将一列连续的特征转换为特征区间,区间由用户指定。
splits:分裂数为n+1时,将产生n个区间。除了最后一个区间外,每个区间范围[x,y]由分裂的x,y决定。分裂必须是严格递增的。在分裂指定外的值将被归为错误。

>>> values = [(0.1,), (0.4,), (1.2,), (1.5,), (float("nan"),), (float("nan"),)]
>>> df = spark.createDataFrame(values, ["values"])
>>> bucketizer = Bucketizer(splits=[-float("inf"), 0.5, 1.4, float("inf")],
...     inputCol="values", outputCol="buckets")
>>> bucketed = bucketizer.setHandleInvalid("keep").transform(df).collect()
>>> len(bucketed)
6
>>> bucketed[0].buckets
0.0
>>> bucketed[1].buckets
0.0
>>> bucketed[2].buckets
1.0
>>> bucketed[3].buckets
2.0
>>> bucketizer.setParams(outputCol="b").transform(df).head().b
0.0
>>> bucketizerPath = "/user/root/bucketizer"
>>> bucketizer.save(bucketizerPath)
>>> loadedBucketizer = Bucketizer.load(bucketizerPath)
>>> loadedBucketizer.getSplits() == bucketizer.getSplits()
True
>>> bucketed = bucketizer.setHandleInvalid("skip").transform(df).collect()
>>> len(bucketed)
4
  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. getHandleInvalid()
    获取handleInvalid的值或其默认值。
  6. getInputCol()
  7. getOrDefault(param)
  8. getOutputCol()
  9. getParam(paramName)
  10. getSplits()
    获取阈值或其默认值。
    handleInvalid = Param(parent='undefined', name='handleInvalid', doc="如何处理无效条目。 选项是“skip”(过滤出具有无效值的行),“error”(抛出错误)或“keep”(将无效值保存在特殊的附加存储桶中)。")
  11. hasDefault(param)
  12. hasParam(paramName)
    inputCol = Param(parent='undefined', name='inputCol', doc='输入列名称')
  13. isDefined(param)
  14. isSet(param)
  15. classmethod load(path)
  16. params
  17. save(path)
  18. setHandleInvalid(value)
    设置handleInvalid的值。
  19. setInputCol(value)
  20. setOutputCol(value)
  21. setParams(self, splits=None, inputCol=None, outputCol=None, handleInvalid="error")
  22. setSplits(value)
    设置分割的值。
    splits = Param(parent='undefined', name='splits', doc='用于将连续特征映射到桶中的分割点。 用n + 1分割,有n个桶。 由分割x,y定义的存储区保存除最后一个存储分区(也包括y)之外的范围[x,y]中的值。 分割的长度应该大于等于3,并严格增加。 必须明确提供-inf,inf处的值以涵盖所有Double值; 否则,指定拆分之外的值将被视为错误。')
  23. transform(dataset, params=None)
  24. write()

class pyspark.ml.feature.ChiSqSelector(self, numTopFeatures=50, featuresCol="features", outputCol=None, labelCol="label", selectorType="numTopFeatures", percentile=0.1, fpr=0.05, fdr=0.05, fwe=0.05)

ChiSqSelector代表卡方特征选择。它适用于带有类别特征的标签数据。ChiSqSelector根据独立卡方检验,然后选取类别标签主要依赖的特征。它类似于选取最有预测能力的特征。

  • Note Experimental
    卡方特征选择,选择用于预测分类标签的分类特征。 选择器支持不同的选择方法:numTopFeatures,percentile,fpr,fdr,fwe。
  • numTopFeatures通过卡方检验选取最具有预测能力的Top(num)个特征。
  • percentile类似于上一种方法,但是选取一小部分特征而不是固定(num)个特征。
  • fpr选择P值低于门限值的特征,这样就可以控制false positive rate来进行特征选择。
  • fdr使用Benjamini-Hochberg过程来选择虚假发现率低于阈值的所有特征。
  • 我们选择p值低于阈值的所有特征。 阈值由1 / numFeatures缩放,从而控制选择的家庭错误率。
    默认情况下,选择方法是numTopFeatures,默认顶级要素数设置为50。
>>> from pyspark.ml.linalg import Vectors
>>> df = spark.createDataFrame(
...    [(Vectors.dense([0.0, 0.0, 18.0, 1.0]), 1.0),
...     (Vectors.dense([0.0, 1.0, 12.0, 0.0]), 0.0),
...     (Vectors.dense([1.0, 0.0, 15.0, 0.1]), 0.0)],
...    ["features", "label"])
>>> selector = ChiSqSelector(numTopFeatures=1, outputCol="selectedFeatures")
>>> model = selector.fit(df)
>>> model.transform(df).head().selectedFeatures
DenseVector([18.0])
>>> model.selectedFeatures
[2]
>>> chiSqSelectorPath ="/user/root/chi-sq-selector"
>>> selector.save(chiSqSelectorPath)
>>> loadedSelector = ChiSqSelector.load(chiSqSelectorPath)
>>> loadedSelector.getNumTopFeatures() == selector.getNumTopFeatures()
True
>>> modelPath = temp_path + "/chi-sq-selector-model"
>>> model.save(modelPath)
>>> loadedModel = ChiSqSelectorModel.load(modelPath)
>>> loadedModel.selectedFeatures == model.selectedFeatures
True
  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
    fdr = Param(parent='undefined', name='fdr', doc='预期错误发现率的上限。')
    featuresCol = Param(parent ='undefined',name ='featuresCol',doc ='功能列名称。')
  5. fit(dataset, params=None)
    fpr = Param(parent='undefined', name='fpr', doc='要保留的功能的最高p值.')
    fwe = Param(parent='undefined', name='fwe', doc='预期的家庭错误率的上限。')
  6. getFdr()
  7. getFeaturesCol()
  8. getFpr()
  9. getFwe()
  10. getLabelCol()
  11. getNumTopFeatures()
  12. getOrDefault(param)
  13. getOutputCol()
  14. getParam(paramName)
  15. getPercentile()
  16. getSelectorType()
  17. hasDefault(param)
  18. hasParam(paramName)
  19. isDefined(param)
  20. isSet(param)
    labelCol = Param(parent='undefined', name='labelCol', doc='标签列名称。')
  21. classmethod load(path)
    numTopFeatures = Param(parent='undefined', name='numTopFeatures', doc='选择器将选择的功能数量,按升序的p值排序。 如果要素的数量<numTopFeatures,那么这将选择所有要素。')
    outputCol = Param(parent='undefined', name='outputCol', doc='输出列名称。')
  22. params
    percentile = Param(parent='undefined', name='percentile', doc='选择器将选择的特征的百分位数,按升序p值排序。')
  23. classmethod read()
  24. save(path)
    selectorType = Param(parent='undefined', name='selectorType', doc=ChisqSelector的选择器类型。 支持的选项:numTopFeatures(默认),percentile和fpr。')
  25. setFdr(value)
  26. setFeaturesCol(value)
  27. setFpr(value)
  28. setFwe(value)
  29. setLabelCol(value)
  30. setNumTopFeatures(value)
  31. setOutputCol(value)
    setParams(self, numTopFeatures=50, featuresCol="features", outputCol=None, labelCol="labels", selectorType="numTopFeatures", percentile=0.1, fpr=0.05, fdr=0.05, fwe=0.05)
  32. setPercentile(value)
  33. setSelectorType(value)
  34. write()

class pyspark.ml.feature.ChiSqSelectorModel(java_model=None)

由ChiSqSelector装配的模型。

  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. getOrDefault(param)
  6. getParam(paramName)
  7. hasDefault(param)
  8. hasParam(paramName)
  9. isDefined(param)
  10. isSet(param)
  11. classmethod load(path)
  12. params
  13. classmethod read()
  14. save(path)
  15. selectedFeatures
  16. transform(dataset, params=None)
  17. write()

class pyspark.ml.feature.CountVectorizer(self, minTF=1.0, minDF=1.0, vocabSize=1 << 18, binary=False, inputCol=None, outputCol=None)

从文档集合中提取词汇表并生成CountVectorizerModel。
CountVectorizer算法是将文本向量转换成稀疏表示的数值向量(字符频率向量)。CountVectorizer将会把频率高的单词排在前面。

>>> df = spark.createDataFrame(
...    [(0, ["a", "b", "c"]), (1, ["a", "b", "b", "c", "a"])],
...    ["label", "raw"])
>>> cv = CountVectorizer(inputCol="raw", outputCol="vectors")
>>> model = cv.fit(df)
>>> model.transform(df).show(truncate=False)
+-----+---------------+-------------------------+
|label|raw            |vectors                  |
+-----+---------------+-------------------------+
|0    |[a, b, c]      |(3,[0,1,2],[1.0,1.0,1.0])|
|1    |[a, b, b, c, a]|(3,[0,1,2],[2.0,2.0,1.0])|
+-----+---------------+-------------------------+
...
>>> sorted(model.vocabulary) == ['a', 'b', 'c']
True
>>> countVectorizerPath = "/count-vectorizer"
>>> cv.save(countVectorizerPath)
>>> loadedCv = CountVectorizer.load(countVectorizerPath)
>>> loadedCv.getMinDF() == cv.getMinDF()
True
>>> loadedCv.getMinTF() == cv.getMinTF()
True
>>> loadedCv.getVocabSize() == cv.getVocabSize()
True
>>> modelPath = "/count-vectorizer-model"
>>> model.save(modelPath)
>>> loadedModel = CountVectorizerModel.load(modelPath)
>>> loadedModel.vocabulary == model.vocabulary
True

binary = Param(parent='undefined', name='binary', doc='二进制切换来控制输出矢量值。 如果为真,则所有非零计数(应用minTF滤波器后)均设置为1.对于模拟二进制事件而非整数计数的离散概率模型非常有用。 默认为False')

  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. fit(dataset, params=None)
  6. getBinary()
  7. getInputCol()
  8. getMinDF()
  9. getMinTF()
  10. getOrDefault(param)
  11. getOutputCol()
  12. getParam(paramName)
  13. getVocabSize()
  14. hasDefault(param)
  15. hasParam(paramName)
    inputCol = Param(parent='undefined', name='inputCol', doc='输入列名称')
  16. isDefined(param)
  17. isSet(param)
  18. classmethod load(path)
    minDF = Param(parent='undefined', name='minDF', doc='指定词汇必须出现在词汇表中的最小数量的不同文档。 如果这是一个大于等于1的整数,则它指定该术语必须出现的文档数; 如果这是[0,1)中的双精度值,那么这指定了文档的分数。 默认1.0')
    minTF = Param(parent='undefined', name='minTF', doc="筛选以忽略文档中的罕见词语。 对于每个文档,频率/计数小于给定阈值的项被忽略。 如果这是一个大于等于1的整数,那么这指定了一个计数(该术语必须出现在文档中的次数); 如果这是[0,1)中的双精度值,那么这指定了一个分数(超出文档的标记计数)。 请注意,该参数仅用于CountVectorizerModel的转换,并不影响拟合。 默认1.0")
    outputCol = Param(parent='undefined', name='outputCol', doc='输出列名称.')
  19. params
  20. classmethod read()
  21. save(path)
  22. setBinary(value)
  23. setInputCol(value)
  24. setMinDF(value)
  25. setMinTF(value)
  26. setOutputCol(value)
  27. setParams(self, minTF=1.0, minDF=1.0, vocabSize=1 << 18, binary=False, inputCol=None, outputCol=None)
  28. setVocabSize(value)
    vocabSize = Param(parent='undefined', name='vocabSize', doc='词汇量的最大值。 默认1 << 18。')
  29. write()

class pyspark.ml.feature.CountVectorizerModel(java_model=None)

由CountVectorizer装配的模型。

  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. getOrDefault(param)
  6. getParam(paramName)
  7. hasDefault(param)
  8. hasParam(paramName)
  9. isDefined(param)
  10. isSet(param)
  11. classmethod load(path)
  12. params
  13. classmethod read()
  14. save(path)
  15. transform(dataset, params=None)
  16. vocabulary
  17. write()

class pyspark.ml.feature.DCT(self, inverse=False, inputCol=None, outputCol=None)\

特征变换器,采用一个实矢量的一维离散余弦变换。 在输入矢量上不执行零填充。 它返回一个表示DCT的相同长度的实矢量。 对返回矢量进行缩放,使得变换矩阵是单位的(又名缩放DCT-II)。
持续更新中。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342