Source code for pykt.models.lpkt_utils

#!/usr/bin/env python
# coding=utf-8
import os
import pandas as pd
import numpy as np

[docs]def generate_qmatrix(data_config, gamma=0.0): df_train = pd.read_csv(os.path.join(data_config["dpath"], "train_valid.csv")) df_test = pd.read_csv(os.path.join(data_config["dpath"], "test.csv")) df = pd.concat([df_train, df_test]) problem2skill = dict() for i, row in df.iterrows(): cids = [int(_) for _ in row["concepts"].split(",")] qids = [int(_) for _ in row["questions"].split(",")] for q,c in zip(qids, cids): if q in problem2skill: problem2skill[q].append(c) else: problem2skill[q] = [c] n_problem, n_skill = data_config["num_q"], data_config["num_c"] q_matrix = np.zeros((n_problem + 1, n_skill + 1)) + gamma for p in problem2skill.keys(): for c in problem2skill[q]: q_matrix[p][c] = 1 np.savez(os.path.join(data_config["dpath"], "qmatrix.npz"), matrix = q_matrix) return q_matrix