توی متلب از kmediods می تونید استفاده کنید.
کلاسترینک سلسه مراتبی میشه استفاده کرد به شرط اینکه شما تابع شباهت را به درستی تعریف کنید.
شما می تونید داده های cat را به num تبدیل کنید وبعدش رو داده ها در فضای جدید تابع اقلیدسی می تونه به عنوان تابع شباهت استفاده کنید.
manhattan یا hamming مناسب تره.