Advertisement
Pastehsjsjs

Untitled

Mar 30th, 2023
571
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.38 KB | Source Code | 0 0
  1. from sklearn.metrics.pairwise import cosine_similarity
  2. from tqdm import tqdm
  3.  
  4. def calc_scores(y_pred, y_true):
  5.     scores = []
  6.     for i in range(y_pred.shape[0]):
  7.         scores.append( cosine_similarity( y_pred[np.newaxis, i, :]  , y_true[np.newaxis, i, :])[0][0] )
  8.     return scores
  9.  
  10.  
  11. def seek_ratio(embeddings1, embeddings2, embeddings3, embeddings4, name1, name2, name3, name4):
  12.     ratios = np.arange(0, 1.02, 0.02)
  13.     CVs = []
  14.     for r1 in tqdm(ratios):
  15.         for r2 in ratios:
  16.             for r3 in ratios:
  17.                 r4 = 1 - r1 - r2 - r3
  18.                 if r4 < 0:
  19.                     continue
  20.                 embeddings = embeddings1 * r1 + embeddings2 * r2 + embeddings3 * r3 + embeddings4 * r4
  21.                 CVs.append( np.array( calc_scores(embeddings, y_true) ).mean() )
  22.  
  23.     best_index = np.argmax( np.array(CVs) )
  24.     best_CV = CVs[best_index]
  25.     best_ratio1 = ratios[best_index // (len(ratios) ** 3)]
  26.     best_ratio2 = ratios[(best_index // (len(ratios) ** 2)) % len(ratios)]
  27.     best_ratio3 = ratios[(best_index // len(ratios)) % len(ratios)]
  28.     best_ratio4 = ratios[best_index % len(ratios)]
  29.     print(f"Best CV: {best_CV:0.5f} [emb1[{name1}]={best_ratio1:.2f}, emb2[{name2}]={best_ratio2:.2f}, "
  30.           f"emb3[{name3}]={best_ratio3:.2f}, emb4[{name4}]={best_ratio4:.2f}]")
  31.  
  32.     return best_ratio1, best_ratio2, best_ratio3, best_ratio4, best_CV
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement