Spark 是一种专门用于交互式查询、机器学习和实时工作负载的开源框架,而 PySpark 是 Python 使用 Spark 的库。
PySpark 是一种用于大规模执行探索性数据分析、构建机器学习管道以及为数据平台创建 ETL 的出色语言。如果你已经熟悉 Python 和 Pandas 等库,那么 PySpark 是一种很好的学习语言,可以创建更具可扩展性的分析和管道。
这篇文章的目的是展示如何使用 PySpark 构建机器学习模型。
conda将几乎所有的工具、第三方包都当作package进行管理,甚至包括python 和conda自身。Anaconda是一个打包的集合,里面预装好了conda、某个版本的python、各种packages等。
打开命令行输入conda -V检验是否安装及当前conda的版本。
通过Anaconda安装默认版本的Python,3.6的对应的是 Anaconda3-5.2,5.3以后的都是python 3.7。
(https://repo.anaconda.com/archive/)
1) 查看安装了哪些包
conda list
2) 查看当前存在哪些虚拟环境
conda env list
conda info -e
3) 检查更新当前conda
conda update conda
conda create -n your_env_name python=x.x
anaconda命令创建python版本为x.x,名字为your_env_name的虚拟环境。your_env_name文件可以在Anaconda安装目录envs文件下找到。
打开命令行,输入python --version检查当前 python 版本。
Linux:source activate your_env_nam
Windows: activate your_env_name
conda install -n your_env_name [package]
(即从当前环境退出返回使用PATH环境中的默认python版本)
deactivate env_name
# 或者`activate root`切回root环境
Linux下:source deactivate
conda remove -n your_env_name --all
conda remove --name $your_env_name$package_name
http://Anaconda.org 的服务器在国外,安装多个packages时,conda下载的速度经常很慢。清华TUNA镜像源有Anaconda仓库的镜像,将其加入conda的配置即可:
# 添加Anaconda的TUNA镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
# 设置搜索时显示通道地址
conda config --set show_channel_urls yes
conda config --remove-key channels
PySpark 的安装过程和其他 python 的包一样简单(例如 Pandas、Numpy、scikit-learn)。
一件重要的事情是,首先确保你的机器上已经安装了java。然后你可以在你的 jupyter notebook 上运行 PySpark。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜
我们使用糖尿病数据集,它与美国国家糖尿病、消化和肾脏疾病研究所的糖尿病疾病有关。分类目标是预测患者是否患有糖尿病(是/否)。
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('ml-diabetes').getOrCreate()
df = spark.read.csv('diabetes.csv', header = True, inferSchema = True)
df.printSchema()
数据集由几个医学预测变量和一个目标变量 Outcome 组成。预测变量包括患者的怀孕次数、BMI、胰岛素水平、年龄等。
看看前五个观察结果。Pandas 数据框比 Spark DataFrame.show() 更漂亮。
import pandas as pd
pd.DataFrame(df.take(5),
columns=df.columns).transpose()
在 PySpark 中,您可以使用 Pandas 的 DataFrame 显示数据 toPandas()。
df.toPandas()
检查类是完全平衡的!
df.groupby('Outcome').count().toPandas()
numeric_features = [t[0] for t in df.dtypes if t[1] == 'int']
df.select(numeric_features)
.describe()
.toPandas()
.transpose()
from pandas.plotting import scatter_matrix
numeric_data = df.select(numeric_features).toPandas()
axs = scatter_matrix(numeric_data, figsize=(8, 8));
# Rotate axis labels and remove axis ticks
n = len(numeric_data.columns)
for i in range(n):
v = axs[i, 0]
v.yaxis.label.set_rotation(0)
v.yaxis.label.set_ha('right')
v.set_yticks(())
h = axs[n-1, i]
h.xaxis.label.set_rotation(90)
h.set_xticks(())
在这一部分中,我们将删除不必要的列并填充缺失值。最后,为机器学习模型选择特征。这些功能将分为训练和测试两部分。
from pyspark.sql.functions import isnull, when, count, col
df.select([count(when(isnull(c), c)).alias(c)
for c in df.columns]).show()
这个数据集很棒,没有任何缺失值。
dataset = dataset.drop('SkinThickness')
dataset = dataset.drop('Insulin')
dataset = dataset.drop('DiabetesPedigreeFunction')
dataset = dataset.drop('Pregnancies')
dataset.show()
VectorAssembler —— 将多列合并为向量列的特征转换器。
# 用VectorAssembler合并所有特性
required_features = ['Glucose',
'BloodPressure',
'BMI',
'Age']
from pyspark.ml.feature import VectorAssembler
assembler = VectorAssembler(
inputCols=required_features,
outputCol='features')
transformed_data = assembler.transform(dataset)
transformed_data.show()
现在特征转换为向量已完成。
将数据随机分成训练集和测试集,并设置可重复性的种子。
(training_data, test_data) = transformed_data.randomSplit([0.8,0.2], seed =2025)
print("训练数据集总数: " + str(training_data.count()))
print("测试数据集总数: " + str(test_data.count()))
训练数据集总数:620
测试数据集数量:148
随机森林是一种监督学习算法,用于分类和回归。但是,它主要用于分类问题。众所周知,森林是由树木组成的,树木越多,森林越茂盛。类似地,随机森林算法在数据样本上创建决策树,然后从每个样本中获取预测,最后通过投票选择最佳解决方案。这是一种比单个决策树更好的集成方法,因为它通过对结果进行平均来减少过拟合。
from pyspark.ml.classification import RandomForestClassifier
rf = RandomForestClassifier(labelCol='Outcome',
featuresCol='features',
maxDepth=5)
model = rf.fit(training_data)
rf_predictions = model.transform(test_data)
from pyspark.ml.evaluation import MulticlassClassificationEvaluator
multi_evaluator = MulticlassClassificationEvaluator(
labelCol = 'Outcome', metricName = 'accuracy')
print('Random Forest classifier Accuracy:', multi_evaluator.evaluate(rf_predictions))
Random Forest classifier Accuracy:0.79452
决策树被广泛使用,因为它们易于解释、处理分类特征、扩展到多类分类设置、不需要特征缩放,并且能够捕获非线性和特征交互。
from pyspark.ml.classification import DecisionTreeClassifier
dt = DecisionTreeClassifier(featuresCol = 'features',
labelCol = 'Outcome',
maxDepth = 3)
dtModel = dt.fit(training_data)
dt_predictions = dtModel.transform(test_data)
dt_predictions.select('Glucose', 'BloodPressure',
'BMI', 'Age', 'Outcome').show(10)
from pyspark.ml.evaluation import MulticlassClassificationEvaluator
multi_evaluator = MulticlassClassificationEvaluator(
labelCol = 'Outcome',
metricName = 'accuracy')
print('Decision Tree Accuracy:',
multi_evaluator.evaluate(dt_predictions))
Decision Tree Accuracy: 0.78767
逻辑回归是在因变量是二分(二元)时进行的适当回归分析。与所有回归分析一样,逻辑回归是一种预测分析。逻辑回归用于描述数据并解释一个因二元变量与一个或多个名义、序数、区间或比率水平自变量之间的关系。当因变量(目标)是分类时,使用逻辑回归。
from pyspark.ml.classification import LogisticRegression
lr = LogisticRegression(featuresCol = 'features',
labelCol = 'Outcome',
maxIter=10)
lrModel = lr.fit(training_data)
lr_predictions = lrModel.transform(test_data)
评估我们的逻辑回归模型。
from pyspark.ml.evaluation import MulticlassClassificationEvaluator
multi_evaluator = MulticlassClassificationEvaluator(
labelCol = 'Outcome',
metricName = 'accuracy')
print('Logistic Regression Accuracy:',
multi_evaluator.evaluate(lr_predictions))
Logistic Regression Accuracy:0.78767
梯度提升是一种用于回归和分类问题的机器学习技术,它以弱预测模型(通常是决策树)的集合形式生成预测模型。
from pyspark.ml.classification import GBTClassifier
gb = GBTClassifier(
labelCol = 'Outcome',
featuresCol = 'features')
gbModel = gb.fit(training_data)
gb_predictions = gbModel.transform(test_data)
评估我们的梯度提升树分类器。
from pyspark.ml.evaluation import MulticlassClassificationEvaluator
multi_evaluator = MulticlassClassificationEvaluator(
labelCol = 'Outcome',
metricName = 'accuracy')
print('Gradient-boosted Trees Accuracy:',
multi_evaluator.evaluate(gb_predictions))
Gradient-boosted Trees Accuracy:0.80137
PySpark 是一种非常适合数据科学家学习的语言,因为它支持可扩展的分析和 ML 管道。如果您已经熟悉 Python 和 Pandas,那么您的大部分知识都可以应用于 Spark。总而言之,我们已经学习了如何使用 PySpark 构建机器学习应用程序。我们尝试了三种算法,梯度提升在我们的数据集上表现最好。
# http
# 都是
# 的是
# 命令行
# 如何使用
# 转换为
# 因为它
# 多个
# 决策树
# 镜像
# 是一种
# https
# Python
# 数据分析
# etl
# spark
# 算法
# jupyter
# conda
# pandas
# numpy
# scikit-learn
# Java
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化91478 】
【
技术知识72672 】
【
云计算0 】
【
GEO优化84317 】
【
优选文章0 】
【
营销推广36048 】
【
网络运营41350 】
【
案例网站102563 】
【
AI智能45237 】
相关推荐:
自动化AI汽车生成挑战赛1966 Gasmea回顾与评分
DeepSeek写简历怎么用_DeepSeek写简历使用方法详细指南【教程】
使用Go语言构建图像识别系统:完整指南
Z170芯片组内存兼容性问题终极指南
ChatGPT 处理超长 PDF 文件的核心步骤
AI驱动KDP封面设计:NURIE CREATOR教程
AI驱动的Web应用测试:突破QA挑战,提升用户体验
怎么用AI帮你写一份有说服力的加薪申请?
通义万相IP形象设计怎么用_通义万相IP形象设计使用方法详细指南【教程】
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
唐库AI拆书工具如何批量导出笔记_唐库AI拆书工具批量导出与格式转换【方法】
AI落地页优化:3个技巧,转化率飙升!
Dr.Job AI:职场简历优化终极指南,提升求职成功率
夸克AI能否查快递物流_夸克AI快递查询入口与单号输入【步骤】
Jasper AI如何做SEO优化 Jasper AI结合SurferSEO用法【教程】
在线图像分割:可信模糊聚类算法详解与应用
清洁扫地机器人传感器:解决导航和充电难题
唇语解读的界限:名人的隐私与公众的好奇心
百度APP的ai助手怎么关闭 百度APP ai功能取消方法
AMD Ryzen 2025 CPU深度解析:新品发布与选购指南
AI 时代高效开发:版本控制与 AI 协同工作流
AI驱动音频优化:提升音质的终极指南
2025年度AMD处理器终极评选:年度最佳CPU推荐
百度ai助手怎么取消 百度ai助手取消显示设置
使用AI配乐:ElevenLabs Music音乐生成器终极指南
使用 ChatGPT 自动生成月度财务分析报告
探索心灵的音乐之旅:Kanwar Garewal的《Ishq Bulleh Nu》
百度浏览器ai助手怎么关闭 百度浏览器ai功能禁用
怎么用ai进行用户画像分析 AI消费行为与兴趣标签提炼【详解】
热门科技新闻:BetterHelp、Photoshop AI、AMD CPU及NVIDIA显卡
提升英语口语:地道表达周末体验,语法精讲助你流利交流
五大AI视频编辑工具:提升视频创作效率和质量
Claude 4.5 深度解析: Coding, VS Code & AI Agent 新纪元
AI论文写作终极指南:DeepSeek与HIX Bypass结合使用教程
开源AI Agent项目精选:赋能智能自动化
Google Gemini 在跨境电商选品分析中的实战
生物医学图像分割:U-Net模型训练与应用详解
tofai官网入口网站 tofai官网入口网页版
AI邮件营销风险解析:如何规避客户触达的潜在陷阱
打破平庸:激发你的内在动力,重塑卓越人生
使用 Claude 4 和 n8n 实现 AI 工作流自动化
轻松入门:如何创建自己的图像识别模型
探索占星术:揭秘 कुंडली 中的 शुक्र,财富与运势的钥匙
教你用AI帮你写出有说服力的众筹项目文案
DeepSeek AI:AI通用谜题解题器,解题思路全解析
Kling 2.0终极指南:AI视频创作秘籍,告别低质量
豆包AI帮你写代码注释 豆包AI编程辅助教程
通义千问怎样写文案_通义千问文案写作教程【指南】
豆包AI怎么查看个人主页_管理账号信息与偏好设置
图像分割技术详解:定义、类型、技术与应用
2023-04-09
南京市珐之弘网络技术有限公司专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。