import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# Lue tiedosto
data = pd.read_csv("protest_reasons.csv")
reasons = data['Reasons'].tolist()

# Muuta tekstit TF-IDF -vektoreiksi
vectorizer = TfidfVectorizer(max_df=0.85, max_features=2000, stop_words='english')
X = vectorizer.fit_transform(reasons).toarray()

# Lasketaan summa neliöistä (SSD) eri klusterimäärille
ssd = []
range_n_clusters = list(range(1,21))
for num_clusters in range_n_clusters:
    kmeans = KMeans(n_clusters=num_clusters, n_init=10, random_state=42)
    kmeans.fit(X)
    ssd.append(kmeans.inertia_)

# Piirretään kuvaaja
plt.figure(figsize=(10,6))
plt.plot(range_n_clusters, ssd, '-o')
plt.xlabel('Klusterien määrä')
plt.ylabel('Summa neliöistä (SSD)')
plt.title('Elbow-menetelmä klusterien määrän määrittämiseksi')
plt.grid(True)
plt.show()
