def _get_sparse_matrix_from_libsvm()

in src/sagemaker_xgboost_container/algorithm_mode/serve_utils.py [0:0]


def _get_sparse_matrix_from_libsvm(payload):
    pylist = map(lambda x: x.split(" "), payload.split("\n"))
    colon = ":"
    row = []
    col = []
    data = []
    for row_idx, line in enumerate(pylist):
        for item in line:
            if colon in item:
                col_idx = item.split(colon)[0]
                val = item.split(colon)[1]
                row.append(row_idx)
                col.append(col_idx)
                data.append(val)

    row = np.array(row)
    col = np.array(col).astype(int)
    data = np.array(data).astype(float)
    if not (len(row) == len(col) and len(col) == len(data)):
        raise RuntimeError("Dimension checking failed when transforming sparse matrix.")

    return csr_matrix((data, (row, col)))