Regression Analysis
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("lr_ex").getOrCreate()
from pyspark.ml.regression import LinearRegression
data = spark.read.csv("../Ecommerce_Customer.csv", inferSchema=True, header=True)
data.select("Avg Session Length", "Time on App").show()
직관적으로 한 행을 출력해보자.
for col, item in zip(data.columns, data.head(1)[0]):
print(col, ":", item)
VectorAssembler
사용할 변수를 묶어주기 위해서 VectorAssmbler을 사용한다.
데이터의 컬럼은 [그림 3]과 같다.
이제 VectorAssembler에 컬럼을 넣어주고, 이 묶음의 이름을 features로 지정하자.
#for numeric variables
assmbler = VectorAssembler(inputCols = ["Avg Session Length","Time on App","Time On Website",'Length of Membership'],
outputCol ='features')
data를 변형해주고 한 행을 보자.
아래 [그림 4]에서 맨 끝 'features'가 보이는데 4개의 변수가 들어간 것이 보인다. 소수점 넷 째자리까지 표현이 된다.
output = assembler.transform(data)
output.head(1)
독립변수 x와 종속변수 y를 추출하자.
#X,y
final_data = output.select("features", "Yearly Amount Spent")
final_data.show()
Train Test Split
훈련 데이터와 테스트 데이터를 분리할 수 있다.
#train test = 7 : 3
train_data, test_data = final_data.randomSplit([.7,.3], seed=42)
train_data.describe().show()
test_data.describe().show()
Linear Model
선형 모델을 구축할 수 있다.
1. LinearRegression
lr = LinearRegression(featuresCol = "features", labelCol = "Yearly Amount Spent")
2. Fitting
lr_model = lr.fit(train_data)
3. Evaluate
test_results = lr_model.evaluate(test_data)
4. Residuals & Metrics
#residulas
test_results.residuals.show()
#RMSE
test_results.rootMeanSquaredError
#R^2
test_results.r2
Prediction
실제로 독립변수를 가지고 예측을 할 수 있다.
먼저, 데이터의 레이블을 없애주는 과정을 해주자.
unlabeld_data = test_data.select("features")
다음, 예측해보자.
pred = lr_model.transform(unlabeld_data)
pred.show()
'Spark' 카테고리의 다른 글
Spark - [Clustering] (0) | 2022.12.12 |
---|---|
Spark - [Tree Model] (0) | 2022.12.12 |
Spark - [Logistic Regression] (0) | 2022.12.11 |
Spark - Basic (0) | 2022.12.08 |
Spark - [pyspark] (0) | 2022.12.08 |