-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgenerate_dataset.py
More file actions
72 lines (64 loc) · 2.4 KB
/
Copy pathgenerate_dataset.py
File metadata and controls
72 lines (64 loc) · 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# generate_dataset.py
# Run: python generate_dataset.py
import json, random, csv
with open('career_data.json','r',encoding='utf-8') as f:
data = json.load(f)
# collect all interest keys across both levels
interest_keys = []
for lvl in data:
for k in data[lvl].keys():
if k not in interest_keys:
interest_keys.append(k)
# collect all careers
all_careers = []
for lvl in data:
for k, v in data[lvl].items():
for c in v.get('careers', []):
if c not in all_careers:
all_careers.append(c)
# helper to pick target career based on selected interests
def pick_target(selected_interests):
# prefer careers that appear in selected_interests' career lists
candidates = []
for key in selected_interests:
# find careers for this key (search both levels)
for lvl in data:
if key in data[lvl]:
candidates += data[lvl][key].get('careers', [])
if not candidates:
return random.choice(all_careers)
# weighted pick: some randomness
return random.choice(candidates)
rows = []
N = 2000 # generate 2000 synthetic rows (adjustable)
for _ in range(N):
# random academic level
level = random.choice(['10th','12th'])
perc = round(random.uniform(30, 98),2) # realistic perc
# randomly select between 1 and 5 interests (from that level preferably)
available_keys = list(data[level].keys())
num_sel = random.randint(1, min(5,len(available_keys)))
selected = random.sample(available_keys, num_sel)
# compute quiz scores per interest (0-50)
quiz_scores = [random.randint(0,50) for _ in selected]
quiz_avg = round(sum(quiz_scores)/len(quiz_scores),2)
top_interest = selected[quiz_scores.index(max(quiz_scores))]
target = pick_target(selected)
# create row dict
row = {
'percentage': perc,
'academic_level': level,
'num_selected_interests': num_sel,
'quiz_average': quiz_avg,
'top_interest': top_interest,
'target_career': target
}
rows.append(row)
# write CSV
fieldnames = ['percentage','academic_level','num_selected_interests','quiz_average','top_interest','target_career']
with open('career_data.csv','w',newline='',encoding='utf-8') as f:
writer = csv.DictWriter(f,fieldnames=fieldnames)
writer.writeheader()
for r in rows:
writer.writerow(r)
print('Generated career_data.csv with', len(rows), 'rows')