创建SparkSession对象
from pyspark.sql import SparkSession
saprk = SparkSession.builder.appName('log_reg').getOrCreate()
读取数据集
df = saprk.read.csv("./Linear_regression_dataset.csv", inferSchema=True, header = True)
探究性数据分析
df.printSchema()
df.describe().show(3, False)###False 是否全部显示 False 不隐藏
可以使用corr函数检查输入和输出变量之间的相互关系
from pyspark.sql.functions import corr
df.select(corr('var_1','output')).show()
特征工程化
VectorAssembler合并所有输入特征,输出单个特征向量化。
from pyspark.ml.linalg import Vector
from pyspark.ml.feature import VectorAssembler
vec = VectorAssembler(inputCols=['var_1', 'var_2', 'var_3', 'var_4', 'var_5', 'output'], outputCol='features')
features_df = vec.transform(df)
features_df.printSchema()
model_df = features_df.select('features','output')
model_df.show(5, False)
划分数据集
train_df, test_df = model_df.randomSplit([0.7, 0.3])
print((train_df.count(), len(train_df.columns)))
构建和训练线性回归模型
使用来评估线性回归模型在训练数据上的性能。
from pyspark.ml.regression import LinearRegression
lin_reg = LinearRegression(labelCol='output')
lr_model = lin_reg.fit(train_df)
lr_model.coefficients
lr_model.intercept
在测试数据上评估模型
test_p = lr_model.evaluate(test_df)
test_p.r2
test_p.meanSquaredError