X_train = (((X_tr[:, None] & (1 << np.arange(8)))) > 0).astype( int) # vector-> binary matrix Y_train = np.array(Y_train) # X_test = np.array(X_test).reshape(-1,1) X_te = np.array(X_test) X_test = (((X_te[:, None] & (1 << np.arange(8)))) > 0).astype(int) Y_test = np.array(Y_test) return [X_train, X_test, Y_train, Y_test] data = load_dataset() kf = SequenceKFold(seq_lengths(data[1]), 2) for tuple in kf: train_len = tuple[1] test_len = tuple[3] split = dataset_split(tuple[0], tuple[2]) #train the model clf = MultinomialHMM() clf.fit(split[0], split[2], train_len) #evaluate the model Y_pred = clf.predict(split[1], test_len) print('Accuracy:') print(clf.score(split[1], split[3], test_len)) print('Confusion matrix:') labels = list(data[2].values()) print(confusion_matrix(split[3], Y_pred, labels)) print('Report:') target_names = list(data[2].keys()) print(classification_report(split[3], Y_pred, target_names=target_names))