Как получить точки, представленные нейроном, используя Neupy
Я использую neupy, чтобы получить набор нейронов со следующим кодом:
All = pd.read_csv("inputfile.csv")
df = pd.DataFrame(All)
coords = df.as_matrix(columns=['lat', 'lng'])
sofmnet = algorithms.SOFM(n_inputs=2,
n_outputs=4,
step=0.5,
show_epoch=1,
shuffle_data=True,
verbose=True,
learning_radius=1,
features_grid=(4, 1),)
sofmnet.train(coords,epochs=20)
neuronlocations = sofmnet.weight.T
1-Как прочитать / получить набор точек, связанных с каждым нейроном? 2-В файле inputfile.csv есть поля даты, широты и долготы. Я хочу посчитать количество баллов за каждый нейрон за каждый день. как действовать? Спасибо
1 ответ
Вы можете использовать predict
метод для того, чтобы найти кодировку ближайшего нейрона. Вот пример из официальной документации.
>>> import numpy as np
>>> from neupy import algorithms, environment
>>>
>>> environment.reproducible()
>>>
>>> data = np.array([
... [0.1961, 0.9806],
... [-0.1961, 0.9806],
... [-0.5812, -0.8137],
... [-0.8137, -0.5812],
... ])
>>>
>>> sofm = algorithms.SOFM(
... n_inputs=2,
... n_outputs=2,
... step=0.1,
... learning_radius=0
... )
>>> sofm.train(data, epochs=100)
>>> sofm.predict(data)
array([[0, 1],
[0, 1],
[1, 0],
[1, 0]])
Предсказание возвращает закодированные идентификаторы нейрона. Вы можете получить индекс нейрона, применив argmax к выходу
>>> prediction = sofm.predict(data)
>>> neuron_index = prediction.argmax(axis=1)
Вы можете использовать эту информацию для решения второй проблемы.
>>> df['neuron_index'] = neuron_index
>>> df.groupby(['date', 'neuron_index']).count()
lat lng
date neuron_index
2018-05-06 0 1 1
2018-05-07 0 1 1
1 2 2