sim_mat_norm = np.zeros([len(all_sentences_words), len(all_sentences_words)]) for i in range(len(all_sentences_words)): for j in range(len(all_sentences_words)): if i != j: _len = len(all_sentences_words[i]) sim_mat_norm[i][j] = \ cosine_similarity(sentence_vectors[i].reshape(1, 300), sentence_vectors[j].reshape(1, 300))[ 0, 0] / _len nx_graph_norm = nx.from_numpy_array(sim_mat_norm)
时间: 2023-06-19 12:03:05 浏览: 55
这段代码的作用是构建一个词向量的余弦相似度矩阵,并将其转化为图结构。具体来说,它做了以下几个步骤:
1. 构建一个大小为(len(all_sentences_words), len(all_sentences_words))的零矩阵sim_mat_norm,用于存储所有句子两两之间的余弦相似度。
2. 对于每一对不同的句子i和j,计算它们的余弦相似度。这里使用了cosine_similarity函数,它可以计算两个向量之间的余弦相似度。
3. 将余弦相似度除以句子i的长度,得到一个归一化的相似度。这是为了避免长句子在相似度计算中占据过大的比重。
4. 将所有计算出来的相似度填入sim_mat_norm矩阵中。
5. 使用from_numpy_array函数将sim_mat_norm转化为一个图结构nx_graph_norm。这里使用了networkx库,它可以方便地构建、操作和可视化各种图结构。
相关问题
N = len(RV_5min) - 1 RV_real_pred = np.zeros(N+1) RV_real_uub = np.zeros(N+1) RV_real_llb = np.zeros(N+1) RV_real_pred[0] = RV_5min[0] RV_real_uub[0] = RV_5min[0] RV_real_llb[0] = RV_5min[0] alpha=0.05 z_alpha = norm.ppf(1-alpha/2) for i in range(N): RV_real_pred[i+1] = c + beta*RV_5min[i] RV_real_uub[i+1] = RV_real_pred[i+1] + z_alpha*np.sqrt(np.var(RV_diff))*np.sqrt(1+beta**2) RV_real_llb[i+1] = RV_real_pred[i+1] - z_alpha*np.sqrt(np.var(RV_diff))*np.sqrt(1+beta**2) plt.plot(RV_5.index, np.maximum(0, RV_real_pred), 'k:') plt.plot(RV_5.index, np.maximum(0, RV_real_uub), 'r--', RV_5.index, np.maximum(0, RV_real_llb), 'r--') plt.xlabel('Time') plt.ylabel('RV') plt.legend(['Predicted', 'Upper Bound', 'Lower Bound']) plt.show() 画图x和y的长度不一样怎么改
为了绘制图形,确保x和y的长度一致,可以使用相同的时间轴作为x轴。假设RV_5min.index是时间轴,可以将其作为x轴,而RV_5min作为y轴。请注意,RV_5min和RV_diff的长度可能不同,因此需要相应调整。
下面是修正后的代码:
```python
N = len(RV_5min) - 1
RV_real_pred = np.zeros(N+1)
RV_real_uub = np.zeros(N+1)
RV_real_llb = np.zeros(N+1)
RV_real_pred[0] = RV_5min[0]
RV_real_uub[0] = RV_5min[0]
RV_real_llb[0] = RV_5min[0]
alpha=0.05
z_alpha = norm.ppf(1-alpha/2)
for i in range(N):
RV_real_pred[i+1] = c + beta*RV_5min[i]
RV_real_uub[i+1] = RV_real_pred[i+1] + z_alpha*np.sqrt(np.var(RV_5min))*np.sqrt(1+beta**2)
RV_real_llb[i+1] = RV_real_pred[i+1] - z_alpha*np.sqrt(np.var(RV_5min))*np.sqrt(1+beta**2)
plt.plot(RV_5min.index, np.maximum(0, RV_real_pred), 'k:')
plt.plot(RV_5min.index, np.maximum(0, RV_real_uub), 'r--', RV_5min.index, np.maximum(0, RV_real_llb), 'r--')
plt.xlabel('Time')
plt.ylabel('RV')
plt.legend(['Predicted', 'Upper Bound', 'Lower Bound'])
plt.show()
```
这样修改后,x轴和y轴的长度应该一致,可以正确地绘制图形。
def normalizeRatings(rating, record): #获取书籍的数量m和用户的数量n m,n = rating.shape #rating_mean-书籍平均分 rating_norm-标准化后的书籍得分 rating_mean = np.zeros((m,1)) rating_norm = np.zeros((m,n)) for i in range(m): idx = record[i,:]!=0 rating_mean[i] = np.mean(rating[i,idx]) rating_norm[i,idx] -= rating_mean[i] return rating_norm, rating_mean
这段代码的作用是标准化评分数据,以便在后续的模型训练过程中使用。
首先,它获取评分矩阵"rating"的大小,其中m表示书籍的数量,n表示用户的数量。
然后,它创建两个大小分别为(m,1)和(m,n)的全零矩阵"rating_mean"和"rating_norm"。其中"rating_mean"用于存储每个书籍的平均评分值,"rating_norm"用于存储标准化后的评分值。
接下来,它使用一个for循环遍历所有书籍,对于每个书籍,它首先使用">0"运算符获取该书籍被评分的用户id,然后使用np.mean()函数计算该书籍的平均评分值,并将其存储在"rating_mean"矩阵中。
最后,它使用"-="运算符将该书籍被评分的用户对应的评分值减去该书籍的平均评分值,得到标准化后的评分值,并将其存储在"rating_norm"矩阵中。
这段代码的结果是,我们得到了两个矩阵"rating_mean"和"rating_norm",它们分别表示每个书籍的平均评分值和标准化后的评分值。这些评分数据可以用于训练推荐模型,以便为用户推荐他们可能感兴趣的书籍。