python - Python。如何将我自己的数据集导入“k 均值”算法
问题描述
我想将我自己的数据(位于 .txt 文件中的句子)导入此示例算法,可以在以下位置找到:https ://scikit-learn.org/stable/auto_examples/cluster/plot_kmeans_silhouette_analysis.html
问题是这段代码使用了make_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 并且示例代码可以工作吗?但是那些像中心、n_features 等make_blob特征呢?我需要以不同的方式指定它们吗?
# 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 算法可以使用的数字的映射。
例如:
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)
...
推荐阅读
- java - 对对象数组进行排序,然后使用 if else 设置文本
- mysql - Docker django mysql.sock 在不同的位置
- python - 将 Origin 标头设置为 websocket-client
- php - WinHttpRequest 上传文件
- android - JSON 样式不会改变 MapView 的样式
- c - 一个包含结构的函数,在以下函数中声明?
- android - 无法解析 com.android.support.design:
- java - jSwing - 使按钮运行不同的方法
- ios - 像 iOS 日历一样创建 tableview
- matlab - 使用 SVD 的 RGB 图像压缩