ホームページ >バックエンド開発 >Python チュートリアル >機械学習に PySpark を使用する方法

機械学習に PySpark を使用する方法

DDD
DDDオリジナル
2024-12-11 08:47:10834ブラウズ

Apache Spark (ビッグ データを処理するためのオープンソース フレームワーク) のリリース以来、Apache Spark は、複数のコンテナ間で大量のデータを並行して処理するために最も広く使用されているテクノロジの 1 つとなり、効率と速度を誇りにしています。以前に存在した同様のソフトウェアと比較してください。

この素晴らしいテクノロジーを Python で操作することは、Python プログラミング言語を使用して ApacheSpark と対話し、ApacheSpark の驚くべき可能性を活用できる Python API である PySpark を通じて実現できます。

この記事では、PySpark を使用して線形回帰アルゴリズムを使用して機械学習モデルを構築する方法を学び、開始します。

: この記事に含まれる概念を正しく理解するには、Python、VSCode などの IDE、コマンド プロンプト/ターミナルの使用方法、および機械学習の概念に関する事前知識があることが不可欠です。

この記事を読み進めることで、次のことができるようになります:

  • ApacheSpark とは何かを理解します。
  • PySpark とそれを機械学習に使用する方法について学びます。

PySpark とは何ですか?

Apache Spark 公式 Web サイトによると、PySpark を使用すると、ApacheSpark (シンプルさ、スピード、スケーラビリティ、汎用性) と Python (豊富なエコシステム、成熟したライブラリ、シンプルさ) の強みを組み合わせて「データ エンジニアリング」に活用できます。 、データ サイエンス、単一ノード マシンでの機械学習、またはクラスター.”

How to Use PySpark for Machine Learning
画像ソース

PySpark は ApacheSpark の Python API です。つまり、Python で書かれたコードが Scala で書かれた ApacheSpark テクノロジーと通信できるようにするインターフェイスとして機能します。このようにして、Python エコシステムにすでに精通している専門家は、ApacheSpark テクノロジーをすぐに利用できます。これにより、Python で使用される既存のライブラリの関連性も確保されます。

機械学習に PySpark を使用する方法の詳細ガイド

次の手順では、線形回帰アルゴリズムを使用して機械学習モデルを構築します。

  • プロジェクトの依存関係をインストールします: マシンに Python がすでにインストールされていると仮定します。インストールされていない場合は、次の手順に進む前にインストールしてください。ターミナルまたはコマンド プロンプトを開き、以下のコードを入力して PySpark ライブラリをインストールします。
pip install pyspark

これらの追加の Python ライブラリがない場合は、インストールできます。

pip install pyspark
  • ファイルを作成し、必要なライブラリをインポートします: VSCode を開き、選択したプロジェクト ディレクトリにプロジェクトのファイル (例: pyspart_model.py) を作成します。ファイルを開き、プロジェクトに必要なライブラリをインポートします。
pip install pandas numpy
  • Spark セッションの作成: インポートの下に次のコードを入力して、プロジェクトの Spark セッションを開始します。
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
  • CSV ファイル (作業するデータセット) を読み込みます: プロジェクト ディレクトリ/フォルダーに data.csv という名前のデータセットが既にある場合は、以下のコードを使用して読み込みます。
spark = SparkSession.builder.appName("LogisticRegressionExample").getOrCreate()
  • 探索的データ分析: このステップは、作業しているデータセットを理解するのに役立ちます。 null 値を確認し、使用するクレンジング アプローチを決定します。
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()
  • データの前処理: このステップには、データセット内の列/特徴を、PySpark の機械学習ライブラリが容易に理解できる、または互換性のある形式に変換することが含まれます。

すべての機能を 1 つのベクトル列に結合するには、VectorAssembler を使用します。

pandas_df = data.toPandas()
# Use Pandas to check missing values
print(pandas_df.isna().sum())
  • データセットを分割: 都合の良い比率でデータセットを分割します。ここでは、70% から 30% を使用しています。70% はトレーニングに、30% はモデルのテストに使用されます。
# 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。