python - 当我们有数值和分类数据时,使用哪种算法来解决聚类问题?
问题描述
我对集群几乎是新手,对使用的方法有点困惑。我有一组建筑物,我想根据它们的能耗、大小、类型和邻域对它们进行聚类。我使用 k-means 方法并使用“get_dummies”方法来处理我的分类数据。
我想问一下这是否是处理分类数据的正确方法?(我还尝试将它们简单地映射到 1、2、3 等数字并在聚类之前对其进行规范化,但没有收到合适的结果)如果您建议另一种算法(随机森林、svm 或其他任何算法),我很感激如果你给我一个链接或网站来学习它。
另一个问题是,如果我希望我的一个特征对这个聚类有更大的影响,那么在标准化之后将它乘以 2 然后运行聚类部分是否可以?
谢谢。
** 我所说的“get_dummies”是什么意思?
解决方案
我觉得差不多了!使用标签编码器或 one-hot-encoding 将非数字转换为数字。
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder# creating initial dataframe
bridge_types = ('Arch','Beam','Truss','Cantilever','Tied Arch','Suspension','Cable')
bridge_df = pd.DataFrame(bridge_types, columns=['Bridge_Types'])# creating instance of labelencoder
labelencoder = LabelEncoder()# Assigning numerical values and storing in another column
bridge_df['Bridge_Types_Cat'] = labelencoder.fit_transform(bridge_df['Bridge_Types'])
bridge_df
结果:
Bridge_Types Bridge_Types_Cat
0 Arch 0
1 Beam 1
2 Truss 6
3 Cantilever 3
4 Tied Arch 5
5 Suspension 4
6 Cable 2
或者...
import pandas as pd
import numpy as np# creating initial dataframe
bridge_types = ('Arch','Beam','Truss','Cantilever','Tied Arch','Suspension','Cable')
bridge_df = pd.DataFrame(bridge_types, columns=['Bridge_Types'])# generate binary values using get_dummies
dum_df = pd.get_dummies(bridge_df, columns=["Bridge_Types"], prefix=["Type_is"] )# merge with main df bridge_df on key values
bridge_df = bridge_df.join(dum_df)
bridge_df
请记住,如果您有很多标签,那么在您将所有内容都设为数字后,您的数据将会非常稀疏。另外,是的,您可以“游戏”将功能加倍。这是基本示例。
import numpy as np
data = np.asarray([np.asarray(DF['Feature1']),np.asarray(DF['Feature1']),np.asarray(DF['Feature2'])])
这似乎有点奇怪,我在实践中从未这样做过,但它应该会给你想要的结果。你知道什么......测试它,看看你如何相处。最后,当您有空闲时间时,请阅读下面链接上的内容。您将从该链接中学到很多东西。
推荐阅读
- flutter - 如何在 Flutter 中为每个交错的 GridView 框设置不同的颜色
- c++ - 我的预制件不包含二进制文件或包含
- mongodb - Amazon Document DB:如何实现多文档事务
- c - 如何在C中跳过文件中的空行?
- java - 为什么每当我尝试运行或调试任何东西时,IntelliJ 都会切换到一个特定的类?
- laravel - 总和集合变量
- c++ - 如何在类中存储对 C 样式数组的引用?
- time-series - 在训练和测试数据拆分之前或之后标准化时间序列数据?
- python - pyclustering clarans.get_clusters() 返回空列表
- javascript - 提交表单后,Django 清除表单字段。在 forms.py 中创建表单