import sys sys.path.append('../') import numpy as np from pyBKT.models import Model np.seterr(divide='ignore', invalid='ignore') skills = ["Percent Of", "Addition and Subtraction Integers", "Conversion of Fraction Decimals Percents", "Volume Rectangular Prism", "Venn Diagram", "Equation Solving Two or Fewer Steps", "Volume Cylinder", "Multiplication and Division Integers", "Area Rectangle", "Addition and Subtraction Fractions", ] model = Model(seed = 0, num_fits = 1) print("BKT") print(model.crossvalidate(data_path = "data/as.csv", skills = skills, metric = "rmse")["rmse"].values) print() print("Item Learning Effect") print(model.crossvalidate(data_path = "data/as.csv", skills = skills, multilearn = "problem_id", metric = "rmse")["rmse"].values)
import numpy as np from pyBKT.models import Model np.seterr(divide='ignore', invalid='ignore') skills = [ "Percent Of", "Addition and Subtraction Integers", "Conversion of Fraction Decimals Percents", "Volume Rectangular Prism", "Venn Diagram", "Equation Solving Two or Fewer Steps", "Volume Cylinder", "Multiplication and Division Integers", "Area Rectangle", "Addition and Subtraction Fractions", ] model = Model(seed=0, num_fits=20) print("BKT") #print(model.crossvalidate(data_path = "data/as.csv", skills = skills, metric = "auc")) print( model.crossvalidate(data_path="data/as.csv", skills=skills, metric="rmse")) print() print("KT-IDEM") #print(model.crossvalidate(data_path = "data/as.csv", skills = skills, multigs = True, metric = "auc")) print( model.crossvalidate(data_path="data/as.csv", skills=skills, multigs=True, metric="rmse"))
import sys sys.path.append('../') import numpy as np from pyBKT.models import Model np.seterr(divide='ignore', invalid='ignore') #only one skill is shown due to the high time complexity needed to fit the item order effect model skills = ["Venn Diagram"] model = Model(seed=0, num_fits=10) print("BKT") print( model.crossvalidate(data_path="data/as.csv", skills=skills, metric="rmse")) print() print("Item Order Effect") print( model.crossvalidate(data_path="data/as.csv", skills=skills, multipair=True, metric="rmse")["rmse"].values)
import sys sys.path.append('../') import numpy as np from pyBKT.models import Model np.seterr(divide='ignore', invalid='ignore') #only one skill is shown due to the high time complexity needed to fit the item order effect model skills = ["Venn Diagram"] model = Model(seed = 0, num_fits = 5) print("BKT") print(model.crossvalidate(data_path = "data/as.csv", skills = skills, metric = "rmse")) print(model.params()) print() print("Item Order Effect") print(model.crossvalidate(data_path = "data/as.csv", skills = skills, multipair = True, metric = "rmse")) print(model.params().to_string())
import sys sys.path.append('../') import numpy as np from pyBKT.models import Model np.seterr(divide='ignore', invalid='ignore') model = Model(seed=0, num_fits=20) model.fit(data_path="data/builder_train_preprocessed.csv") model.evaluate(data_path="data/builder_test_preprocessed.csv") model2 = Model(seed=0, num_fits=20) model2.fit(data_path="data/builder_train_preprocessed.csv", forgets=True) model2.evaluate(data_path="data/builder_test_preprocessed.csv")
def prediction_code(): data = pd.read_csv('updated_data.csv') model = Model(seed=42, num_fits=6) data['skill_name'] = data['subCategory'] model.fit(data=data) return model
maes = [] all_files.sort() for i in all_files: if i == "README.txt" or i == ".DS_Store": continue print("Creating model for ", i) df0 = pd.read_csv("./data/glops-exact-processed/" + i) seq_length = round(len(df0) / len(df0["user_id"].unique())) df_train = (df0.groupby('user_id').apply( lambda x: x.iloc[:-1] if len(x) > 1 else x).reset_index(drop=True) ) #remove all but last element model = Model(num_fits=10, seed=2020) model.fit(data=df_train) predictions = model.predict(data=df0) y_pred = predictions["correct_predictions"][seq_length - 1::seq_length] y_true = df0["correct"][seq_length - 1::seq_length] bkt_mae = sk.mean_absolute_error(y_true, y_pred) df0 = pd.read_csv("./data/glops-exact-processed/" + i) seq_length = round(len(df0) / len(df0["user_id"].unique())) df_train = (df0.groupby('user_id').apply( lambda x: x.iloc[:-1] if len(x) > 1 else x).reset_index(drop=True) ) #remove all but last element model2 = Model(num_fits=10, seed=2020)