mlextend plot_decision_regions с подгонкой модели к Pandas DataFrame?

Я большой поклонник mlxtend's plot_decision_regions функция, ( http://rasbt.github.io/mlxtend/, /questions/3993191/syuzhet-svm-s-matplotlib/3993199#3993199)

Он принимает X(только две колонки за раз), yи (встроенный) классификатор clf объект, а затем обеспечивает довольно удивительную визуализацию взаимосвязи между предсказаниями модели, истинными значениями y и парой независимых переменных.

Пара ограничений:X а также y должны быть массивы NumPy, и clf должен иметь predict() метод. Справедливо. Моя проблема в том, что в моем случае классификатор clf объект, который я хотел бы визуализировать, уже был помещен в Pandas DataFrame...

import numpy as np
import pandas as pd
import xgboost as xgb

import matplotlib
matplotlib.use('Agg')
from mlxtend.plotting import plot_decision_regions
import matplotlib.pyplot as plt


# Create arbitrary dataset for example
df = pd.DataFrame({'Planned_End': np.random.uniform(low=-5, high=5, size=50),
                   'Actual_End':  np.random.uniform(low=-1, high=1, size=50),
                   'Late':        np.random.random_integers(low=0,  high=2, size=50)}
)

# Fit a Classifier to the data
# This classifier is fit on the data as a Pandas DataFrame
X = df[['Planned_End', 'Actual_End']]
y = df['Late']

clf = xgb.XGBClassifier()
clf.fit(X, y)

Так что теперь, когда я пытаюсь использовать plot_decision_regions передавая X / Y как NumPy массивов...

# Plot Decision Region using mlxtend's awesome plotting function
plot_decision_regions(X=X.values,
                      y=y.values,
                      clf=clf,
                      legend=2)

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

ValueError: feature_names mismatch: ['Planned_End', 'Actual_End'] ['f0', 'f1']
expected Planned_End, Actual_End in input data
training data did not have the following fields: f1, f0

В моем случае было бы неуместно тренировать нашу модель на Pandas DataFrames. Есть ли способ до сих пор производить decision_regions графики для классификатора, обученного на Pandas DataFrame?

1 ответ

Попробуйте изменить:

X = df[['Planned_End', 'Actual_End']].values
y = df['Late'].values

и перейти к:

clf = xgb.XGBClassifier()
clf.fit(X, y)

plot_decision_regions(X=X,
                      y=y,
                      clf=clf,
                      legend=2)

ИЛИ ЖЕ fit & plot с помощью X.values а также y.values

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