検索
ホームページテクノロジー周辺機器AIPySpark ML を使用して機械学習モデルを構築する

PySpark ML を使用して機械学習モデルを構築する

Apr 09, 2023 pm 01:51 PM
機械学習データ分析pyspark m

Spark は、対話型クエリ、機械学習、およびリアルタイム ワークロード用に設計されたオープン ソース フレームワークであり、PySpark は Spark を使用する Python 用のライブラリです。

PySpark は、探索的データ分析を大規模に実行し、機械学習パイプラインを構築し、データ プラットフォーム用の ETL を作成するための優れた言語です。すでに Python や Pandas などのライブラリに精通している場合、PySpark は学習し、よりスケーラブルな分析やパイプラインを作成するのに最適な言語です。

この記事の目的は、PySpark を使用して機械学習モデルを構築する方法を示すことです。

Conda は Python 仮想環境を作成します

Conda は、Python や conda 自体も含め、ほとんどすべてのツールとサードパーティのパッケージをパッケージとして管理します。 Anaconda はパッケージ化されたコレクションであり、conda、特定のバージョンの Python、さまざまなパッケージなどがプリインストールされています。

1. Anaconda をインストールします。

コマンド ラインを開いて conda -V と入力し、インストールされているかどうかと現在の conda バージョンを確認します。

Anaconda を介して Python のデフォルト バージョンをインストールします。3.6 は Anaconda3 ~ 5.2 に対応し、5.3 以降は Python 3.7 です。

(https://repo.anaconda.com/archive/)

2. 一般的に使用される conda コマンド

1) どのパッケージがインストールされているかを確認する

conda list

2) 現在存在する仮想環境を確認します

conda env list <br>conda info -e

3) 現在の conda を確認して更新します

conda update conda

3. Python は仮想環境を作成します

conda create -n your_env_name python=x.x

anaconda コマンドはx.x の Python バージョン、 your_env_name という名前の仮想環境。 your_env_name ファイルは、Anaconda インストール ディレクトリの envs ファイルの下にあります。

4. 仮想環境のアクティブ化または切り替え

コマンド ラインを開いて python --version と入力し、現在の Python バージョンを確認します。

Linux:source activate your_env_nam<br>Windows: activate your_env_name

5. 仮想環境に追加のパッケージをインストールします

conda install -n your_env_name [package]

6. 仮想環境を閉じます

(つまり、現在の環境を終了し、デフォルトの Python バージョンの使用に戻ります) PATH環境内)

deactivate env_name<br># 或者`activate root`切回root环境<br>Linux下:source deactivate

7.仮想環境の削除

conda remove -n your_env_name --all

8.環境クロックのパッケージ削除

conda remove --name $your_env_name$package_name

9.国内ミラーの設定

http:/ /Anaconda.org のサーバーは海外にあるため、複数のパッケージをインストールすると、conda のダウンロード速度が非常に遅くなることがよくあります。 Tsinghua TUNA ミラー ソースには Anaconda ウェアハウスのミラーがあり、それを conda 構成に追加するだけです:

# 添加Anaconda的TUNA镜像<br>conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/<br><br># 设置搜索时显示通道地址<br>conda config --set show_channel_urls yes

10. デフォルトのミラーを復元します

conda config --remove-key channels

PySpark のインストール

PySpark のインストールプロセス 他の Python パッケージ (Pandas、Numpy、scikit-learn など) と同じくらい単純です。

重要なことの 1 つは、まず Java がマシンにインストールされていることを確認することです。その後、jupyter ノートブックで PySpark を実行できます。

PySpark ML を使用して機械学習モデルを構築する

データの探索

国立糖尿病・消化器・腎臓病研究所の糖尿病データセットを使用します。分類の目標は、患者が糖尿病であるかどうか (はい/いいえ) を予測することです。

from pyspark.sql import SparkSession<br>spark = SparkSession.builder.appName('ml-diabetes').getOrCreate()<br>df = spark.read.csv('diabetes.csv', header = True, inferSchema = True)<br>df.printSchema()

