Advertisement
max2201111

generovani nahodne matice podle rady profesora Petra Dostala

Jun 25th, 2024
496
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.24 KB | Science | 0 0
  1. import numpy as np
  2.  
  3. def generate_row(label):
  4.     if label == 1:
  5.         intervals = [(0.0, 0.1), (0.2, 0.3), (0.4, 0.5), (0.6, 0.7), (0.8, 0.9)]
  6.     else:
  7.         intervals = [(0.1, 0.2), (0.3, 0.4), (0.5, 0.6), (0.7, 0.8), (0.9, 1.0)]
  8.  
  9.     row = []
  10.     for i in range(4):  # každé dva sloupce z jednoho intervalu
  11.         interval = intervals[i]
  12.         row.extend(np.random.uniform(interval[0], interval[1],1))
  13.  
  14.     row.append(label)
  15.     return row
  16.  
  17. # Vytvoření matice 50x6
  18. rows, cols = 50, 4
  19. matrix = []
  20.  
  21. for _ in range(rows):
  22.     label = np.random.choice([0, 1])
  23.     row = generate_row(label)
  24.     matrix.append(row)
  25.  
  26. # Zamíchejte 10 % labelů
  27. num_labels_to_shuffle = int(rows)
  28. indices_to_shuffle = np.random.choice(rows, num_labels_to_shuffle, replace=True)
  29.  
  30. # Extrahujte a zamíchejte vybrané labely
  31. labels_to_shuffle = [matrix[i][-1] for i in indices_to_shuffle]
  32. np.random.shuffle(labels_to_shuffle)
  33.  
  34. # Aktualizujte původní matici s novými, zamíchanými labely
  35. for i, idx in enumerate(indices_to_shuffle):
  36.     matrix[idx][-1] = labels_to_shuffle[i]
  37.  
  38. # Tisk matice s hranatými závorkami pro jednotlivé řádky oddělené čárkami
  39. output = ",\n".join(f"[{','.join(map(str, row))}]" for row in matrix)
  40. print(output)
  41.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement