Неперезаписываемый + многочисленная чтением карта в Java?

ЧАСТЬ 1:

Ошибка TypeEr: объект builtin_function_or_method не может быть подписан

Это чистая ошибка numpy, и она появляется потому, что вы забыли использовать круглые скобки () для определения массива numpy.


ЧАСТЬ 2:

Прежде всего, в init_medians вы пропускаете 4 списка, но они не имеют одинаковые размеры. Последний список содержит 4 элемента (т.е. [0.01, 0.02, 0.03, 0.04]) вместо 3, чтобы представлять медианы кластера.

Во-вторых, аргумент init KMeans ожидает в качестве входных данных символ массива (n_clusters, n_features). В вашем случае это должен быть (4, 3) массив пустышек, подобный следующему:

init_medians=np.array( [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6], [0.7, 0.8, 0.9], [0.01, 0.02, 0.03]] )
model = KMeans(n_clusters=4, max_iter=300, init=init_medians)
model.fit(clean)

ЧАСТЬ 3: Матрица данных X должна быть Numpy массив не список списков.

Полный код:

clean=np.array([[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3]])

init_medians=np.array([[0.1, 0.2, 0.3], [0.4, 0.5, 0.6], [0.7, 0.8, 0.9], [0.01, 0.02, 0.03]])
model = KMeans(n_clusters=4, max_iter=300, init=init_medians)
model.fit(clean)
5
задан yclian 12 March 2009 в 04:27
поделиться

6 ответов

Если у Вас на самом деле нет проблем производительности (и проследили их до этого кода), я не волновался бы об этом.

И прежде чем я пытался заменить Карту, я посмотрю на то, почему, точно, я должен сделать 4 000 поисков (200 записей 20 чтениями каждый) для генерации веб-страницы.

Но в ставке я предположил бы, что время, чтобы сделать те 4 000 поисков окажется незначительным по сравнению с другими частями процесса.

7
ответ дан 13 December 2019 в 19:36
поделиться

Если все записи сделаны перед любым из чтений затем Вы могли бы использовать метод Collectons.unmodifiableMap.

Если это не так затем написание кода, чтобы сделать, что Вы хотите, не ужасно трудно (блуждания прочь для нахождения сообщения, которое имеет абсолютный код в нем...),

Хм... только, чтобы быть уверенным, что вопрос - то, что я думаю..., действительно ли аспектом только для чтения является важная часть, или попытка состоит в том, чтобы получить доступ к данным быстро самая важная часть?

Править: (на основе комментария)

Вы проверили для наблюдения с профилировщиком, если код является медленным? Если не затем Вы еще не должны волноваться об этом.

2
ответ дан 13 December 2019 в 19:36
поделиться

Если бы это было на самом деле узким местом, то я посмотрел бы на изменение размеров карты для предотвращения коллизий.

1
ответ дан 13 December 2019 в 19:36
поделиться

Если Вы строго пишете в начале, прежде чем читатели запустят, таким образом, синхронизация и совместное использование через потоки не являются проблемами... HashMap является Вашим другом. Когда Вы не уверены в этом: ConcurrentHashMap.

Обе реализации являются частью JDK.

0
ответ дан 13 December 2019 в 19:36
поделиться

Несколько лет назад (как школьный проект), я реализовал в C неперезаписываемое считанное много отображение (и другие наборы), который взял существующий набор, и затем "изолировал его" путем создания намного большей памяти и эффективного кэшем представления (например, график был сохранен как оптимизированный массив). Мы видели удивительные различия в производительности.

Так как Java поддерживает интерфейсы, реализование чего-то вроде этого может быть намного легче (и на самом деле поощренный), но я не знаком с out-of-the-box реализацией.

0
ответ дан 13 December 2019 в 19:36
поделиться

Если это действительно стоит проблемы, Вы могли бы попробовать идеальное хеширование. Я не знаком ни с какими реализациями Java, все же.

1
ответ дан 13 December 2019 в 19:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: