2016-07-27 3 views
0

Я пытаюсь понять, как Perceptron из sklearn.linear_model выполняет функцию fit() (Documentation). Вопрос исходит из этого куска кода:sklearn Perceptron learning

clf = Perceptron() 
clf.fit(train_data, train_answers) 

print('accuracy:', clf.score(train_data, train_answers)) 
accuracy: 0.7 

Я думал, что цель фитинга создать функцию классификации, которая даст ответ с точностью до 100% по данным испытаний, но в приведенном выше примере это дает лишь 70%. Я попробовал еще один набор данных, где точность составляла 60%.

Что я неправильно понимаю в процессе подгонки?

+0

Просьба предоставить подробную информацию о случае, если вы работаете (вход и выход, качество данных и т.д.). Если вы не сообщите, что получить полезный ответ практически невозможно. – rpd

+1

Пожалуйста, возьмите книгу об машинной учебе и прочитайте о предсказании-ошибке, возможностях модели, обобщении-ошибке и со ... Кажется, вы не указали * все * основы. Sry. – sascha

+1

Первое примечание: документы говорят «линейная модель». В общем, обучение алгоритму машинного обучения не даст вам 100% точности ваших данных обучения. Это особенно верно для линейной модели. Рассмотрим диаграмму двух классов объектов, распределенных по двум измерениям. Если точки класса сильно перекрываются, то классификатор должен иметь очень большую дисперсию для создания (нелинейной) границы, разделяющей 100% данных обучения. Обычно это представляет собой огромную переработку и нежелательно. –

ответ

0

Это зависит от вашего распределения данных о данных тренинга. На графике, показанном ниже, вы можете найти прямую линию для разделения синего и красного цветов? Очевидно, нет, и в этом суть. Ваши данные должны быть линейно разделены для Perceptron Learning Algorithm, чтобы достичь 100% точности данных обучения. В противном случае никакая прямая линия не может отделить ее идеально.

enter image description here