PySpark MLIB库机器学习实践

在本文中,将探索如何使用PySparkMLIB库来执行机器学习任务。MLIB库是PySpark的机器学习库,它提供了与Scikit-learn相似的机器学习算法。将通过一个完整的机器学习流程,包括数据读取、特征处理、模型训练和预测,来展示如何使用这个库。

启动Spark会话

在使用PySpark之前,需要设置并启动Spark会话。首先,需要从pyspark.sql包中导入SparkSession函数。

from pyspark.sql import SparkSession df_ml = SparkSession.builder.appName('机器学习示例').getOrCreate()

通过使用builder函数构建会话,并使用appName函数命名会话,最后使用getOrCreate()函数创建会话。

读取数据集

在读取数据之前,先了解一下数据集。这个数据集是来自Kaggle的银行票据认证数据集,包含了真实票据和假票据的统计信息。

特征列包括方差、偏度、峰度和熵,目标列是目标值。创建并设置SparkSession后,读取数据集并应用机器学习操作和数据预处理技术。

training_dataset = df_ml.read.csv('/content/bank_notes.csv', header=True, inferSchema=True)

使用read.csv()函数读取CSV格式的数据集,并设置header为True以获取列名,设置inferSchema为True以获取每列的真实数据类型。

查看数据集

使用show()函数,可以查看数据集的前20行。

training_dataset.show()

通过printSchema()函数,可以查看数据集的模式,即每列的数据类型和是否包含空值。

training_dataset.printSchema()

使用columns对象,可以查看数据集中有多少列,并以列表格式返回。

training_dataset.columns

特征向量组装器

特征向量组装器是一个工具,它将所有特征列合并为一个列,即向量类型。这样,只需要处理一个列,因为它包含了所有需要训练模型的数据。

from pyspark.ml.feature import VectorAssembler featassembler = VectorAssembler(inputCols=["variance", "skewness", "curtosis", "entropy"], outputCol="独立特征")

首先,从pyspark.ml.feature库中导入VectorAssembler。然后,使用VectorAssembler将特征列堆叠在一起。

转换数据集

将使用transform()方法将独立特征列添加到原始数据集中。

result = featassembler.transform(training_dataset) result.show()

通过transform()方法,成功地将独立特征列添加到了数据集的最后一列。

训练测试集分割

机器学习流程中,训练测试集分割是一个重要的步骤,它可以帮助避免模型过拟合。将使用randomSplit()函数将数据集分为训练集和测试集。

train_data, test_data = final_data.randomSplit([0.75, 0.25])

使用randomSplit()函数将数据分为75%的训练数据和25%的测试数据。

模型构建

现在已经分割了数据集,并且有了训练集,可以基于训练集构建模型,然后测试模型在测试数据上的表现。由于这是一个回归问题,将使用线性回归算法。

from pyspark.ml.regression import LinearRegression model = LinearRegression(featuresCol='独立特征', labelCol='目标') model = model.fit(train_data)

从pyspark.ml.regression包中导入LinearRegression算法,并定义独立特征和目标列。然后,使用fit方法将训练数据拟合到创建的模型中。

prediction_result = model.evaluate(test_data) prediction_result.predictions.show()
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485