如何预处理数据挖掘中的名义数据属性?

时间:2018-02-05 12:32:51

标签: machine-learning scikit-learn cluster-analysis data-mining

Dataset image我已对标称数据属性进行了一次热编码,但后来我想对数据进行聚类,因此请提出可行的解决方案。我是数据挖掘的新手

1 个答案:

答案 0 :(得分:0)

考虑到您没有提供有关问题的正确信息,并且您似乎对这些概念不熟悉,我提供了关于虚假数据的完整解决方案。您可以从中学习并获得解决方案的分数。

我已经在python中实现并假设你熟悉skit-learn:

from numpy import array
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
from sklearn import cluster
# define example
data = ['cold', 'cold', 'warm', 'cold', 'hot', 'hot', 'warm', 'cold', 'warm', 'hot']
values = array(data)
print(values)
# integer encode
label_encoder = LabelEncoder()
integer_encoded = label_encoder.fit_transform(values)
print(integer_encoded)
# binary encode
onehot_encoder = OneHotEncoder(sparse=False)
integer_encoded = integer_encoded.reshape(len(integer_encoded), 1)
onehot_encoded = onehot_encoder.fit_transform(integer_encoded)
print(onehot_encoded)
# Clustering step:
kmeans = cluster.KMeans(n_clusters=3)
kmeans.fit(onehot_encoded)
print(kmeans.labels_)

以下是结果:

  <'冷''冷''冷''温暖''冷''热''热''温暖''冷''温暖''热''

[[1. 0. 0.]
 [1. 0. 0.]
 [0. 0. 1.]
 [1. 0. 0.]
 [0. 1. 0.]
 [0. 1. 0.]
 [0. 0. 1.]
 [1. 0. 0.]
 [0. 0. 1.]
 [0. 1. 0.]]

以上数据的群集标签是:

  

[1 1 2 1 0 0 2 1 2 0]