spark logstic 回归
Spark 回归
2023-09-14 09:09:29 时间
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Jun 7 16:28:03 2018
@author: luogan
"""
from pyspark.ml.linalg import Vectors
from pyspark.ml.classification import LogisticRegression
from pyspark.sql import SparkSession
spark= SparkSession\
.builder \
.appName("dataFrame") \
.getOrCreate()
# Prepare training data from a list of (label, features) tuples.
training = spark.createDataFrame([
(1.0, Vectors.dense([0.0, 1.1, 0.1])),
(0.0, Vectors.dense([2.0, 1.0, -1.0])),
(0.0, Vectors.dense([2.0, 1.3, 1.0])),
(1.0, Vectors.dense([0.0, 1.2, -0.5]))], ["label", "features"])
# Create a LogisticRegression instance. This instance is an Estimator.
lr = LogisticRegression(maxIter=10, regParam=0.01)
# Print out the parameters, documentation, and any default values.
print("LogisticRegression parameters:\n" + lr.explainParams() + "\n")
# Learn a LogisticRegression model. This uses the parameters stored in lr.
model1 = lr.fit(training)
# Since model1 is a Model (i.e., a transformer produced by an Estimator),
# we can view the parameters it used during fit().
# This prints the parameter (name: value) pairs, where names are unique IDs for this
# LogisticRegression instance.
print("Model 1 was fit using parameters: ")
print(model1.extractParamMap())
# We may alternatively specify parameters using a Python dictionary as a paramMap
paramMap = {lr.maxIter: 20}
paramMap[lr.maxIter] = 30 # Specify 1 Param, overwriting the original maxIter.
paramMap.update({lr.regParam: 0.1, lr.threshold: 0.55}) # Specify multiple Params.
# You can combine paramMaps, which are python dictionaries.
paramMap2 = {lr.probabilityCol: "myProbability"} # Change output column name
paramMapCombined = paramMap.copy()
paramMapCombined.update(paramMap2)
# Now learn a new model using the paramMapCombined parameters.
# paramMapCombined overrides all parameters set earlier via lr.set* methods.
model2 = lr.fit(training, paramMapCombined)
print("Model 2 was fit using parameters: ")
print(model2.extractParamMap())
# Prepare test data
test = spark.createDataFrame([
(1.0, Vectors.dense([-1.0, 1.5, 1.3])),
(0.0, Vectors.dense([3.0, 2.0, -0.1])),
(1.0, Vectors.dense([0.0, 2.2, -1.5]))], ["label", "features"])
# Make predictions on test data using the Transformer.transform() method.
# LogisticRegression.transform will only use the 'features' column.
# Note that model2.transform() outputs a "myProbability" column instead of the usual
# 'probability' column since we renamed the lr.probabilityCol parameter previously.
prediction = model2.transform(test)
result = prediction.select("features", "label", "myProbability", "prediction") \
.collect()
for row in result:
print("features=%s, label=%s -> prob=%s, prediction=%s"
% (row.features, row.label, row.myProbability, row.prediction))
Model 1 was fit using parameters:
{}
Model 2 was fit using parameters:
{}
features=[-1.0,1.5,1.3], label=1.0 -> prob=[0.05707302714277409,0.9429269728572259], prediction=1.0
features=[3.0,2.0,-0.1], label=0.0 -> prob=[0.9238522038489116,0.07614779615108845], prediction=0.0
features=[0.0,2.2,-1.5], label=1.0 -> prob=[0.1097278338217611,0.8902721661782389], prediction=1.0
相关文章
- Windows10搭建Spark+Python开发环境
- Spark Streaming与Storm的对比及使用场景
- Spark SQL性能优化
- 大数据基础之Benchmark(4)TPC-DS测试结果(hive/hive on spark/spark sql/impala/presto)
- 大叔问题定位分享(27)spark中rdd.cache
- Spark ListenerBus 和 MetricsSystem 体系分析
- Spark修炼之道(基础篇)——Linux大数据开发基础:第六节:vi、vim编辑器(二)
- Apache Spark技术实战(三)利用Spark将json文件导入Cassandra &SparkR的安装及使用
- 一天学完spark的Scala基础语法教程五、闭包(idea版本)
- Spark核心RDD:combineByKey函数详解
- Spark 键值对RDD操作
- spark RDD底层原理
- 本地调试spark程序
- Spark 导航