データセットは、いくつかの医療予測変数とターゲット変数「結果」で構成されます。予測変数には、患者の妊娠数、BMI、インスリンレベル、年齢などが含まれます。

  • 妊娠: 妊娠数
  • グルコース: 2 時間以内の経口ブドウ糖負荷試験中の血糖濃度
  • 血圧: 拡張期血圧 (mm Hg)
  • SkinThickness: 上腕三頭筋の皮膚のひだの厚さ (mm)
  • インスリン: 2 時間血清インスリン (μ U/ml)
  • BMI: BMI: BMI (体重単位 kg/(身長)単位 m) )²)
  • diabespedigreefunction: 糖尿病血統関数
  • Age: 年齢 (年)
  • 結果: クラス変数 (0 または 1)
  • 入力変数: グルコース、血圧、BMI、年齢、妊娠、インスリン、皮膚の厚さ、糖尿病スペクトラム関数。
  • 出力変数: 結果。

最初の 5 つの観察を見てください。 Pandas データフレームは、Spark DataFrame.show() よりも優れています。

import pandas as pd<br>pd.DataFrame(df.take(5), <br> columns=df.columns).transpose()

PySpark では、Pandas の DataFrame toPandas() を使用してデータを表示できます。

df.toPandas()

PySpark ML を使用して機械学習モデルを構築する

クラスのバランスが完全に取れていることを確認してください。

df.groupby('Outcome').count().toPandas()

PySpark ML を使用して機械学習モデルを構築する

記述統計

numeric_features = [t[0] for t in df.dtypes if t[1] == 'int']<br>df.select(numeric_features)<br>.describe()<br>.toPandas()<br>.transpose()

独立変数間の相関関係

from pandas.plotting import scatter_matrix<br>numeric_data = df.select(numeric_features).toPandas()<br><br>axs = scatter_matrix(numeric_data, figsize=(8, 8));<br><br># Rotate axis labels and remove axis ticks<br>n = len(numeric_data.columns)<br>for i in range(n):<br>v = axs[i, 0]<br>v.yaxis.label.set_rotation(0)<br>v.yaxis.label.set_ha('right')<br>v.set_yticks(())<br>h = axs[n-1, i]<br>h.xaxis.label.set_rotation(90)<br>h.set_xticks(())

PySpark ML を使用して機械学習モデルを構築する

データ準備と特徴エンジニアリング

このパートでは、不要な列を削除し、欠落している値を埋めます。最後に、機械学習モデルの特徴が選択されます。これらの機能は、トレーニングとテストの 2 つの部分に分かれています。

欠損データの処理

from pyspark.sql.functions import isnull, when, count, col<br>df.select([count(when(isnull(c), c)).alias(c)<br> for c in df.columns]).show()

このデータ セットは優れており、欠損値はありません。

PySpark ML を使用して機械学習モデルを構築する

不必要的列丢弃

dataset = dataset.drop('SkinThickness')<br>dataset = dataset.drop('Insulin')<br>dataset = dataset.drop('DiabetesPedigreeFunction')<br>dataset = dataset.drop('Pregnancies')<br><br>dataset.show()

PySpark ML を使用して機械学習モデルを構築する

特征转换为向量

VectorAssembler —— 将多列合并为向量列的特征转换器。

# 用VectorAssembler合并所有特性<br>required_features = ['Glucose',<br>'BloodPressure',<br>'BMI',<br>'Age']<br><br>from pyspark.ml.feature import VectorAssembler<br><br>assembler = VectorAssembler(<br>inputCols=required_features, <br>outputCol='features')<br><br>transformed_data = assembler.transform(dataset)<br>transformed_data.show()

现在特征转换为向量已完成。

训练和测试拆分

将数据随机分成训练集和测试集,并设置可重复性的种子。

(training_data, test_data) = transformed_data.randomSplit([0.8,0.2], seed =2020)<br>print("训练数据集总数: " + str(training_data.count()))<br>print("测试数据集总数: " + str(test_data.count()))
训练数据集总数:620<br>测试数据集数量:148

