2013-06-25 1 views
1

Je souhaite représenter chaque élément textuel que j'ai dans mon système en tant que vecteur dans un modèle d'espace vectoriel. Les valeurs des termes peuvent être négatives ou positives, reflétant la fréquence d'un terme dans la classe positive ou négative. La valeur zéro signifie neutre par exemple:Normalisation de vecteurs avec des valeurs négatives

Item1 (-1,0, -5,4.5,2)

Item2 (2,6,0, -4,0.5)

Mes questions sont:

1- Comment puis-je normaliser mes vecteurs à une gamme de [0 à 1] où:

0,5 signifie zéro avant la normalisation

et 0,5> si elle est positive

0,5 < si négatif

Je veux savoir s'il y a une formule mathématique pour faire une telle chose.

2- Le choix de la mesure de similarité sera-t-il différent après la normalisation? Par exemple, puis-je utiliser la similarité Cosinus?

3- Sera-t-il difficile si je préforme la réduction de la dimensionnalité après la normalisation ??

Merci d'avance

Répondre

0

Une solution pourrait consister à utiliser le MinMaxScaler qui redimensionne le nombre entre (0, 1) aller, puis diviser chaque rangée par la somme de la rangée. En python en utilisant sklearn vous pouvez faire quelque chose comme ceci:

from sklearn.preprocessing import MinMaxScaler, normalize 
scaler = MinMaxScaler() 
scaled_X = scaler.fit_transform(X) 
normalized_X = normalize(scaled_X, norm='l1', axis=1, copy=True) 
Questions connexes