Формы не выровнены в Python пакете вменения данных AutoImpute? - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь использовать (относительно новый) пакет Python AutoImpute , но все равно получаю ошибку несоответствия формы при попытке использовать определенный столбец в качестве предиктора.

Так выглядит мой pandas фрейм данных

Я могу вменять, используя столбцы «пол», «группа» и «binned_age», но не используя столбец «эксперимент» . Когда я пытаюсь это сделать, я получаю эту ошибку: ValueError: shapes (9,) and (4,13) not aligned: 9 (dim 0) != 4 (dim 0)

Это мой код для фактической установки и запуска импутера:

cat_predictors = ['experiment', 'sex', 'group', 'binned_age']

si = SingleImputer(
    strategy={'FSIQ': 'default predictive'}, 
    predictors={'FSIQ': cat_predictors},
)
imputed_data = si.fit_transform(df2)

Пытаясь диагностировать проблему, я обнаружил из того, что если я уменьшу количество уникальных строк в столбце «эксперимент» до 3 или меньше, моя проблема по какой-то причине исчезнет. Но я не хочу этого делать и терять часть своих данных. Любая помощь?

Полная трассировка ниже:

ValueError                                Traceback (most recent call last)
<ipython-input-11-3d4388ba92e4> in <module>
      1 si = SingleImputer(
      2     strategy={'FSIQ': 'pmm'}, imp_kwgs={'pmm': {'tune': 10000, 'sample':10000}})
----> 3 data_imputed_once = si.fit_transform(df2)

/om/user/agupta81/anaconda/envs/myenv/lib/python3.8/site-packages/autoimpute/imputations/dataframe/single_imputer.py in fit_transform(self, X, y)
    288             X (pd.DataFrame): imputed in place or copy of original.
    289         """
--> 290         return self.fit(X, y).transform(X)

/om/user/agupta81/anaconda/envs/myenv/lib/python3.8/site-packages/autoimpute/utils/checks.py in wrapper(d, *args, **kwargs)
     59             err = f"Neither {d_err} nor {a_err} are of type pd.DataFrame"
     60             raise TypeError(err)
---> 61         return func(d, *args, **kwargs)
     62     return wrapper
     63 

/om/user/agupta81/anaconda/envs/myenv/lib/python3.8/site-packages/autoimpute/utils/checks.py in wrapper(d, *args, **kwargs)
    124 
    125         # return func if no missingness violations detected, then return wrap
--> 126         return func(d, *args, **kwargs)
    127     return wrapper
    128 

/om/user/agupta81/anaconda/envs/myenv/lib/python3.8/site-packages/autoimpute/utils/checks.py in wrapper(d, *args, **kwargs)
    171             err = f"All values missing in column(s) {nc}. Should be removed."
    172             raise ValueError(err)
--> 173         return func(d, *args, **kwargs)
    174     return wrapper
    175 

/om/user/agupta81/anaconda/envs/myenv/lib/python3.8/site-packages/autoimpute/imputations/dataframe/single_imputer.py in transform(self, X, imp_ixs)
    274 
    275             # perform imputation given the specified imputer and value for x_
--> 276             X.loc[imp_ix, column] = imputer.impute(x_)
    277         return X
    278 

/om/user/agupta81/anaconda/envs/myenv/lib/python3.8/site-packages/autoimpute/imputations/series/pmm.py in impute(self, X)
    187         # imputed values are actual y vals corresponding to nearest neighbors
    188         # therefore, this is a form of "hot-deck" imputation
--> 189         y_pred_bayes = alpha_bayes + beta_bayes.dot(X.T)
    190         n_ = self.neighbors
    191         if X.columns.size == 1:

ValueError: shapes (9,) and (4,13) not aligned: 9 (dim 0) != 4 (dim 0)
...