| Algorithm 3: SelectK |
| Input: Ar{a1,a2…an}, a set of activity |
| num, number of active classes |
| Output:k, Optimal k value |
| 1. Val←Ø// |
| 2. Cal←Ø// |
| 3. k←Ø |
| 4. Time←getTime(Ar)//filter out bt and et |
| 5. for each n in range(1, num): |
| 6. estimator←KMeans(clusters=n)//constructing a cluster |
| 7. estimator.fit(Time)//fitting the data |
| 8. Val←getSSE(estimator)//get SSE value |
| 9. Cal←◡{(n, Val)} |
| 10. end for |
| 11. k←getCur(Cal)//Get k with highest curvature |
| 12. return k |