MLUtils ¶
-
class
pyspark.mllib.util.
MLUtils
[source] ¶ -
用于加载、保存和预处理MLlib中使用的数据的辅助方法。
新增于版本 1.0.0。
方法
appendBias
(数据)返回一个新的向量,并在输入向量的末尾附加 1.0 (偏置)。
convertMatrixColumnsFromML
(数据集, *列)将输入DataFrame中的矩阵列从 spark.ml 包中的新
pyspark.ml.linalg.Matrix
类型转换为pyspark.mllib.linalg.Matrix
类型。convertMatrixColumnsToML
(数据集, *列)将输入DataFrame中的矩阵列从
pyspark.mllib.linalg.Matrix
类型转换为 spark.ml 包下的新pyspark.ml.linalg.Matrix
类型。convertVectorColumnsFromML
(数据集, *列)将输入DataFrame中的向量列转换为
pyspark.mllib.linalg.Vector
类型,从 spark.ml 包中的新pyspark.ml.linalg.Vector
类型。convertVectorColumnsToML
(数据集, *列)将输入DataFrame中的向量列从
pyspark.mllib.linalg.Vector
类型转换为pyspark.ml.linalg.Vector
类型,该类型位于 spark.ml 包下。loadLabeledPoints
(sc, path[, minPartitions])加载使用 RDD.saveAsTextFile 保存的带标签的点。
loadLibSVMFile
(sc, 路径[, numFeatures, …])将标记数据以LIBSVM格式加载到LabeledPoint的RDD中。
loadVectors
(sc, path)加载使用 RDD[Vector].saveAsTextFile 保存的向量,并使用默认的分区数。
saveAsLibSVMFile
(数据, 目录)将标注数据保存为LIBSVM格式。
方法文档
-
static
appendBias
( data : pyspark.mllib.linalg.Vector ) → pyspark.mllib.linalg.Vector [source] ¶ -
返回一个新的向量,并在输入向量的末尾追加 1.0 (偏置)。
新增于版本 1.5.0。
-
static
convertMatrixColumnsFromML
( dataset : pyspark.sql.dataframe.DataFrame , * cols : str ) → pyspark.sql.dataframe.DataFrame [source] ¶ -
将输入DataFrame中的矩阵列转换为旧的
pyspark.mllib.linalg.Matrix
类型,而不是新的pyspark.ml.linalg.Matrix
类型,在 spark.ml 包下。新增于版本 2.0.0。
- Parameters
-
-
dataset
pyspark.sql.DataFrame
-
输入数据集
- *cols str
-
要转换的矩阵列。
旧矩阵列将被忽略。如果未指定,所有新矩阵列将被转换,除了嵌套的列。
-
dataset
- Returns
-
-
pyspark.sql.DataFrame
-
将新矩阵列转换为旧矩阵类型的输入数据集
-
示例
>>> import pyspark >>> from pyspark.ml.linalg import Matrices >>> from pyspark.mllib.util import MLUtils >>> df = spark.createDataFrame( ... [(0, Matrices.sparse(2, 2, [0, 2, 3], [0, 1, 1], [2, 3, 4]), ... Matrices.dense(2, 2, range(4)))], ["id", "x", "y"]) >>> r1 = MLUtils.convertMatrixColumnsFromML(df).first() >>> isinstance(r1.x, pyspark.mllib.linalg.SparseMatrix) True >>> isinstance(r1.y, pyspark.mllib.linalg.DenseMatrix) True >>> r2 = MLUtils.convertMatrixColumnsFromML(df, "x").first() >>> isinstance(r2.x, pyspark.mllib.linalg.SparseMatrix) True >>> isinstance(r2.y, pyspark.ml.linalg.DenseMatrix) True
-
static
convertMatrixColumnsToML
( dataset : pyspark.sql.dataframe.DataFrame , * cols : str ) → pyspark.sql.dataframe.DataFrame [source] ¶ -
将输入DataFrame中的矩阵列从
pyspark.mllib.linalg.Matrix
类型转换为新的pyspark.ml.linalg.Matrix
类型,位于 spark.ml 包下。新增于版本 2.0.0。
- Parameters
-
-
dataset
pyspark.sql.DataFrame
-
输入数据集
- *cols str
-
要转换的矩阵列。
新矩阵列将被忽略。如果未指定,所有旧矩阵列将被转换,除了嵌套的列。
-
dataset
- Returns
-
-
pyspark.sql.DataFrame
-
将旧矩阵列转换为新矩阵类型的输入数据集
-
示例
>>> import pyspark >>> from pyspark.mllib.linalg import Matrices >>> from pyspark.mllib.util import MLUtils >>> df = spark.createDataFrame( ... [(0, Matrices.sparse(2, 2, [0, 2, 3], [0, 1, 1], [2, 3, 4]), ... Matrices.dense(2, 2, range(4)))], ["id", "x", "y"]) >>> r1 = MLUtils.convertMatrixColumnsToML(df).first() >>> isinstance(r1.x, pyspark.ml.linalg.SparseMatrix) True >>> isinstance(r1.y, pyspark.ml.linalg.DenseMatrix) True >>> r2 = MLUtils.convertMatrixColumnsToML(df, "x").first() >>> isinstance(r2.x, pyspark.ml.linalg.SparseMatrix) True >>> isinstance(r2.y, pyspark.mllib.linalg.DenseMatrix) True
-
static
convertVectorColumnsFromML
( dataset : pyspark.sql.dataframe.DataFrame , * cols : str ) → pyspark.sql.dataframe.DataFrame [source] ¶ -
将输入DataFrame中的向量列转换为
pyspark.mllib.linalg.Vector
类型,从新的pyspark.ml.linalg.Vector
类型在 spark.ml 包下。新增于版本 2.0.0。
- Parameters
-
-
dataset
pyspark.sql.DataFrame
-
输入数据集
- *cols str
-
要转换的向量列。
旧的向量列将被忽略。如果未指定,所有新的向量列将被转换,除了嵌套的列。
-
dataset
- Returns
-
-
pyspark.sql.DataFrame
-
转换为旧向量类型的新向量列的输入数据集
-
示例
>>> import pyspark >>> from pyspark.ml.linalg import Vectors >>> from pyspark.mllib.util import MLUtils >>> df = spark.createDataFrame( ... [(0, Vectors.sparse(2, [1], [1.0]), Vectors.dense(2.0, 3.0))], ... ["id", "x", "y"]) >>> r1 = MLUtils.convertVectorColumnsFromML(df).first() >>> isinstance(r1.x, pyspark.mllib.linalg.SparseVector) True >>> isinstance(r1.y, pyspark.mllib.linalg.DenseVector) True >>> r2 = MLUtils.convertVectorColumnsFromML(df, "x").first() >>> isinstance(r2.x, pyspark.mllib.linalg.SparseVector) True >>> isinstance(r2.y, pyspark.ml.linalg.DenseVector) True
-
static
convertVectorColumnsToML
( dataset : pyspark.sql.dataframe.DataFrame , * cols : str ) → pyspark.sql.dataframe.DataFrame [source] ¶ -
将输入DataFrame中的向量列从
pyspark.mllib.linalg.Vector
类型转换为新的pyspark.ml.linalg.Vector
类型,位于 spark.ml 包下。新增于版本 2.0.0。
- Parameters
-
-
dataset
pyspark.sql.DataFrame
-
输入数据集
- *cols str
-
要转换的向量列。
新的向量列将被忽略。如果未指定,所有旧的向量列将被转换,除了嵌套的列。
-
dataset
- Returns
-
-
pyspark.sql.DataFrame
-
将旧向量列转换为新向量类型的输入数据集
-
示例
>>> import pyspark >>> from pyspark.mllib.linalg import Vectors >>> from pyspark.mllib.util import MLUtils >>> df = spark.createDataFrame( ... [(0, Vectors.sparse(2, [1], [1.0]), Vectors.dense(2.0, 3.0))], ... ["id", "x", "y"]) >>> r1 = MLUtils.convertVectorColumnsToML(df).first() >>> isinstance(r1.x, pyspark.ml.linalg.SparseVector) True >>> isinstance(r1.y, pyspark.ml.linalg.DenseVector) True >>> r2 = MLUtils.convertVectorColumnsToML(df, "x").first() >>> isinstance(r2.x, pyspark.ml.linalg.SparseVector) True >>> isinstance(r2.y, pyspark.mllib.linalg.DenseVector) True
-
static
loadLabeledPoints
( sc : pyspark.context.SparkContext , path : str , minPartitions : Optional [ int ] = None ) → pyspark.rdd.RDD [ LabeledPoint ] [source] ¶ -
加载使用 RDD.saveAsTextFile 保存的带标签的点。
新增于版本 1.0.0。
- Parameters
-
-
sc
pyspark.SparkContext
-
Spark 上下文
- path str
-
文件或目录路径在任何Hadoop支持的文件系统URI中
- minPartitions int, optional
-
分区最小数量
-
sc
- Returns
-
-
pyspark.RDD
-
标记数据存储为LabeledPoint的RDD
-
示例
>>> from tempfile import NamedTemporaryFile >>> from pyspark.mllib.util import MLUtils >>> from pyspark.mllib.regression import LabeledPoint >>> examples = [LabeledPoint(1.1, Vectors.sparse(3, [(0, -1.23), (2, 4.56e-7)])), ... LabeledPoint(0.0, Vectors.dense([1.01, 2.02, 3.03]))] >>> tempFile = NamedTemporaryFile(delete=True) >>> tempFile.close() >>> sc.parallelize(examples, 1).saveAsTextFile(tempFile.name) >>> MLUtils.loadLabeledPoints(sc, tempFile.name).collect() [LabeledPoint(1.1, (3,[0,2],[-1.23,4.56e-07])), LabeledPoint(0.0, [1.01,2.02,3.03])]
-
static
loadLibSVMFile
( sc : pyspark.context.SparkContext , path : str , numFeatures : int = - 1 , minPartitions : Optional [ int ] = None ) → pyspark.rdd.RDD [ LabeledPoint ] [source] ¶ -
将标记数据以LIBSVM格式加载到LabeledPoint的RDD中。LIBSVM格式是一种文本格式,由LIBSVM和LIBLINEAR使用。每行表示一个标记的稀疏特征向量,使用以下格式:
标签索引1:值1 索引2:值2 …
其中索引是从1开始且按升序排列。此方法将每一行解析为一个LabeledPoint,其中特征索引被转换为从0开始。
新增于版本 1.0.0。
- Parameters
-
-
sc
pyspark.SparkContext
-
Spark 上下文
- path str
-
文件或目录路径在任何Hadoop支持的文件系统URI中
- numFeatures int, optional
-
特征的数量,如果给定非正值,则将从输入数据中确定。这在数据集已经分割成多个文件并且您希望分别加载它们时很有用,因为某些特征可能不在某些文件中,这会导致特征维度不一致。
- minPartitions int, optional
-
最小分区数
-
sc
- Returns
-
-
pyspark.RDD
-
标记数据存储为LabeledPoint的RDD
-
示例
>>> from tempfile import NamedTemporaryFile >>> from pyspark.mllib.util import MLUtils >>> from pyspark.mllib.regression import LabeledPoint >>> tempFile = NamedTemporaryFile(delete=True) >>> _ = tempFile.write(b"+1 1:1.0 3:2.0 5:3.0\n-1\n-1 2:4.0 4:5.0 6:6.0") >>> tempFile.flush() >>> examples = MLUtils.loadLibSVMFile(sc, tempFile.name).collect() >>> tempFile.close() >>> examples[0] LabeledPoint(1.0, (6,[0,2,4],[1.0,2.0,3.0])) >>> examples[1] LabeledPoint(-1.0, (6,[],[])) >>> examples[2] LabeledPoint(-1.0, (6,[1,3,5],[4.0,5.0,6.0]))
-
static
loadVectors
( sc : pyspark.context.SparkContext , path : str ) → pyspark.rdd.RDD [ pyspark.mllib.linalg.Vector ] [source] ¶ -
加载使用 RDD[Vector].saveAsTextFile 保存的向量,并使用默认的分区数。
新增于版本 1.5.0。
-
static
saveAsLibSVMFile
( data : pyspark.rdd.RDD [ LabeledPoint ] , dir : str ) → None [source] ¶ -
将标注数据保存为LIBSVM格式。
新增于版本 1.0.0。
- Parameters
-
-
data
pyspark.RDD
-
要保存的 LabeledPoint 的 RDD
- dir str
-
保存数据的目录
-
data
示例
>>> from tempfile import NamedTemporaryFile >>> from fileinput import input >>> from pyspark.mllib.regression import LabeledPoint >>> from glob import glob >>> from pyspark.mllib.util import MLUtils >>> examples = [LabeledPoint(1.1, Vectors.sparse(3, [(0, 1.23), (2, 4.56)])), ... LabeledPoint(0.0, Vectors.dense([1.01, 2.02, 3.03]))] >>> tempFile = NamedTemporaryFile(delete=True) >>> tempFile.close() >>> MLUtils.saveAsLibSVMFile(sc.parallelize(examples), tempFile.name) >>> ''.join(sorted(input(glob(tempFile.name + "/part-0000*")))) '0.0 1:1.01 2:2.02 3:3.03\n1.1 1:1.23 3:4.56\n'
-
static