Ошибка при запуске кода Python для моделирования PLSR - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь разработать модель с использованием PLSR (Регрессия частичных наименьших квадратов) в Python3 с использованием предоставленного кода https://github.com/pgbrodrick/ensemblePLSR. Также предоставляются примеры данных.

Когда я пытаюсь запустить код, он выдает ошибку

>>> python3 ensemble_plsr.py example_settings.txt

Я использую Python (3.7.3), python modules scikit- учиться (0.20.2) и pandas (0.23.3).

/usr/lib/python3/dist-packages/sklearn/externals/joblib.py:1: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
  import imp
n bad bands 57
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/pandas/core/indexes/base.py", line 3078, in get_loc
    return self._engine.get_loc(key)
  File "pandas/_libs/index.pyx", line 140, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/index.pyx", line 162, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/hashtable_class_helper.pxi", line 1492, in pandas._libs.hashtable.PyObjectHashTable.get_item
  File "pandas/_libs/hashtable_class_helper.pxi", line 1500, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: -1

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "ensemble_plsr.py", line 173, in <module>
    df.pop(col)
  File "/usr/lib/python3/dist-packages/pandas/core/generic.py", line 760, in pop
    result = self[item]
  File "/usr/lib/python3/dist-packages/pandas/core/frame.py", line 2688, in __getitem__
    return self._getitem_column(key)
  File "/usr/lib/python3/dist-packages/pandas/core/frame.py", line 2695, in _getitem_column
    return self._get_item_cache(key)
  File "/usr/lib/python3/dist-packages/pandas/core/generic.py", line 2491, in _get_item_cache
    values = self._data.get(item)
  File "/usr/lib/python3/dist-packages/pandas/core/internals.py", line 4115, in get
    loc = self.items.get_loc(item)
  File "/usr/lib/python3/dist-packages/pandas/core/indexes/base.py", line 3080, in get_loc
    return self._engine.get_loc(self._maybe_cast_indexer(key))
  File "pandas/_libs/index.pyx", line 140, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/index.pyx", line 162, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/hashtable_class_helper.pxi", line 1492, in pandas._libs.hashtable.PyObjectHashTable.get_item
  File "pandas/_libs/hashtable_class_helper.pxi", line 1500, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: -1

1 Ответ

0 голосов
/ 11 марта 2020

Короче говоря, вы пытаетесь удалить столбцы, для которых нет ссылки в строке 173 ensemble_plsr.py, следовательно, KeyError во время выполнения. Что происходит внутри, так это то, что когда Python пытается выполнить метод pop в DataFrame для неопределенного / несуществующего столбца, возникает эта ошибка. Существуют различные способы решения этой проблемы, но это решение разрешит обнаруженную ошибку:

Замените строки 172 и 173 в ensemble_plsr.py следующим:

for col in sf.get_setting('ignore columns'):
    if col != 'nothing_here':
      df.pop(col)

Замените строку 16 в example_settings.txt со следующим:

ignore columns(any other columns to remove) = nothing_here

Хорошая новость, вы закончили с этой проблемой. Плохая новость, вы столкнетесь со следующей ошибкой, но вы в пути!

...