遗传算法

This commit is contained in:
Cricial
2026-03-15 17:15:30 +08:00
parent 03ac80715f
commit a69e272e43
27 changed files with 934 additions and 191 deletions

View File

@@ -11,9 +11,16 @@ sql_file = "query_top35_products.sql"
# 指定对比列表
specified_list = [
'61','68','65','66','59','71','77','7','38','95','58','90','56','57','97','98',
'27','8','11','9','21','96','99','100','44','45','46','47','48','49','50','51',
'52','53','54','55'
'32', '33', '34', '35', '36', '37',
'38', '39', '41', '42', '43',
'46', '47', '48', '49',
'51', '52', '53', '54', '55',
'56', '57', '58',
'59', '60', '61', '62', '63', '64', '65', '66',
'68', '70', '71', '73', '74', '78', '79',
'90', '91', '92', '93', '94',
'95', '96', '97', '99', '100', '101',
'102', '103', '104', '105', '106', '107', '108', '109'
]
specified_set = set(specified_list)
@@ -35,8 +42,8 @@ print(f"[信息] 查询完成,获取到 {len(df)} 条记录。")
all_results = []
for ga_id, group in df.groupby("ga_id"):
vulnerable35_product = group['id_product'].astype(str).tolist()
vulnerable_set = set(vulnerable35_product)
vulnerable_product = group['id_product'].astype(str).tolist()
vulnerable_set = set(vulnerable_product)
matching = vulnerable_set & specified_set
extra = vulnerable_set - specified_set
@@ -44,7 +51,7 @@ for ga_id, group in df.groupby("ga_id"):
all_results.append({
"ga_id": ga_id,
"vulnerable35": ",".join(vulnerable35_product),
"vulnerable": ",".join(vulnerable_product),
"matching_count": len(matching),
"matching_products": ",".join(matching),
"extra_count": len(extra),
@@ -57,5 +64,5 @@ for ga_id, group in df.groupby("ga_id"):
# 输出 CSV
# ===============================
df_results = pd.DataFrame(all_results)
df_results.to_csv("vulnerable20_match_results_new1122.csv", index=False, encoding='utf-8-sig')
df_results.to_csv("vulnerable63_match_results_new260111.csv", index=False, encoding='utf-8-sig')
print("[完成] 已生成 vulnerable35_match_results.csv")

View File

@@ -22,7 +22,7 @@ product_count AS (
),
ranked_products AS (
-- 按每个 ga_id 的产品出现次数排序,并取前35
-- 按每个 ga_id 的产品出现次数排序,并取前 x
SELECT *,
ROW_NUMBER() OVER (PARTITION BY ga_id ORDER BY cnt DESC) AS rn
FROM product_count

View File

@@ -0,0 +1,2 @@
ga_id,vulnerable35,matching_count,matching_products,extra_count,extra_products,missing_count,missing_products
1,"95,99,90,91,51,53,93,52,54,55,92,50,94,9,48,45,47,46,49,44",16,"55,49,52,95,51,53,93,90,47,54,48,99,91,94,46,92",4,"9,45,44,50",41,"109,65,66,56,34,100,74,32,42,37,35,61,64,38,68,107,73,108,57,97,59,36,103,58,60,63,96,101,71,39,62,104,105,106,70,78,79,102,33,41,43"
1 ga_id vulnerable35 matching_count matching_products extra_count extra_products missing_count missing_products
2 1 95,99,90,91,51,53,93,52,54,55,92,50,94,9,48,45,47,46,49,44 16 55,49,52,95,51,53,93,90,47,54,48,99,91,94,46,92 4 9,45,44,50 41 109,65,66,56,34,100,74,32,42,37,35,61,64,38,68,107,73,108,57,97,59,36,103,58,60,63,96,101,71,39,62,104,105,106,70,78,79,102,33,41,43

View File

@@ -0,0 +1,2 @@
ga_id,vulnerable,matching_count,matching_products,extra_count,extra_products,missing_count,missing_products
1,"95,99,90,91,51,53,93,52,54,55,92,50,94,9,48,45,47,46,49,44",16,"49,51,46,92,95,99,53,94,52,91,48,93,55,54,90,47",4,"50,44,45,9",41,"109,105,108,103,63,73,42,96,70,74,43,61,66,32,79,58,60,104,97,64,57,33,102,59,106,100,68,35,101,34,107,39,56,36,62,41,65,37,38,78,71"
1 ga_id vulnerable matching_count matching_products extra_count extra_products missing_count missing_products
2 1 95,99,90,91,51,53,93,52,54,55,92,50,94,9,48,45,47,46,49,44 16 49,51,46,92,95,99,53,94,52,91,48,93,55,54,90,47 4 50,44,45,9 41 109,105,108,103,63,73,42,96,70,74,43,61,66,32,79,58,60,104,97,64,57,33,102,59,106,100,68,35,101,34,107,39,56,36,62,41,65,37,38,78,71