pymatch выдает ошибку при подгонке: невозможно принудительно привести к серии, длина должна быть 1: задана xxx

#python

#python

Вопрос:

Я пытаюсь создать соответствие баллов с помощью pymatch. К сожалению, я получаю следующую ошибку

 Fitting Models on Balanced Samples: 1200Error: Unable to coerce to Series, length must be 1: given 1898
  

Вот мой код

 from sklearn.datasets.samples_generator import make_blobs
from pymatch.Matcher import Matcher
import pandas as pd
import numpy as np

X, y = make_blobs(n_samples=5000, centers=2, n_features=2, cluster_std=3.5)
df = pd.DataFrame(dict(x=X[:,0], y=X[:,1], label=y))
df['population'] = np.random.choice([1, 0], size=len(df), p=[0.8, 0.2])

control = df[df.label == 1]
test = df[df.label == 0]

m = Matcher(test, control, yvar="population", exclude=['label'])

m.fit_scores(balance=True, nmodels=200)
  

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

Ответ №1:

Понижение рейтинга pandas у меня не сработало, но я нашел, в чем проблема.

Это ошибка в методе _scores_to_accuracy() из Matcher.py . Я загрузил исходный файл, отредактировал функцию на своем локальном компьютере, и теперь она работает нормально.

https://github.com/benmiroglio/pymatch/issues/23

Ответ №2:

Пожалуйста, понизьте рейтинг своих pandas до версии 0.23.4.

Используйте код:

 pip install pandas==0.23.4