机器学习模型构建

随机森林分类器

随机森林是一种监督学习算法,用于分类和回归。但是,它主要用于分类问题。众所周知,森林是由树木组成的,树木越多,森林越茂盛。类似地,随机森林算法在数据样本上创建决策树,然后从每个样本中获取预测,最后通过投票选择最佳解决方案。这是一种比单个决策树更好的集成方法,因为它通过对结果进行平均来减少过拟合。

from pyspark.ml.classification import RandomForestClassifier<br><br>rf = RandomForestClassifier(labelCol='Outcome', <br>featuresCol='features',<br>maxDepth=5)<br>model = rf.fit(training_data)<br>rf_predictions = model.transform(test_data)

评估随机森林分类器模型

from pyspark.ml.evaluation import MulticlassClassificationEvaluator<br><br>multi_evaluator = MulticlassClassificationEvaluator(<br>labelCol = 'Outcome', metricName = 'accuracy')<br>print('Random Forest classifier Accuracy:', multi_evaluator.evaluate(rf_predictions))
Random Forest classifier Accuracy:0.79452

决策树分类器

决策树被广泛使用,因为它们易于解释、处理分类特征、扩展到多类分类设置、不需要特征缩放,并且能够捕获非线性和特征交互。

from pyspark.ml.classification import DecisionTreeClassifier<br><br>dt = DecisionTreeClassifier(featuresCol = 'features',<br>labelCol = 'Outcome',<br>maxDepth = 3)<br>dtModel = dt.fit(training_data)<br>dt_predictions = dtModel.transform(test_data)<br>dt_predictions.select('Glucose', 'BloodPressure', <br>'BMI', 'Age', 'Outcome').show(10)

评估决策树模型

from pyspark.ml.evaluation import MulticlassClassificationEvaluator<br><br>multi_evaluator = MulticlassClassificationEvaluator(<br>labelCol = 'Outcome', <br>metricName = 'accuracy')<br>print('Decision Tree Accuracy:', <br>multi_evaluator.evaluate(dt_predictions))
Decision Tree Accuracy: 0.78767

逻辑回归模型

逻辑回归是在因变量是二分(二元)时进行的适当回归分析。与所有回归分析一样,逻辑回归是一种预测分析。逻辑回归用于描述数据并解释一个因二元变量与一个或多个名义、序数、区间或比率水平自变量之间的关系。当因变量(目标)是分类时,使用逻辑回归。

from pyspark.ml.classification import LogisticRegression<br><br>lr = LogisticRegression(featuresCol = 'features', <br>labelCol = 'Outcome', <br>maxIter=10)<br>lrModel = lr.fit(training_data)<br>lr_predictions = lrModel.transform(test_data)

评估我们的逻辑回归模型。

from pyspark.ml.evaluation import MulticlassClassificationEvaluator<br><br>multi_evaluator = MulticlassClassificationEvaluator(<br>labelCol = 'Outcome',<br>metricName = 'accuracy')<br>print('Logistic Regression Accuracy:', <br>multi_evaluator.evaluate(lr_predictions))
Logistic Regression Accuracy:0.78767

梯度提升树分类器模型

梯度提升是一种用于回归和分类问题的机器学习技术,它以弱预测模型(通常是决策树)的集合形式生成预测模型。

from pyspark.ml.classification import GBTClassifier<br>gb = GBTClassifier(<br>labelCol = 'Outcome', <br>featuresCol = 'features')<br>gbModel = gb.fit(training_data)<br>gb_predictions = gbModel.transform(test_data)

评估我们的梯度提升树分类器。

from pyspark.ml.evaluation import MulticlassClassificationEvaluator<br>multi_evaluator = MulticlassClassificationEvaluator(<br>labelCol = 'Outcome',<br>metricName = 'accuracy')<br>print('Gradient-boosted Trees Accuracy:',<br>multi_evaluator.evaluate(gb_predictions))
Gradient-boosted Trees Accuracy:0.80137

