Тут нужно определить критерии "плохой\хороший", потому как по графикам не особо заметно разницы, нужно понимать, что если результат не очевиден человеку, объяснить это компьютеру будет еще тяжелее.
Если таких критериев нет нужно их найти, что можно следать:
1. Отобрать как можно больше "плохих" графиков и отдельно "хороших"
2. Нормализовать, то есть привести их виду, где минимальное и максимальное значение по осям будет одно и тоже (если конечно нет критерия вида много по Y - плохо и т.п.)
3. На нормализованной плоскости построить сплайн или просто сразу апроксимировать функции таким образом чтобы получить для каждого графика одинаковый набор значений y для одних и тех же X, к примеру на нормализованной плоскости через каждые n единиц по X получить значение Y.
На выходе получится матрица Xmax*Ymax, где каждой на пересечении будет 1 либо 0
Данные матрицы можно использовать для обучения нейронной сети.
или матрицы не строить а оставить в виде последовательности значений Y, потом сравнивать вектора "плохих" графиков с векторами "хороших",
для сравнения можно будет использовать все что в голову взбредет, то есть любые математические функции, какая ни будь даст достаточно статистически различимый результат. Кстати полученное на п.2-3 можно использовать и для кластеризации.