Я использовал pysal.weights
для вычисления пространственной переменной лага ('цена') с весом гауссовского ядра, ему удалось найти все ближайшие kW.neighbors
, но некоторые строки не получили kW.weights
, таким образом, не все строки получили переменную лага (цена).
Ни одна из строк геометрии координат или столбцов цен не является наном или нулем. Поэтому я не уверен, что пошло не так.
ошибка выглядит следующим образом:
/Users/xxx/miniconda3/lib/python3.6/site-packages/libpysal/weights/distance.py:645: RuntimeWarning: invalid value encountered in true_divide
zi = np.array([dict(list(zip(ni, di)))[nid] for nid in nids]) / bw[i]
/Users/xxx/miniconda3/lib/python3.6/site-packages/libpysal/weights/weights.py:171: UserWarning: The weights matrix is not fully connected. There are 796 components
warnings.warn("The weights matrix is not fully connected. There are %d components" % self.n_components)
/Users/xxx/miniconda3/lib/python3.6/site-packages/libpysal/weights/weights.py:171: UserWarning: The weights matrix is not fully connected. There are 796 components
warnings.warn("The weights matrix is not fully connected. There are %d components" % self.n_components)
Вот код:
lag_vars=['price']
kW = lp.weights.Kernel.from_dataframe(df.loc[:,lag_vars+['geometry']], fixed=False, function='gaussian', k=10)
kW = fill_diagonal(kW, 0)
kW.transform = 'r'
WX = lp.weights.lag_spatial(kW, df.loc[:,lag_vars])
WXtable = pd.DataFrame(WX, columns=['lag_{}'.format(name) for name in lag_vars])
fd_lag = pd.concat((df,WXtable),axis=1)