Внезапно Probit не работает на PySAL (1.14.4) - PullRequest
0 голосов
/ 18 марта 2019

Вплоть до прошлой недели у меня был кусок кода для вычисления шансов чего-либо, происходящего для серии событий, но начиная с этой недели код не работает.

Код следующий:

import numpy as np
import pysal
import os

dbf = pysal.open('file.csv','r')

y = np.array([dbf.by_col('result')]).T

names_to_extract = ['dist', 'angle']
x = np.array([dbf.by_col(name) for name in names_to_extract]).T

id = np.array([dbf.by_col('incidenceId')]).T

model = pysal.spreg.probit.Probit(y, x, w=None, name_y='result', name_x=['dist','angle'], name_w=None, name_ds=None)

fin = np.column_stack((id, model.y, model.predy))

os.chdir("/destinyfolder")

np.savetxt('xg.csv', fin, delimiter=',', fmt='%d, %d, %f')

И я получаю эту ошибку:

/usr/local/lib/python3.7/site-packages/pysal/__init__.py:65: VisibleDeprecationWarning: PySAL's API will be changed on 2018-12-31. The last release made with this API is version 1.14.4. A preview of the next API version is provided in the `pysalnext` package. The API changes and a guide on how to change imports is provided at https://migrating.pysal.org
  ), VisibleDeprecationWarning)
Traceback (most recent call last):
  File "xg.py", line 14, in <module>
    model = pysal.spreg.probit.Probit(y, x, w=None, name_y='result', name_x=['dist','angle'], name_w=None, name_ds=None)
  File "/usr/local/lib/python3.7/site-packages/pysal/spreg/probit.py", line 807, in __init__
    n = USER.check_arrays(y, x)
  File "/usr/local/lib/python3.7/site-packages/pysal/spreg/user_output.py", line 359, in check_arrays
    if not spu.spisfinite(i):
  File "/usr/local/lib/python3.7/site-packages/pysal/spreg/sputils.py", line 267, in spisfinite
    return np.isfinite(a.sum())
  File "/usr/local/lib/python3.7/site-packages/numpy/core/_methods.py", line 36, in _sum
    return umr_sum(a, axis, dtype, out, keepdims, initial)
TypeError: cannot perform reduce with flexible type

Обычно я получаю только DeprecationWarning, но код работает.С сегодняшнего дня код не работает.Учтите, что я сейчас использую pysal 1.14.4, numpy 1.16.2 и scipy 1.2.1.Я не обновил свой код до pysal 2.0, потому что я не мог понять, как перенести этот код в новую версию (и именно поэтому я получил DeprecationWarning во-первых).

Вотфайл: file.csv

Можете ли вы помочь мне сделать эту работу?

1 Ответ

0 голосов
/ 19 марта 2019

Записи в вашем x являются строками, конвертируем их в float:

x = np.array(...).T.astype(np.float)

Сначала это не удастся из-за значений NULL в файле file.csv, вам необходимо либо отфильтровать их, либо указать, в какое значение с плавающей точкой их следует преобразовать.

Прежде чем опубликовать вопрос, попробуйте сначала простой поиск в Google для немедленного ответа. Если вы погуглите эту ошибку вместе с «pysal 1.14.4», вы сразу найдете это решение:

Ошибка типа: невозможно выполнить уменьшение с гибким типом

...