2013-07-19 4 views
5

Я использую Python с модулем numpy, scipy и scikit-learn.Рассчитать сходство разреженной матрицы

Я хотел бы классифицировать массивы в очень большой разреженной матрице. (100000 * 100000)

Значения в матрице, равны 0 или 1. Единственное, что у меня есть индекс стоимости = 1.

a = [1,3,5,7,9] 
b = [2,4,6,8,10] 

что означает

a = [0,1,0,1,0,1,0,1,0,1,0] 
b = [0,0,1,0,1,0,1,0,1,0,1] 

Как изменить индексный массив на разреженный массив в scipy?

Как можно быстро отсортировать эти массивы?

спасибо.

+0

это заставляет меня задаться вопросом, возможно ли было бы просто сделать всю матрицу, не редка, так как все значения равны 0 или 1 в любом случае, поэтому вместо 64-битного поплавка или около того вы используете только один бит каждый? (я знаю, что это не решает вашу проблему или так, но ваш вопрос заставил меня придумать этот вопрос) – usethedeathstar

+0

Какое сходство вы хотите вычислить? Зачем вам нужна разреженная матрица, а не просто использовать индексы? Как насчет чего-то простого, например len (set (a) & set (b))/float (len (a))? –

+0

На самом деле, я хотел бы сгруппировать эти массивы из подобия. Например, [1,1,1,0] больше напоминает [1,1,0,0], но обратный с [0,0,0,1]. Поскольку количество столбцов и строк велико. Я не знаю, есть ли какой-нибудь метод, который мог бы сделать это раньше. –

ответ

3

Если вы выбираете разреженный coo_matrix вы можете создать его прохождения индексы, как:

from scipy.sparse import coo_matrix 
import scipy 
nrows = 100000 
ncols = 100000 
row = scipy.array([1,3,5,7,9]) 
col = scipy.array([2,4,6,8,10]) 
values = scipy.ones(col.size) 
m = coo_matrix((values, (row,col)), shape=(nrows, ncols), dtype=float) 
+0

Можно ли сделать не квадратную разреженную матрицу с scipy? –

+0

Я никогда не пробовал ... Теперь я на сотовом телефоне ... вы можете попробовать его передать еще один массив индексов и определить форму с еще одним целым числом в кортеже ... –

+0

@Jimmy вы попробовали то, что было предложено здесь ? Просто дайте мне знать, если вам нужно еще ... –

Смежные вопросы