plot_2d_separator жалуется при использовании объекта DataFrame (был вызван AttributeError) - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть несколько точек данных X, собранных как объект DataFrame.Классы Y - это пустой массив, построенный в зависимости от значений последнего столбца X. Я хотел бы визуализировать границы решения, созданные моделью 1, 3, 9 ближайших соседей.Я использую значения X.values, чтобы иметь возможность использовать методы Numpy для массивов (например, нарезки).

fig, axes = plt.subplots(1, 3, figsize=(10, 3))
XX = X.values

for n_neighbors, ax in zip([1, 3, 9], axes):
    clf = KNeighborsClassifier(n_neighbors=n_neighbors).fit(X, Y)
    mglearn.plots.plot_2d_separator(clf, XX, fill=True, eps=0.5, ax=ax, alpha=.4)
    mglearn.discrete_scatter(XX[:, 2], XX[:, 4], Y, ax=ax)
    ax.set_title("{} neighbor(s)".format(n_neighbors))
    ax.set_xlabel("nbpolys")
    ax.set_ylabel("GB time")

Я получил следующую ошибку:

decision_values = classifier.decision_function(X_grid)
AttributeError: 'KNeighborsClassifier' object has no attribute 'decision_function'

decision_function вызывается в plot_2d_separator.py

В чем может быть проблема?

Параметры и их типы переданы в plot_2d_separator правильно?

Спасибо.

1 Ответ

0 голосов
/ 17 декабря 2018

KNN не изучает никакую функцию принятия решения как таковую.Следовательно, реализация sklearn также не имеет этого атрибута.

Вы можете использовать Предикат_проба вместо решения_функции

clf.predict_proba(x)[:, 1]

. Посмотрите на этот пример для получения дополнительной информации.

РЕДАКТИРОВАТЬ:

from sklearn.datasets import make_blobs
from sklearn.neighbors import KNeighborsClassifier
X, y = make_blobs(centers=2, random_state=42)
clf = KNeighborsClassifier().fit(X, y)
plot_2d_separator(clf, X, fill=True)
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()

enter image description here

...