Применение PCA к определенному столбцу панд данных - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь уменьшить количество особенностей набора данных изображений, чтобы сходство косинусов вычислялось быстрее.

У меня есть пандас, который имеет следующую структуру ["url", "cluster_id",«features»] и содержит 81 строку.

Я хотел бы применить sklearn PCA к столбцу «features», который содержит для каждой строки DenseVector (2048 элементов, если быть точным).

Проблема в том, что когда я применяю

pca = skPCA(n_components = 1024) 
pca_pd = pca.fit(list(test_pd["features"].values))

, я фактически уменьшаю количество строк, а не количество объектов для каждой строки.

#Output
pca.components_
array([[-0.0232138 ,  0.01177754, -0.0022028 , ...,  0.00181739,
         0.00500531,  0.00900601],
       [ 0.02912731,  0.01187949,  0.00375974, ..., -0.00153819,
         0.0025645 ,  0.0210677 ],
       [ 0.00099789,  0.02129508,  0.00229157, ..., -0.0045913 ,
         0.00239336, -0.01231318],
       [-0.00134043,  0.01609966,  0.00277412, ..., -0.00944288,
         0.00907663, -0.04781827],
       [-0.01286403,  0.00666523, -0.00318833, ...,  0.00101012,
         0.0045756 , -0.0043937 ]])

У вас есть идея, как решить эту проблему?

1 Ответ

0 голосов
/ 17 апреля 2019

Я думаю, что лучше использовать не список, а массив данных или массив.Если я не ошибаюсь, DenseVector - это тип данных из Spark.

Чтобы преобразовать его: densevector.toArray()

Если вы используете PCA scikit-learn, вы должны также выполнить преобразование не толькоподходит.

Как, pca.fit_transform(array)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...