saved before topic change
This commit is contained in:
@@ -40,8 +40,6 @@ def visualize_weights(file):
|
|||||||
print(f'Kurtosis (original): {kurt:.4f} (정규 기준: 0, excess)')
|
print(f'Kurtosis (original): {kurt:.4f} (정규 기준: 0, excess)')
|
||||||
print(f'Kurtosis (log): {kurt_log:.4f} (정규 기준: 0, excess)')
|
print(f'Kurtosis (log): {kurt_log:.4f} (정규 기준: 0, excess)')
|
||||||
|
|
||||||
return
|
|
||||||
|
|
||||||
save_folder = f"{res_folder}/{file}"
|
save_folder = f"{res_folder}/{file}"
|
||||||
os.makedirs(save_folder, exist_ok=True)
|
os.makedirs(save_folder, exist_ok=True)
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import numpy as np
|
|||||||
|
|
||||||
|
|
||||||
# Initial Setup
|
# 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"
|
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)
|
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}")
|
print(f"Saved E vs relax_attempts plots to {save_folder}")
|
||||||
|
|
||||||
# E_vs_relax_attempts(df)
|
|
||||||
|
|
||||||
|
# 2. sigma vs relax_success_ratio
|
||||||
# sigma vs relax_success_ratio
|
|
||||||
def sigma_vs_relax_success_ratio(df):
|
def sigma_vs_relax_success_ratio(df):
|
||||||
rows = []
|
rows = []
|
||||||
sigma_save_folder = os.path.join(save_folder, "sigma_vs_relax_ratio_controlled")
|
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"))
|
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}")
|
print(f"Saved controlled sigma vs relax_success_ratio plots to {sigma_save_folder}")
|
||||||
|
|
||||||
# sigma_vs_relax_success_ratio(df)
|
|
||||||
|
|
||||||
|
# 3. avg_degree vs relax_success_ratio
|
||||||
# avg_degree vs relax_success_ratio
|
|
||||||
def avg_degree_vs_relax_success_ratio(df):
|
def avg_degree_vs_relax_success_ratio(df):
|
||||||
avgdeg_scatter_folder = os.path.join(save_folder, "avg_deg_vs_ratio_controlled")
|
avgdeg_scatter_folder = os.path.join(save_folder, "avg_deg_vs_ratio_controlled")
|
||||||
os.makedirs(avgdeg_scatter_folder, exist_ok=True)
|
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}")
|
print(f"Saved avg_degree vs ratio plots to {avgdeg_scatter_folder}")
|
||||||
|
|
||||||
# avg_degree_vs_relax_success_ratio(df)
|
|
||||||
|
|
||||||
|
# 4. log_avg_degree vs log_ratio
|
||||||
# log_avg_degree vs log_ratio
|
def log_avg_degree_vs_log_ratio(df):
|
||||||
def log_avg_degree_vs_log_ratio():
|
|
||||||
CEILING = 1
|
CEILING = 1
|
||||||
avgdeg_loglog_folder = os.path.join(save_folder, "avgdeg_vs_ratio_loglog")
|
avgdeg_loglog_folder = os.path.join(save_folder, "avgdeg_vs_ratio_loglog")
|
||||||
os.makedirs(avgdeg_loglog_folder, exist_ok=True)
|
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}")
|
print(f"Saved avg_degree vs ratio log-log plots to {avgdeg_loglog_folder}")
|
||||||
|
|
||||||
# log_avg_degree_vs_log_ratio()
|
|
||||||
|
|
||||||
|
# 5. sigma vs. relax_success_ratio in controlled node,density
|
||||||
def regime_distribution():
|
def regime_distribution(df):
|
||||||
r2_csv = os.path.join(save_folder, "sigma_vs_relax_ratio_controlled", "r2.csv")
|
r2_csv = os.path.join(save_folder, "sigma_vs_relax_ratio_controlled", "r2.csv")
|
||||||
res = pd.read_csv(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}")
|
print(f"Saved regime distribution plots to {regime_save_folder}")
|
||||||
|
|
||||||
# regime_distribution()
|
|
||||||
|
|
||||||
|
# 6. Nonlinear regression: r = (a·ln(sigma) + b) · avg_deg^c
|
||||||
# Nonlinear regression: r = (a·ln(sigma) + b) · avg_deg^c
|
|
||||||
def nonlinear_regression(df):
|
def nonlinear_regression(df):
|
||||||
# Filter: giant component regime only
|
# Filter: giant component regime only
|
||||||
sub = df[(df["avg_degree"] >= 1) & (df["relax_success_ratio"] < 0.99)].copy()
|
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}")
|
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)
|
# k3: cost per relax_attempt (should be equal across heaps)
|
||||||
# k4: cost per decrease-key (binary: should scale with log2N; fibonacci: should be constant)
|
# 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"
|
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)
|
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)
|
bin_reg = LinearRegression().fit(log_n, k4_bin)
|
||||||
r2_bin = r2_score(k4_bin, bin_reg.predict(log_n))
|
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)
|
n_line = np.linspace(min(nodes), max(nodes), 300)
|
||||||
log_n_line = np.log2(n_line).reshape(-1, 1)
|
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(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,
|
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}")
|
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_xlabel("N (nodes)")
|
||||||
ax.set_ylabel("k4 — decrease-key cost per call [s]")
|
ax.set_ylabel("k4 — decrease-key cost per call [s]")
|
||||||
ax.set_title("k4 (decrease-key unit cost) vs N")
|
ax.set_title("k4 (decrease-key unit cost) vs N")
|
||||||
|
|||||||
Reference in New Issue
Block a user