分类数据聚类的k模式和k原型聚类算法的python实现。

kmodes的Python项目详细描述


VersionTest StatusTest CoverageCodacy BadgeRequirements StatusSupported Python versionsGithub starsLicense

kmodes

说明

k模式和k原型集群的python实现 算法。很多重担都是依靠纽比来完成的。

k-模式用于分类变量的聚类。它定义了集群 基于数据点之间的匹配类别数。(这是 与更著名的k-means算法相比,它将 基于欧氏距离的数值数据。)k-原型算法 结合k-模和k-均值,能够对混合数值进行聚类/ 分类数据。

实施的是:

代码是根据scikit-learn中的聚类算法建模的。 有着同样熟悉的界面。

我很希望有更多的人玩这个给我 对我的执行情况的反馈。如果你在跑步或 安装kmodes, please submit a bug report

享受吧!

安装

可以使用pip安装kmodes:

pip install kmodes

要升级到最新版本(推荐),请按如下方式运行:

pip install --upgrade kmodes

或者,您可以从源代码构建最新的开发版本:

git clone https://github.com/nicodv/kmodes.git
cd kmodes
python setup.py install

使用量

importnumpyasnpfromkmodes.kmodesimportKModes# random categorical datadata=np.random.choice(20,(100,10))km=KModes(n_clusters=4,init='Huang',n_init=5,verbose=1)clusters=km.fit_predict(data)# Print the cluster centroidsprint(km.cluster_centroids_)

示例目录显示了两种k模式的简单用例 ('soybean.py')和k-prototype('stocks.py')。

丢失/未显示的数据

k-modes算法接受np.NaN值作为 矩阵X。不过,强烈建议用户考虑 以有意义的方式填写丢失的数据 问题就在眼前。这在许多人失踪的情况下尤为重要 价值观。

k-modes算法目前处理丢失的数据如下。什么时候? 根据模型,np.NaN值被编码成它们自己的值 类别(我们称之为“未知值”)。当预测时,模型 处理X中以前在 作为“未知值”的成员,缺少培训或(2) 类别。简单地说,算法将任何丢失/未看到的数据视为 相互匹配,但与未丢失/看到的数据不匹配 在确定点之间的相似性时。

k原型还接受np.NaN值作为 分类变量,但not是否接受 数值。这取决于用户想出一种方法 处理这些丢失的适合当前问题的数据。

并行执行

k-modes和k-prototype实现都为 通过 joblib library, 类似于scikit learn的k-means实现,使用 n_jobs参数。一般来说,增加工作岗位是没有意义的 在你的系统上还有处理器内核可用。

这可能会通过多次初始化尝试加快任何执行, n_init > 1,这可能有助于缩短 更大的问题。请注意,这取决于您的问题:是否进行多处理 实际上是有帮助的,所以一定要先试试。你可以看看 一些基准的例子。

常见问题

问:我看到了一些错误,比如TypeError: '<' not supported between instances of 'str' and 'float' 使用kprototypes算法时。

A:一个或多个数字特征列中有字符串值。确保所有 列具有一致的数据类型。

参考文献

[HUANG97](1, 2) Huang, Z.: Clustering large data sets with mixed numeric and categorical values, Proceedings of the First Pacific Asia Knowledge Discovery and Data Mining Conference, Singapore, pp. 21-34, 1997.
[HUANG98]Huang, Z.: Extensions to the k-modes algorithm for clustering large data sets with categorical values, Data Mining and Knowledge Discovery 2(3), pp. 283-304, 1998.
[CAO09]Cao, F., Liang, J, Bai, L.: A new initialization method for categorical data clustering, Expert Systems with Applications 36(7), pp. 10223-10228., 2009.

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JMX MBean在应用程序部署时自动注册   java如何创建现有JavaFX对象的数组   IntelliJ的java单例线程安全吗   java将Base64编码字符串转换为PDF,无需使用Javascript中的任何库(IE兼容)   使用TestNG运行多个测试套件的java   java Firebase/Android:获取当前用户电子邮件   java如何捕获和传播通配符类型参数?   java如何在安卓中使用动画翻转图像   菜单和游戏活动之间的java延迟   java如何将对象转换为JSON(不包括属性)   java无法在可运行的JavaFX中更改接口   使用jsp/servlet的java清理URL?   java grpc示例是否打算跨语言使用?   java缺少目标JNDI名称   GridBagLayout中的java非均匀列   java如何在单独的线程中执行大量WS调用并增加单个结果变量?   以前使用数据导入数据时,java无法使用save()进行插入。sql   带有单独收集的java流过滤器