改写这段编码:cosine_similarities = cosine_similarity(df) print(cosine_similarities) from sklearn.cluster import KMeans kms = KMeans(n_clusters=10, random_state=123) k_data = kms.fit_predict(cosine_similarities) # 对余弦相似度的计算结果进行聚类分群 print(k_data) print(k_data == 3) print(words[0:3]) words_ary = np.array(words) print(words_ary[0:3])
时间: 2023-07-15 09:12:07 浏览: 50
# 计算余弦相似度
from sklearn.metrics.pairwise import cosine_similarity
cosine_similarities = cosine_similarity(df)
print(cosine_similarities)
# 对余弦相似度的计算结果进行聚类分群
from sklearn.cluster import KMeans
kms = KMeans(n_clusters=10, random_state=123)
k_data = kms.fit_predict(cosine_similarities)
print(k_data)
# 输出属于第3类的数据样本索引
print(np.where(k_data == 3))
# 输出前3个单词
print(words[:3])
# 转换为numpy数组并输出前3个单词
words_ary = np.array(words)
print(words_ary[:3])
相关问题
优化这款代码def compare(): text1 = text_new text2 = text_old tf_idf_vectorizer = TfidfVectorizer() tf_idf_vectors = tf_idf_vectorizer.fit_transform([text1, text2]) cosine_similarities = cosine_similarity(tf_idf_vectors) return cosine_similarities[0, 1]增加逐一对比功能
可以将需要逐一对比的文本存储在列表中,然后使用两重循环来遍历所有文本对,计算它们之间的相似度。以下是修改后的代码示例:
```
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
def compare(text_list):
tf_idf_vectorizer = TfidfVectorizer()
tf_idf_vectors = tf_idf_vectorizer.fit_transform(text_list)
n = len(text_list)
similarities = []
for i in range(n):
for j in range(i+1, n):
cosine_similarity = cosine_similarity(tf_idf_vectors[i], tf_idf_vectors[j])[0][0]
similarities.append((i, j, cosine_similarity))
return similarities
```
这个函数将返回一个列表,其中每个元素都表示一对文本之间的相似度。每个元素都是一个三元组,包含两个文本的索引和它们之间的余弦相似度。例如,如果输入列表中有三个文本,函数将返回以下类似的结果:
```
[(0, 1, 0.732), (0, 2, 0.581), (1, 2, 0.812)]
```
这表示第一个文本和第二个文本之间的相似度为 0.732,第一个文本和第三个文本之间的相似度为 0.581,第二个文本和第三个文本之间的相似度为 0.812。
优化这段代码def compare(): text1 = ("text_new:\n", text_new) text2 = ("text_old:\n", text_old) n = len(text2) similarities = [] for i in range(n): for j in range(i+1, n): tf_idf_vectorizer = TfidfVectorizer() tf_idf_vectors = tf_idf_vectorizer.fit_transform([text1, text2]) cosine_similarities = cosine_similarity(tf_idf_vectors) return cosine_similarities[0, 1]并增加test1与test2中的字符串逐一比较
可以尝试使用两层循环,分别对比text1和text2中的每一对字符串,然后将相似度存入similarities列表中。代码如下:
```
def compare(text1, text2):
similarities = []
for i in range(len(text1)):
for j in range(len(text2)):
tf_idf_vectorizer = TfidfVectorizer()
tf_idf_vectors = tf_idf_vectorizer.fit_transform([text1[i], text2[j]])
cosine_similarities = cosine_similarity(tf_idf_vectors)
similarities.append(cosine_similarities[0, 1])
return similarities
```
这样,compare()函数会返回一个包含所有字符串对相似度的列表similarities。你可以将text1和text2传入函数,然后查看输出结果,以了解它们之间的相似度。