Apache Spark (ビッグ データを処理するためのオープンソース フレームワーク) のリリース以来、Apache Spark は、複数のコンテナ間で大量のデータを並行して処理するために最も広く使用されているテクノロジの 1 つとなり、効率と速度を誇りにしています。以前に存在した同様のソフトウェアと比較してください。
この素晴らしいテクノロジーを Python で操作することは、Python プログラミング言語を使用して ApacheSpark と対話し、ApacheSpark の驚くべき可能性を活用できる Python API である PySpark を通じて実現できます。
この記事では、PySpark を使用して線形回帰アルゴリズムを使用して機械学習モデルを構築する方法を学び、開始します。
注: この記事に含まれる概念を正しく理解するには、Python、VSCode などの IDE、コマンド プロンプト/ターミナルの使用方法、および機械学習の概念に関する事前知識があることが不可欠です。
この記事を読み進めることで、次のことができるようになります:
Apache Spark 公式 Web サイトによると、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()
すべての機能を 1 つのベクトル列に結合するには、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 を使用して機械学習モデルを構築しました。
次のステップに進む前に、データセットがクリーンで null 値がないことを必ず確認してください。最後に、モデルのトレーニングに進む前に、すべての特徴に数値が含まれていることを確認してください。
以上が機械学習に PySpark を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。