【问题标题】:Python. How to import my own dataset to "k means" algorithmPython。如何将我自己的数据集导入“k 均值”算法
【发布时间】:2019-08-22 14:45:22
【问题描述】:

我想将我自己的数据(位于 .txt 文件中的句子)导入到这个示例算法中,可以在以下位置找到:https://scikit-learn.org/stable/auto_examples/cluster/plot_kmeans_silhouette_analysis.html

问题是这段代码使用 ma​​ke_blobs 数据集,我很难理解如何用 .txt 文件中的数据替换它。

我预测我需要在这里替换这段代码:

X, y = make_blobs(n_samples=500,
          n_features=2,
          centers=4,
          cluster_std=1,
          center_box=(-10.0, 10.0),
          shuffle=True,
          random_state=1)  # For reproducibility

我也不明白这些变量 X, y 。我假设 X 是一个数据数组,那么 y 呢?

我应该像这样将所有内容分配给 X 并且示例代码可以工作吗?但是那些 ma​​ke_blob 特征,如中心、n_features 等呢?我需要以不同的方式指定它们吗?

# open and read from the txt file
path = "C:/Users/user/Desktop/sentences.txt"
file = open(path, 'r')
# assign it to the X
X = file.readlines() 

感谢任何帮助!

【问题讨论】:

  • 您是否尝试将 k-means 应用于您的数据,将每个单词视为样本(例如,在为那些对句子进行分类的词应用错误词之后?)或将每个句子作为样本(有什么意义)或其他什么?
  • @Eypros 你好,把它当作每个单词作为样本。

标签: python cluster-analysis silhouette


【解决方案1】:

首先,您需要创建单词到 k-means 算法可以使用的数字的映射。

例如:

I ride a bike and I like it.
1   2  3  4    5  1  6   7  # <- number ids

之后,您的数据集有了新的嵌入,您可以应用 k-means。如果您想要样本的同质外观,则必须将它们转换为 one-hot-representation(即为每个样本创建一个 N 长度的数组,其中 N 是您拥有的唯一单词的总数,其中一个与样本索引相同的对应位置)。

上面 N = 7 的例子是

1 -> 1000000
2 -> 0100000
...

所以,现在您可以拥有一个X 变量,其中包含您的数据的正确格式。您不需要y,它是您样品的相应标签。

clusterer = KMeans(n_clusters=n_clusters, random_state=10)
cluster_labels = clusterer.fit_predict(X)
silhouette_avg = silhouette_score(X, cluster_labels)
...

【讨论】:

    猜你喜欢
    • 2011-09-06
    • 2015-10-12
    • 2019-10-31
    • 2019-05-01
    • 2018-02-22
    • 2013-04-30
    • 1970-01-01
    相关资源
    最近更新 更多