2016-11-26 10 views
0

Я изучаю набор данных iris с использованием Perceptron и обнаруживая следующую ошибку.Количество ярлыков классов должно быть больше одного

ValueError: The number of class labels must be greater than one.

Код ниже

y = df.iloc[0:100, 4].values 
y = np.where(y== 'Iris-setosa', -1,1) 
X = df.iloc[0:100, [0,2]].values 
ppn = Perceptron(eta0=0.1, n_iter=10) 
ppn.fit(X,y) 

Цель состоит в том, чтобы соответствовать данным, используя длину чашелистиков и длину лепестка для типа видов. Я не понимаю эту ошибку. Как исправить это?

df.head() #for reference 
    Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
0   5.1   3.5   1.4   0.2 setosa 
1   4.9   3.0   1.4   0.2 setosa 
2   4.7   3.2   1.3   0.2 setosa 
3   4.6   3.1   1.5   0.2 setosa 
+0

Пожалуйста, разместите воспроизводимый пример (мы не знаем, откуда этот класс «Перцептрон»). –

+0

Проблема связана с вашим фреймворком данных. Опубликованный код в порядке. @CarlosCordoba это класс Перцептрона от scipy.linear_model –

+0

Да @LukaszTracewski, dataframe y имел все одинаковые значения, потому что y = np.where (y == 'Iris-setosa', -1,1) и не было такого значения, как ' Iris-setosa "в новом наборе данных, который я загрузил. глупый я!!. Спасибо –

ответ

1

Вы пытаетесь предсказать вид, который в вашем примере имеет только одно значение «setosa». Вы должны иметь по крайней мере разные значения.

+0

Привет, на самом деле есть два вида: setosa и versicolor в наборе данных, которые отражаются как -1 и 1 соответственно. в y dataframe –

 Смежные вопросы

  • Нет связанных вопросов^_^