Data Science/Statistic
AIC, BIC 로 모형 적합도 탐색하기(pyspark 코드)
히또아빠
2024. 1. 2. 14:35
data = [(1.0, 0.1, 0.2), (0.0, 0.4, 0.5), (1.0, 0.2, 0.3), (0.0, 0.3, 0.4)]
columns = ["label", "feature1", "feature2"]
df = spark.createDataFrame(data, columns)
# 특징 벡터 생성
assembler = VectorAssembler(inputCols=["feature1", "feature2"], outputCol="features")
df = assembler.transform(df)
# 로지스틱 회귀 모델 생성
lr = LogisticRegression(featuresCol="features", labelCol="label")
# 파이프라인 생성
pipeline = Pipeline(stages=[lr])
# 모델 피팅
model = pipeline.fit(df)
# 예측 결과 얻기
predictions = model.transform(df)
# 모델의 로그 우도 가져오기
objective_history = model.stages[-1].summary.objectiveHistory
log_likelihood = -objective_history[-1] # 마지막 값이 최종 로그 우도
# 샘플 수
num_samples = df.count()
# 모델의 매개변수 수
num_params = len(model.stages[-1].coefficients) + 1 # 계수의 개수 + intercept
# AIC 계산
aic = -2 * log_likelihood + 2 * num_params
# BIC 계산
bic = -2 * log_likelihood + num_params * np.log(num_samples)
print("AIC:", aic)
print("BIC:", bic)
300x250
반응형