Pandas: TypeError: аргумент float() должен быть строкой или числом, а не 'pandas._libs.interval.Interval'

Я пытаюсь решить проблему машинного обучения при сердечных заболеваниях, набор данных из kaggle. Затем я попытался разделить данные на набор поездов и тестовый набор, и после этого объединил модели в одну функцию и предсказал, что эта ошибка появляется в блокноте jupyter.

Вот мой код:

# Split data into X and y
X = df.drop("target", axis=1)
y = df["target"]

Разделение

# Split data into train and test sets
np.random.seed(42)

# Split into train & test set
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2)

Функция прогнозирования

    # Put models in a dictionary
models = {"Logistic Regression": LogisticRegression(),
          "KNN": KNeighborsClassifier(),
          "Random Forest": RandomForestClassifier()}

# Create a function to fit and score models
def fit_and_score(models, X_train, X_test, y_train, y_test):
    """
    Fits and evaluates given machine learning models.
    models : a dict of differetn Scikit-Learn machine learning models
    X_train : training data (no labels)
    X_test : testing data (no labels)
    y_train : training labels
    y_test : test labels
    """
    # Set random seed
    np.random.seed(42)
    # Make a dictionary to keep model scores
    model_scores = {}
    # Loop through models
    for name, model in models.items():
        # Fit the model to the data
        model.fit(X_train, y_train)
        # Evaluate the model and append its score to model_scores
        model_scores[name] = model.score(X_test, y_test)
    return model_scores

И когда я запускаю этот код, появляется эта ошибка

    model_scores = fit_and_score(models=models,
                             X_train=X_train,
                             X_test=X_test,
                             y_train=y_train,
                             y_test=y_test)

model_scores

это ошибка

Где происходит ошибка?

Dani Mesejo 19.12.2020 19:04

После моего последнего кода

blac040 19.12.2020 19:04

Пожалуйста, перечитайте Как спрашивать, так как казалось бы, что вы упустили некоторые важные моменты при первом прочтении, а именно: «НЕ размещайте изображения кода, данных, сообщений об ошибках и т. д. - скопируйте или напечатайте текст в вопрос» (курсив в оригинале).

desertnaut 19.12.2020 23:06
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
3
1 466
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваши X_train, y_train или оба, похоже, содержат записи, которые не являются числами с плавающей запятой.

В какой-то момент кода попробуйте использовать

X_train = X_train.astype(float)
y_train = y_train.astype(float)
X_test = X_test.astype(float)
y_test = y_test.astype(float)

Либо это сработает, и ошибка исчезнет, ​​либо одно из преобразований завершится ошибкой, и в этот момент вам нужно будет решить, как (и если) вы хотите кодировать данные как числа с плавающей запятой.

Другие вопросы по теме