plot_decision_regions с ошибкой «Значения заполнителя должны быть предоставлены, когда X имеет более 2 обучающих функций». - PullRequest
0 голосов
/ 23 октября 2018

Я строю двухмерный график для вывода SVC Бернулли.

, преобразованный в векторы из Avg word2vec и данные разбитых данных со стандартными данными для обучения и проверки.Посредством поиска в сетке был найден лучший C и гамма (rbf)

clf = SVC(C=100,gamma=0.0001)

clf.fit(X_train1,y_train)

from mlxtend.plotting import plot_decision_regions



plot_decision_regions(X_train, y_train, clf=clf, legend=2)


plt.xlabel(X.columns[0], size=14)
plt.ylabel(X.columns[1], size=14)
plt.title('SVM Decision Region Boundary', size=16)

Ошибка получения: - ValueError: y должен быть массивом NumPy.Найдено

также попытался преобразовать Y в NumPy.Затем он выдает ошибку ValueError: у должен быть целочисленный массив.Найденный объект.Попробуйте передать массив как y.astype (np.integer)

, наконец, я преобразовал его в целочисленный массив.Теперь это ошибка.ValueError: Значения заполнителя должны быть предоставлены, когда X имеет более 2 обучающих функций.

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Я тоже провел некоторое время с этим, поскольку plot_decision_regions тогда жаловался ValueError: Column(s) [2] need to be accounted for in either feature_index or filler_feature_values, и есть еще один параметр, необходимый, чтобы избежать этого.

Итак, скажем, у вас есть 4 объекта, и они не имеют названия:

X_train_std.shape[1] = 4

Мы можем ссылаться на каждую функцию по их индексу 0, 1, 2, 3. Вы можете построить только 2функции, скажем, вы хотите 0 и 2.

Вам нужно будет указать один дополнительный параметр (к тому, который указан в ответе @ sos.cott), feature_index и заполнить остальные заполнителями:

value=1.5
width=0.75

fig = plot_decision_regions(X_train.values, y_train.values, clf=clf,
              feature_index=[0,2],                        #these one will be plotted  
              filler_feature_values={1: value, 3:value},  #these will be ignored
              filler_feature_ranges={1: width, 3: width})
0 голосов
/ 30 октября 2018

Вы можете просто сделать (предполагая, что X_train и y_train по-прежнему являются пандами данных) для проблемы с массивом numpy.

plot_decision_regions(X_train.values, y_train.values, clf=clf, legend=2)

Для проблемы filler_feature необходимо указать количество объектов, чтобы выполнить следующие действия:

value=1.5
width=0.75

fig = plot_decision_regions(X_train.values, y_train.values, clf=clf,
                  filler_feature_values={2: value, 3:value, 4:value},
                  filler_feature_ranges={2: width, 3: width, 4:width},
                  legend=2, ax=ax)

Вам необходимо добавить один элемент-заполнитель для каждой имеющейся функции.

...