Я знаю, что этот вопрос задавался по-разному, но я не могу понять, почему мой код не дает мне вывода.
Я использую набор данных обучения 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()
Я знаю, что это как-то связано с тем, как я использую функцию разброса, но я не могу понять, что мойошибка есть.Я ценю любую помощь
Заранее спасибо!