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
반응형