Создание 3D разбросанного сюжета Python - PullRequest
0 голосов
/ 22 сентября 2019

Я знаю, что этот вопрос задавался по-разному, но я не могу понять, почему мой код не дает мне вывода.

Я использую набор данных обучения Iris, например:

import pandas as pd
df = pd.read_csv('https://archive.ics.uci.edu/ml/'
                  'machine-learning-databases/iris/iris.data',
                  header=None)

Я использую следующие данные:

# selecting setosa and versicolor
y = df.iloc[0:100, 4].values

y = np.where(y == 'Iris-setosa', -1, 1)

# extract sepal length, sepal width and petal length
X = df.iloc[0:100, [0, 1, 2]].values

ppn = Perceptron(eta0=0.1, max_iter=10)

Затем я использую следующую вспомогательную функцию:

def plot_decision_regions_3(X, y, classifier, resolution=0.02):


    # plot the decision surface
    x1_min, x1_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    x2_min, x2_max = X[:, 1].min() - 1, X[:, 1].max() + 1
    x3_min, x3_max = X[:, 2].min() - 1, X[:, 2].max() + 1

    xx1, xx2, xx3 = np.meshgrid(np.arange(x1_min, x1_max, resolution),
                           np.arange(x2_min, x2_max, resolution),
                           np.arange(x3_min, x3_max, resolution))

    Z = classifier.predict(np.array([xx1.ravel(), xx2.ravel(), xx3.ravel()]).T)

    Z = Z.reshape(xx1.shape)
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')

    ax.scatter(xx1, xx2, xx3)

    plt.xlim(xx1.min(), xx1.max())
    plt.ylim(xx2.min(), xx2.max())
    plt.set_zlim(xx3.min(), xx3.max())

Наконец, вызывая то же самое:

plot_decision_regions_3(X, y, classifier=ppn)
plt.xlabel('sepal length [cm]')
plt.ylabel('petal length [cm]')
plt.legend(loc='upper left')
plt.show()

Я знаю, что это как-то связано с тем, как я использую функцию разброса, но я не могу понять, что мойошибка есть.Я ценю любую помощь

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...