自从 Apache Spark(一种用于处理大数据的开源框架)发布以来,它已成为跨多个容器并行处理大量数据的最广泛使用的技术之一 - 它以效率和速度而自豪与之前存在的类似软件相比。
通过 PySpark 在 Python 中使用这项令人惊叹的技术是可行的,PySpark 是一个 Python API,允许您使用 Python 编程语言与 ApacheSpark 进行交互并挖掘 ApacheSpark 的惊人潜力。
在本文中,您将学习并开始使用 PySpark 使用线性回归算法构建机器学习模型。
注意:预先了解 Python、VSCode 等 IDE、如何使用命令提示符/终端以及熟悉机器学习概念对于正确理解本文中包含的概念至关重要。
通过阅读本文,您应该能够:
根据 Apache Spark 官方网站,PySpark 可让您利用 ApacheSpark(简单性、速度、可扩展性、多功能性)和 Python(丰富的生态系统、成熟的库、简单性)的综合优势进行“数据工程”单节点机器或集群上的数据科学和机器学习。”
图片来源
PySpark 是 ApacheSpark 的 Python API,这意味着它充当一个接口,让用 Python 编写的代码与用 Scala 编写的 ApacheSpark 技术进行通信。这样,已经熟悉Python生态系统的专业人士就可以快速利用ApacheSpark技术。这也确保了 Python 中使用的现有库保持相关性。
在接下来的步骤中,我们将使用线性回归算法构建机器学习模型:
pip install pyspark
如果没有这些额外的 Python 库,您可以安装它们。
pip install pyspark
pip install pandas numpy
from pyspark.sql import SparkSession from pyspark.ml.feature import VectorAssembler from pyspark.ml.classification import LogisticRegression from pyspark.ml.evaluation import BinaryClassificationEvaluator import pandas as pd
spark = SparkSession.builder.appName("LogisticRegressionExample").getOrCreate()
data = spark.read.csv("data.csv", header=True, inferSchema=True)
如果您正在使用小型数据集,您可以将其转换为 Python 数据框和目录,并使用 Python 检查缺失值。
# Display the schema my data.printSchema() # Show the first ten rows data.show(10) # Count null values in each column missing_values = df.select( [count(when(isnull(c), c)).alias(c) for c in df.columns] ) # Show the result missing_values.show()
使用 VectorAssembler 将所有特征组合到单个向量列中。
pandas_df = data.toPandas() # Use Pandas to check missing values print(pandas_df.isna().sum())
# Combine feature columns into a single vector column feature_columns = [col for col in data.columns if col != "label"] assembler = VectorAssembler(inputCols=feature_columns, outputCol="features") # Transform the data data = assembler.transform(data) # Select only the 'features' and 'label' columns for training final_data = data.select("features", "label") # Show the transformed data final_data.show(5)
创建 LogisticRegression 类的实例并拟合模型。
train_data, test_data = final_data.randomSplit([0.7, 0.3], seed=42)
lr = LogisticRegression(featuresCol="features", labelCol="label") # Train the model lr_model = lr.fit(train_data)
使用 AUC 指标评估模型
predictions = lr_model.transform(test_data) # Show predictions predictions.select("features", "label", "prediction", "probability").show(5)
本文使用的端到端代码如下所示:
evaluator = BinaryClassificationEvaluator(rawPredictionCol="rawPrediction", labelCol="label", metricName="areaUnderROC") # Compute the AUC auc = evaluator.evaluate(predictions) print(f"Area Under ROC: {auc}")
我们已经到了本文的结尾。通过执行上述步骤,您已经使用 PySpark 构建了机器学习模型。
在继续下一步之前,请务必确保您的数据集干净并且没有空值。最后,在继续训练模型之前,请确保您的特征全部包含数值。
以上是如何使用 PySpark 进行机器学习的详细内容。更多信息请关注PHP中文网其他相关文章!