semi_supervised added