结论

PySpark 是一种非常适合数据科学家学习的语言,因为它支持可扩展的分析和 ML 管道。如果您已经熟悉 Python 和 Pandas,那么您的大部分知识都可以应用于 Spark。总而言之,我们已经学习了如何使用 PySpark 构建机器学习应用程序。我们尝试了三种算法,梯度提升在我们的数据集上表现最好。

以上がPySpark ML を使用して機械学習モデルを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は51CTO.COMで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
迅速なエンジニアリングにおける思考のグラフは何ですか迅速なエンジニアリングにおける思考のグラフは何ですかApr 13, 2025 am 11:53 AM

導入 迅速なエンジニアリングでは、「思考のグラフ」とは、グラフ理論を使用してAIの推論プロセスを構造化および導く新しいアプローチを指します。しばしば線形sを含む従来の方法とは異なります

Genaiエージェントとの電子メールマーケティングを組織に最適化しますGenaiエージェントとの電子メールマーケティングを組織に最適化しますApr 13, 2025 am 11:44 AM

導入 おめでとう!あなたは成功したビジネスを運営しています。ウェブページ、ソーシャルメディアキャンペーン、ウェビナー、会議、無料リソース、その他のソースを通じて、毎日5000の電子メールIDを収集します。次の明白なステップはです

Apache Pinotによるリアルタイムアプリのパフォーマンス監視Apache Pinotによるリアルタイムアプリのパフォーマンス監視Apr 13, 2025 am 11:40 AM

導入 今日のペースの速いソフトウェア開発環境では、最適なアプリケーションパフォーマンスが重要です。応答時間、エラーレート、リソース利用などのリアルタイムメトリックを監視することで、メインに役立ちます

ChatGptは10億人のユーザーにヒットしますか? 「わずか数週間で2倍になりました」とOpenai CEOは言いますChatGptは10億人のユーザーにヒットしますか? 「わずか数週間で2倍になりました」とOpenai CEOは言いますApr 13, 2025 am 11:23 AM

「ユーザーは何人いますか?」彼は突き出した。 「私たちが最後に言ったのは毎週5億人のアクティブであり、非常に急速に成長していると思います」とアルトマンは答えました。 「わずか数週間で2倍になったと言った」とアンダーソンは続けた。 「私はそのprivと言いました

PIXTRAL -12B:Mistral AI&#039;の最初のマルチモーダルモデル-Analytics VidhyaPIXTRAL -12B:Mistral AI&#039;の最初のマルチモーダルモデル-Analytics VidhyaApr 13, 2025 am 11:20 AM

導入 Mistralは、最初のマルチモーダルモデル、つまりPixtral-12B-2409をリリースしました。このモデルは、Mistralの120億個のパラメーターであるNemo 12bに基づいて構築されています。このモデルを際立たせるものは何ですか?これで、画像とTexの両方を採用できます

生成AIアプリケーションのエージェントフレームワーク - 分析Vidhya生成AIアプリケーションのエージェントフレームワーク - 分析VidhyaApr 13, 2025 am 11:13 AM

クエリに応答するだけでなく、情報を自律的に収集し、タスクを実行し、テキスト、画像、コードなどの複数のタイプのデータを処理するAIを搭載したアシスタントがいることを想像してください。未来的に聞こえますか?これでa

金融セクターにおける生成AIの応用金融セクターにおける生成AIの応用Apr 13, 2025 am 11:12 AM

導入 金融業界は、効率的な取引と信用の可用性を促進することにより経済成長を促進するため、あらゆる国の発展の基礎となっています。取引の容易さとクレジット

オンライン学習とパッシブアグレッシブアルゴリズムのガイドオンライン学習とパッシブアグレッシブアルゴリズムのガイドApr 13, 2025 am 11:09 AM

導入 データは、ソーシャルメディア、金融取引、eコマースプラットフォームなどのソースから前例のないレートで生成されています。この連続的な情報ストリームを処理することは課題ですが、

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません