Esempio n. 1
0
    for student in students:
        for attempt in student.attempts:
            if attempt.course.id_num==target_course_code:
                data.append(student.attempts)
    #new course code
    for attempts in data:
        for attempt in attempts:
            if attempt.course.id_num==target_course_code and attempt.grade==target_grade:
                attempt.course=newCourse
    newCourses=courses|set([newCourse])
    newCourseCodes=courseCodes|set([newCode])
    data = list(group(d) for d in data)
    return[data,newCode,newCourse,newCourseCodes,newCourses]
[data,newCode,newCourse,newCourseCodes,newCourses]=preprocess(students,courses,courseCodes,courseYcode,yGrade)

apriori=algorithms.apriori_sequence(minsupp,newCourseCodes,data,k_item_set)
support_target=algorithms.support_sequence([(newCode,)],data)
result=[]
for a in apriori:
    if (newCode,) == a[0][-1]:
        support_sequence=algorithms.support_sequence(a[0][:-1],data)
        support_sequence_arrow_target=a[1]
        result.append((a[0],support_sequence,support_sequence_arrow_target,support_sequence_arrow_target/support_sequence,support_sequence_arrow_target/support_sequence/support_target))
result.sort(key=lambda x:x[4])

courseMap={c.id_num:c.name for c in newCourses}
lifthreshold=0.3
for r in result:
    if abs(1-r[4])<lifthreshold:
        continue
    print(r[0])
Esempio n. 2
0
import fileparser
import dateutil.parser
import algorithms


students = fileparser.parse_students()
courses = []

for student in students:
    for attempt in student.attempts:
        courses.append(attempt.course.id_num)

courses = set(courses)

def group(attempts):
    attempts.sort(key=lambda a: dateutil.parser.parse(a.date))
    response = [[attempts[0]]]
    for i in range(1, len(attempts)):
        if attempts[i].date != response[-1][-1].date:
            response.append([attempts[i]])
        else:
            response[-1].append(attempts[i])
    return [set(a.course.id_num for a in x) for x in response]

data = list(group(s.attempts) for s in students)

print(sorted(algorithms.apriori_sequence(0.05, courses, data, 8), key=lambda x: x[1], reverse=True)[0:30])