pyLDAvis: объект типа 'ValuesView' не поддерживает сериализацию в формате JSON - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь использовать pyLDAvis для отображения результатов неотрицательной матричной факторизации, которую можно использовать в качестве тематической модели.Модель построена с использованием склеарна NMF .Я делаю все необходимое масштабирование и преобразования, а затем я передаю pyLDAvis.prepare () следующим образом:

code_vis_data_mmds = pyLDAvis.prepare(topic_term_dists = nmf_frobenius_cd_X_manual.components_, doc_topic_dists = pd.DataFrame(doc_topic_dists), doc_lengths = doc_lengths, vocab = dictionary.values(), term_frequency = term_frequency, mds='mmds')
  • topic_term_dists параметр принимает в качестве значений компоненты_ из моего NMF
  • doc_topic_dists результат метода преобразования модели NMF, примененного к моей матрице tf-idf
  • Vocab - это словарь gensim's corpora Я вычислил себя на наборе данных,то же самое, что использовалось для построения матрицы tf-idf
  • термин-частота происходит из суммы по оси на моей матрице подсчета, также построенной из словаря

Эта часть кодавыдает одно предупреждение об устаревании следующим образом:

C: \ Users \ VDE10 \ Anaconda3 \ lib \ site-packages \ pyLDAvis_prepare.py: 387: Предупреждение об устаревании: .ix устарело.Пожалуйста, используйте .loc для индексирования на основе меток или .iloc для позиционной индексации

Кроме того, я также получаю три предупреждения времени выполнения:

TypeError                                 Traceback (most recent call last)
<ipython-input-48-59ece996466e> in <module>()
     44 # pyLDAvis.save_html(code_vis_data_pcoa,"LDA_vis_pcoa.html")
     45 
---> 46 pyLDAvis.display(code_vis_data_mmds)

~\Anaconda3\lib\site-packages\pyLDAvis\_display.py in display(data, local, **kwargs)
    220         kwargs['d3_url'], kwargs['ldavis_url'], kwargs['ldavis_css_url'] = write_ipynb_local_js()
    221 
--> 222     return HTML(prepared_data_to_html(data, **kwargs))
    223 
    224 def show(data, ip='127.0.0.1', port=8888, n_retries=50,

~\Anaconda3\lib\site-packages\pyLDAvis\_display.py in prepared_data_to_html(data, d3_url, ldavis_url, ldavis_css_url, template_type, visid, use_http)
    176                            d3_url=d3_url,
    177                            ldavis_url=ldavis_url,
--> 178                            vis_json=data.to_json(),
    179                            ldavis_css_url=ldavis_css_url)
    180 

~\Anaconda3\lib\site-packages\pyLDAvis\_prepare.py in to_json(self)
    415 
    416     def to_json(self):
--> 417        return json.dumps(self.to_dict(), cls=NumPyEncoder)

~\Anaconda3\lib\json\__init__.py in dumps(obj, skipkeys, ensure_ascii, check_circular, allow_nan, cls, indent, separators, default, sort_keys, **kw)
    236         check_circular=check_circular, allow_nan=allow_nan, indent=indent,
    237         separators=separators, default=default, sort_keys=sort_keys,
--> 238         **kw).encode(obj)
    239 
    240 

~\Anaconda3\lib\json\encoder.py in encode(self, o)
    197         # exceptions aren't as detailed.  The list call should be roughly
    198         # equivalent to the PySequence_Fast that ''.join() would do.
--> 199         chunks = self.iterencode(o, _one_shot=True)
    200         if not isinstance(chunks, (list, tuple)):
    201             chunks = list(chunks)

~\Anaconda3\lib\json\encoder.py in iterencode(self, o, _one_shot)
    255                 self.key_separator, self.item_separator, self.sort_keys,
    256                 self.skipkeys, _one_shot)
--> 257         return _iterencode(o, 0)
    258 
    259 def _make_iterencode(markers, _default, _encoder, _indent, _floatstr,

~\Anaconda3\lib\site-packages\pyLDAvis\utils.py in default(self, obj)
    144         if isinstance(obj, np.float64) or isinstance(obj, np.float32):
    145             return float(obj)
--> 146         return json.JSONEncoder.default(self, obj)

~\Anaconda3\lib\json\encoder.py in default(self, o)
    178         """
    179         raise TypeError("Object of type '%s' is not JSON serializable" %
--> 180                         o.__class__.__name__)
    181 
    182     def encode(self, o):

TypeError: Object of type 'ValuesView' is not JSON serializable

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

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