# Why is my PCA boomerang-shaped when normalizing?

Running an unsupervised plot of my data, I noticed a hyperbolic ('boomerang') shape:

dim=2

vectorizer = TfidfVectorizer(min_df=5, max_df = 0.4, stop_words = 'english')
train_tf_idf = vectorizer.fit_transform(bunch_train.data)
svd = TruncatedSVD(n_components=dim,random_state=42)
svd_train = svd.fit_transform(train_tf_idf)
svd_train = Normalizer().fit_transform(svd_train)

labels = {
0:'alt.atheism',
1:'comp.graphics',
2:'sci.med'}
y = np.vectorize(labels.get)(bunch_train.target)

with plt.style.context('seaborn-whitegrid'):
plt.figure(figsize=(12, 8))
for lab, col in zip(('alt.atheism', 'comp.graphics', 'sci.med'),
('blue', 'red', 'green')):
plt.scatter(svd_train[y==lab, 0],
svd_train[y==lab, 1],
label=lab,
c=col)

plt.title('2D SVD on TF-IDF - 3-NewsGroups',size=28)
plt.xlabel('PC1')
plt.ylabel('PC2')
plt.legend(loc='upper left',prop={'size': 20})
plt.tight_layout()
plt.show()


I suspect it has something to do with the Normalizer - when deleting the following line:

svd_train = Normalizer().fit_transform(svd_train)


the data plots like this:

• it's not just an ellipse, it's the unit square; the obvious result of normalization! The aspect ratio of the plot is merely off. – Emre Aug 23 '17 at 18:06