FRsūtil̲s
A fuzzy-rough reasoning utilities library
 
Loading...
Searching...
No Matches
frsutils.core.similarities Namespace Reference

Data Structures

class  GaussianSimilarity
 
class  LinearSimilarity
 
class  SimilarityFunction
 

Functions

np.ndarray calculate_similarity_matrix (np.ndarray X, SimilarityFunction similarity_func, Callable[[np.ndarray, np.ndarray], np.ndarray] tnorm)
 

Detailed Description

Similarities

Provides an extensible and optimized framework to compute similarity matrices
with pluggable similarity functions (using inheritance)

@author: Mehran Amiri

Function Documentation

◆ calculate_similarity_matrix()

np.ndarray frsutils.core.similarities.calculate_similarity_matrix ( np.ndarray X,
SimilarityFunction similarity_func,
Callable[[np.ndarray, np.ndarray], np.ndarray] tnorm )
Compute the pairwise similarity matrix for samples using a vectorized
similarity function and T-norm operator.

@param X: Normalized input matrix of shape (n_samples, n_features)
@param similarity_func: Instance of SimilarityFunction subclass
@param tnorm: Callable T-norm function (e.g., min, product, Yager)
@return: Similarity matrix of shape (n_samples, n_samples)

Definition at line 58 of file similarities.py.

62) -> np.ndarray:
63 """
64 Compute the pairwise similarity matrix for samples using a vectorized
65 similarity function and T-norm operator.
66
67 @param X: Normalized input matrix of shape (n_samples, n_features)
68 @param similarity_func: Instance of SimilarityFunction subclass
69 @param tnorm: Callable T-norm function (e.g., min, product, Yager)
70 @return: Similarity matrix of shape (n_samples, n_samples)
71 """
72 n_samples, n_features = X.shape
73 sim_matrix = np.ones((n_samples, n_samples), dtype=np.float64)
74
75 for k in range(n_features):
76 col = X[:, k].reshape(-1, 1) # Shape (n, 1)
77 diff = col - col.T # Shape (n, n)
78 sim_k = similarity_func(diff) # Compute similarity
79 sim_matrix = tnorm(sim_matrix, sim_k) # Apply T-norm
80
81 np.fill_diagonal(sim_matrix, 1.0)
82 return sim_matrix