pyspark之MLlib学习【加载和转换数据】(1)

pyspark系列文章是本人根据《PySpark实战指南》学习pyspark中学习笔记,这本书是一本译文,有些地方感觉有点小问题,不过在本人的这些笔记中都是亲自测试跑通后的小例子。仅作参考和学习。

1.概述

MLlib概括了单个核心机器学习功能:

  • 数据准备:特征提取、变换、选择、分类特征的散列和一些自然语言处理方法。
  • 机器学习算法:实现了一些流行和高级的回归,分类和聚类算法。
  • 使用程序:统计方法,如描述性统计、卡方检验、线性回归(稀疏稠密矩阵和向量)和模型评估方法。
2.加载和转换数据

虽然MLlib是着重为RDD和DStream设计的,但是为了方便转换数据,我们将读取数据并将其转换为DataFrame

  • 首先指定数据集的schema
from pyspark.sql import SparkSession
import pyspark.sql.types as typ
spark = SparkSession.builder.appName("mllibStudy").getOrCreate()
labels = [
    ('INFANT_ALIVE_AT_REPORT', typ.StringType()),
    ('BIRTH_YEAR', typ.IntegerType()),
    ('BIRTH_MONTH', typ.IntegerType()),
    ('BIRTH_PLACE', typ.StringType()),
    ('MOTHER_AGE_YEARS', typ.IntegerType()),
    ('MOTHER_RACE_6CODE', typ.StringType()),
    ('MOTHER_EDUCATION', typ.StringType()),
    ('FATHER_COMBINED_AGE', typ.IntegerType()),
    ('FATHER_EDUCATION', typ.StringType()),
    ('MONTH_PRECARE_RECODE', typ.StringType()),
    ('CIG_BEFORE', typ.IntegerType()),
    ('CIG_1_TRI', typ.IntegerType()),
    ('CIG_2_TRI', typ.IntegerType()),
    ('CIG_3_TRI', typ.IntegerType()),
    ('MOTHER_HEIGHT_IN', typ.IntegerType()),
    ('MOTHER_BMI_RECODE', typ.IntegerType()),
    ('MOTHER_PRE_WEIGHT', typ.IntegerType()),
    ('MOTHER_DELIVERY_WEIGHT', typ.IntegerType()),
    ('MOTHER_WEIGHT_GAIN', typ.IntegerType()),
    ('DIABETES_PRE', typ.StringType()),
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PySpark 中,使用 `pyspark.ml` 和 `pyspark.mllib` 包来进行机器学习任务。如果你需要拆分数据集,可以使用 `randomSplit()` 函数来实现。 下面是一个示例代码,其中我们使用 `pyspark.mllib` 中的 `LabeledPoint` 类型来表示每个样本,然后将数据集分成训练集和测试集,其中训练集占 70%,测试集占 30%。 ```python from pyspark import SparkContext from pyspark.mllib.regression import LabeledPoint from pyspark.mllib.linalg import Vectors # 初始化 SparkContext sc = SparkContext() # 数据集 data = sc.textFile("path/to/dataset").map(lambda line: line.split(",")).map(lambda vals: LabeledPoint(vals[-1], Vectors.dense(vals[:-1]))) # 将数据集按照 70%-30% 的比例拆分成训练集和测试集 train_data, test_data = data.randomSplit([0.7, 0.3], seed=123) # 关闭 SparkContext sc.stop() ``` 在这个示例中,我们假设数据集的最后一列为标签,剩余的列为特征。首先,我们使用 `textFile()` 函数数据集,然后使用 `map()` 函数将每一行的值转换为 `LabeledPoint` 类型。最后,我们使用 `randomSplit()` 函数将数据集按照 70%-30% 的比例拆分成训练集和测试集,其中 `seed` 参数用于设置随机种子,保证每次运行结果的一致性。 需要注意的是,如果你使用 `pyspark.ml` 中的数据类型(如 `pyspark.ml.feature.VectorAssembler`),则需要使用 `randomSplit()` 函数的另一种版本,即 `DataFrame.randomSplit()`,具体使用方法可以参考 PySpark 官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值