首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kmeans使用分类变量

Kmeans使用分类变量
EN

Stack Overflow用户
提问于 2019-12-13 02:09:45
回答 2查看 3.5K关注 0票数 5

我有一个包含所有分类变量的大型数据集45421 * 12 (行*列)。我的数据集中没有数值变量。我想使用这个数据集来构建无监督聚类模型,但在建模之前,我想知道这个数据集的最佳特征选择模型。我无法将弯头曲线绘制到这个数据集。我给出了k均值弯曲法的k= 1-1000的范围,但它没有给出任何最优的聚类图,并且需要8-10个小时来执行。如果有人对这个问题提出了更好的解决方案,那将是一个很大的帮助。

代码:

代码语言:javascript
复制
data = {'UserName':['infuk_tof', 'infus_llk', 'infaus_kkn', 'infin_mdx'], 
       'UserClass':['high','low','low','medium','high'], 
       'UserCountry':['unitedkingdom','unitedstates','australia','india'], 
       'UserRegion':['EMEA','EMEA','APAC','APAC'], 
       'UserOrganization':['INFBLRPR','INFBLRHC','INFBLRPR','INFBLRHC'], 
       'UserAccesstype':['Region','country','country','region']} 

df = pd.DataFrame(data) 
EN

回答 2

Stack Overflow用户

发布于 2019-12-13 03:37:00

对于这样的分类数据,K-means不是合适的聚类算法。你可能想找一个K-modes方法,不幸的是,它目前没有包含在scikit-learn包中。你可能想看看github:https://github.com/nicodv/kmodes上提供的kmodes包,它遵循了你在scikit-learn中习惯的大部分语法。

有关更多信息,请参阅此处的讨论:https://datascience.stackexchange.com/questions/22/k-means-clustering-for-mixed-numeric-and-categorical-data

票数 0
EN

Stack Overflow用户

发布于 2019-12-13 06:14:58

为了能够运行 Kmeans 或任何其他模型,首先需要将分类变量转换为数值变量。

使用OneHotEncoder的示例

代码语言:javascript
复制
from sklearn.preprocessing import OneHotEncoder
import pandas as pd

data={'UserAccesstype': ['Region', 'country', 'country', 'region'],
 'UserCountry': ['unitedkingdom', 'unitedstates', 'australia', 'india'],
 'UserOrganization': ['INFBLRPR', 'INFBLRHC', 'INFBLRPR', 'INFBLRHC'],
 'UserRegion': ['EMEA', 'EMEA', 'APAC', 'APAC']}

df = pd.DataFrame(data)

  UserAccesstype    UserCountry UserOrganization UserRegion
0         Region  unitedkingdom         INFBLRPR       EMEA
1        country   unitedstates         INFBLRHC       EMEA
2        country      australia         INFBLRPR       APAC
3         region          india         INFBLRHC       APAC

enc = OneHotEncoder(handle_unknown='ignore')
enc.fit(df.values)

X_for_Kmeans = enc.transform(df.values).toarray()

X_for_Kmeans
array([[1., 0., 0., 0., 0., 1., 0., 0., 1., 0., 1.],
       [0., 1., 0., 0., 0., 0., 1., 1., 0., 0., 1.],
       [0., 1., 0., 1., 0., 0., 0., 0., 1., 1., 0.],
       [0., 0., 1., 0., 1., 0., 0., 1., 0., 1., 0.]])

对Kmeans管件使用X_for_Kmeans。干杯

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59310481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档