saved before topic change

This commit is contained in:
2026-04-23 22:54:17 +09:00
parent 31219c4618
commit 9c1329ddca
3 changed files with 22 additions and 21 deletions
@@ -40,8 +40,6 @@ def visualize_weights(file):
print(f'Kurtosis (original): {kurt:.4f} (정규 기준: 0, excess)')
print(f'Kurtosis (log): {kurt_log:.4f} (정규 기준: 0, excess)')
return
save_folder = f"{res_folder}/{file}"
os.makedirs(save_folder, exist_ok=True)
@@ -8,7 +8,7 @@ import numpy as np
# Initial Setup
csv_file = "results/synthetic_data/raw/20260418_095837.csv"
csv_file = "results/synthetic_data/raw/20260421_031740.csv"
save_folder = f"results/synthetic_data/derived/{os.path.splitext(os.path.basename(csv_file))[0]}/call_number_analysis"
os.makedirs(save_folder, exist_ok=True)
@@ -45,10 +45,8 @@ def E_vs_relax_attempts(df):
print(f"Saved E vs relax_attempts plots to {save_folder}")
# E_vs_relax_attempts(df)
# sigma vs relax_success_ratio
# 2. sigma vs relax_success_ratio
def sigma_vs_relax_success_ratio(df):
rows = []
sigma_save_folder = os.path.join(save_folder, "sigma_vs_relax_ratio_controlled")
@@ -114,10 +112,8 @@ def sigma_vs_relax_success_ratio(df):
res.to_csv(os.path.join(sigma_save_folder, "r2.csv"))
print(f"Saved controlled sigma vs relax_success_ratio plots to {sigma_save_folder}")
# sigma_vs_relax_success_ratio(df)
# avg_degree vs relax_success_ratio
# 3. avg_degree vs relax_success_ratio
def avg_degree_vs_relax_success_ratio(df):
avgdeg_scatter_folder = os.path.join(save_folder, "avg_deg_vs_ratio_controlled")
os.makedirs(avgdeg_scatter_folder, exist_ok=True)
@@ -144,11 +140,9 @@ def avg_degree_vs_relax_success_ratio(df):
print(f"Saved avg_degree vs ratio plots to {avgdeg_scatter_folder}")
# avg_degree_vs_relax_success_ratio(df)
# log_avg_degree vs log_ratio
def log_avg_degree_vs_log_ratio():
# 4. log_avg_degree vs log_ratio
def log_avg_degree_vs_log_ratio(df):
CEILING = 1
avgdeg_loglog_folder = os.path.join(save_folder, "avgdeg_vs_ratio_loglog")
os.makedirs(avgdeg_loglog_folder, exist_ok=True)
@@ -227,10 +221,9 @@ def log_avg_degree_vs_log_ratio():
print(f"Saved avg_degree vs ratio log-log plots to {avgdeg_loglog_folder}")
# log_avg_degree_vs_log_ratio()
def regime_distribution():
# 5. sigma vs. relax_success_ratio in controlled node,density
def regime_distribution(df):
r2_csv = os.path.join(save_folder, "sigma_vs_relax_ratio_controlled", "r2.csv")
res = pd.read_csv(r2_csv)
@@ -297,10 +290,8 @@ def regime_distribution():
print(f"Saved regime distribution plots to {regime_save_folder}")
# regime_distribution()
# Nonlinear regression: r = (a·ln(sigma) + b) · avg_deg^c
# 6. Nonlinear regression: r = (a·ln(sigma) + b) · avg_deg^c
def nonlinear_regression(df):
# Filter: giant component regime only
sub = df[(df["avg_degree"] >= 1) & (df["relax_success_ratio"] < 0.99)].copy()
@@ -368,4 +359,10 @@ def nonlinear_regression(df):
print(f"Saved nonlinear regression plots to {nlr_save_folder}")
nonlinear_regression(df)
E_vs_relax_attempts(df) # 1
sigma_vs_relax_success_ratio(df) # 2
avg_degree_vs_relax_success_ratio(df) # 3
log_avg_degree_vs_log_ratio(df) # 4
regime_distribution(df) # 5
nonlinear_regression(df) # 6
@@ -28,7 +28,7 @@ from sklearn.metrics import r2_score
# k3: cost per relax_attempt (should be equal across heaps)
# k4: cost per decrease-key (binary: should scale with log2N; fibonacci: should be constant)
csv_file = "results/synthetic_data/raw/20260418_095837.csv"
csv_file = "results/synthetic_data/raw/20260421_031740.csv"
save_folder = f"results/synthetic_data/derived/{os.path.splitext(os.path.basename(csv_file))[0]}/processing_time_analysis"
os.makedirs(save_folder, exist_ok=True)
@@ -85,6 +85,10 @@ log_n = np.log2(np.array(nodes)).reshape(-1, 1)
bin_reg = LinearRegression().fit(log_n, k4_bin)
r2_bin = r2_score(k4_bin, bin_reg.predict(log_n))
# fibonacci: k4 ~ log₂N 회귀
fib_reg = LinearRegression().fit(log_n, k4_fib)
r2_fib = r2_score(k4_fib, fib_reg.predict(log_n))
n_line = np.linspace(min(nodes), max(nodes), 300)
log_n_line = np.log2(n_line).reshape(-1, 1)
@@ -96,6 +100,8 @@ ax.plot(nodes, k4_bin, marker="o", color="steelblue", label="binary k4")
ax.plot(nodes, k4_fib, marker="s", color="darkorange", label="fibonacci k4")
ax.plot(n_line, bin_reg.predict(log_n_line), color="steelblue", linestyle="--", linewidth=1.5,
label=f"binary fit (∝ log₂N) R²={r2_bin:.3f}")
ax.plot(n_line, fib_reg.predict(log_n_line), color="steelblue", linestyle="--", linewidth=1.5,
label=f"fibonacci fit (∝ log₂N) R²={r2_fib:.3f}")
ax.set_xlabel("N (nodes)")
ax.set_ylabel("k4 — decrease-key cost per call [s]")
ax.set_title("k4 (decrease-key unit cost) vs N")