У меня есть текстовый файл, содержащий данные, представляющие собой разреженную матрицу в следующем формате:Как вручную создать разреженную матрицу в Python
0 234 345
0 236
0 345 365 465
0 12 35 379
Данные используются для задачи классификации и каждая строка может считаться вектор функции. Первое значение в каждой строке представляет собой метку, следующие за ней значения представляют собой наличие отдельных функций.
Я пытаюсь создать разреженную матрицу с этими значениями (для использования в задаче машинного обучения с изучением scikit). Я нашел и прочитал scipy.sparse documentation, но я не понимаю, как постепенно наращивать разреженную матрицу с исходными данными, подобными этому.
Примеры, которые я нашел до сих пор, показывают, как взять плотную матрицу и преобразовать ее, или как создать собственную разреженную матрицу с надуманными данными, но нет примеров, которые помогли мне здесь. Я нашел этот связанный вопрос SO (Building and updating a sparse matrix in python using scipy), но пример предполагает, что вы знаете максимальные значения COL, ROW, которых я не знаю, так что тип данных не подходит.
До сих пор у меня есть следующий код, чтобы прочитать документ и анализировать значения в то, что кажется разумным:
def get_sparse_matrix():
matrix = []
with open("data.dat", 'r') as f:
for i, line in enumerate(f):
row = line.strip().split()
label = row[0]
features = entry[1:]
matrix.append([(i, col) for col in features])
sparse_matrix = #magic happens here
return sparse_matrix
Так вопросы являются,
- Что является подходящим разреженным матричного типа для использовать здесь?
- Я направляюсь в правильном направлении с кодом, который у меня есть?
Любая помощь с благодарностью.
Я не понимаю, формат, для каждый элемент в матрице, вам нужны «строка», «кол» и «значение». Где информация «значение»? Чтобы постепенно создавать разреженную матрицу, вы можете использовать: http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.sparse.dok_matrix.html#scipy.sparse.dok_matrix – HYRY
Если это необходимо чтобы иметь значение, тогда это может быть 1 или True. Означает ли это это? –
@HYRY hanks для подсказки на dok_matrix, но разве мне все еще нужно знать общее количество столбцов при инициализации dok_matrix? Часть моей проблемы заключается в том, что я не уверен, что будет максимальным значением COL. Я мог бы написать сценарий, который обнаруживает максимальное значение для данного файла данных, но думал, что может существовать некоторый существующий scipy разреженный тип данных матрицы, который не требует, чтобы я это определял. –