как мне заполнить параметр 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()