Если ваша оценка - это некоторая ранжированное множество значений (ну как в школе: 1, 2, 3, 4... 12 или как в вузе - F,E,D,C,B,A или как шкала эпидемической опасности "зеленая"-"желтая" - "оранжевая" - "красная") и/или хотя-бы один из ваших признаков - не непрерывное числовое значение (локация, старший группы, день недели и пр)- то выбор модели абсолютноочевиден и однозначен. Это - классификация.
Надо (разумно-ли) - ее реализовывать самостоятельно? Ну только если очень хотите потренироваться, у вас много свободного времени и от качетства результата мало что зависит. Потому что в любом уважающем себя пакете, которые претендует на звание МL-инструмента, реализация хотя-бы одного из алгоритмом классификации имеется. В том числе и в том, на который вы ссылаетесь (php-ml).Другое дело его качество - но тут даже проверять лень, потому-как в том-же Python/Scikit-Learn есть больше десятка реализованных алгоритмов классификации (логистическая регрессия, k-ближайших соседей, опорных векторов, наивный байесовский классификатор, дерево принятия решений, random forest, AdaBoost, градиентный бустинг - может чего пропустил) качество которых тысечекратно проверено, работоспособность доказана. Выберайте, пробуйте, ищите наиболее адекватный для ваших данных. И для использования их знаний Python нужно - на самом низком уровне.
Да, среди нейросетей есть сети, приспособленные к решению этого класса задач. Но вообще-то их (нейросети) целесообразно применять не вместо хорошо работающих алгоритмов МД, а там, где такие алгоритмы в чистом виде использовать проблематично. А в простейших случаях как у вас (число параметров - около 10, все они явно выделены, данные (могут быть) сведены в таблицу) использование нейросети - это как использование КаМАЗа для перевозки тещи на дачу - можно, но мягко говоря не целесообразно и крайне неудобно.