как мне заполнить параметр plt.scatter для визуализации svm

В настоящее время я создаю свою модель SVM, я новичок в ML и строю свою модель, просто просматривая учебник здесь и там. У меня проблема с визуализацией данных. Это ссылка, которую я использовал https://data-flair.training/blogs/svm-support-vector-machine-tutorial/ . Это мой код визуализации данных:

      markers = ('x', '.')
colors = ('blue', 'green')
cmap = ListedColormap(colors[:len(np.unique(y_test))])
for idx, cl in enumerate(np.unique(y)):
    plt.scatter(x=X[y == cl, 0], y=X[y == cl, 1],
           c=cmap(idx), marker=markers[idx], label=cl)

и это сообщение об ошибке:

      TypeError                                 Traceback (most recent call last)

<ipython-input-17-cd1df4df7bea> in <module>()
      4 print(cmap)
      5 for idx, cl in enumerate(np.unique(y)):
----> 6     plt.scatter(x=X[y == cl, 0], y=X[y == cl, 1],
      7            c=cmap(idx), marker=markers[idx], label=cl)

3 frames

/usr/local/lib/python3.7/dist-packages/pandas/core/frame.py in __getitem__(self, key)
   3456             if self.columns.nlevels > 1:
   3457                 return self._getitem_multilevel(key)
-> 3458             indexer = self.columns.get_loc(key)
   3459             if is_integer(indexer):
   3460                 indexer = [indexer]

/usr/local/lib/python3.7/dist-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   3359             casted_key = self._maybe_cast_indexer(key)
   3360             try:
-> 3361                 return self._engine.get_loc(casted_key)
   3362             except KeyError as err:
   3363                 raise KeyError(key) from err

/usr/local/lib/python3.7/dist-packages/pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

/usr/local/lib/python3.7/dist-packages/pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

TypeError: '(0         True
1         True
2         True
3         True
4         True
         ...  
12283    False
12284    False
12285    False
12286    False
12287    False
Name: Label, Length: 12288, dtype: bool, 0)' is an invalid key

Я использую наборы данных с 2 метками и 8 функциями. Что я должен указать в качестве параметра plt.scatter?

1 ответ

Надеюсь, я понимаю ваш вопрос.

На точечной диаграмме вам нужны 2 столбца, один как ось X, а другой как ось Y, поэтому вам нужно сделать то же самое для всех ваших 8 функций, выбрав 2 пары столбцов.

Я изменил параметры разброса как x=X.loc[y == cl, 'col1'], y=X.loc[y == cl, 'col2']чтобы заставить его работать.

      col1 = [1.1,1.2,1.3,1.4,1.4,1.5]
col2 = [0.1,0.2,0.3,0.4,0.4,0.5]
col3 = [2.1,2.2,2.3,2.4,2.4,2.5]
col4 = [3.1,3.2,3.3,3.4,3.4,3.5]
lbl = [0,1,1,1,0,0]

df1 = pd.DataFrame({'col1':col1, 'col2':col2, 'col3':col3, 'col4':col4, 'target':lbl})

X = df1.iloc[:,0:4]
y = df1['target']

markers = ('x', 's')
colors = ('red', 'blue')
cmap = ListedColormap(colors[:len(np.unique(y))])
print(cmap)
for idx, cl in enumerate(np.unique(y)):
    plt.scatter(x=X.loc[y == cl, 'col1'], y=X.loc[y == cl, 'col2'], c=cmap(idx), marker=markers[idx], label=cl)
plt.show()
Другие вопросы по тегам