diff --git a/Cluster2.py b/Cluster2.py
deleted file mode 100644
index e41e34d9e2b0dc9d23bdf76f3a18ba6e9f76b455..0000000000000000000000000000000000000000
--- a/Cluster2.py
+++ /dev/null
@@ -1,37 +0,0 @@
-from sklearn.decomposition import PCA #PCA on Principal Component Analysis, eli pääkomponenttianalyysi, joka vähentää ulottuvuuksia 
-import pandas as pd 
-from sklearn.cluster import KMeans 
-from sklearn.preprocessing import StandardScaler 
-import matplotlib.pyplot as plt #matplotlib visualisointiin, lataa gitillä "pip install matplotlib"
-
-# Ladataan raakadata
-data = pd.read_csv("raakadata.csv")
-
-# Valitaan klusterointiin käytettävät attribuutit
-features = ["Height", "Circumference", "BarkThickness", "PineNo", "NeedleNo"]
-X = data[features]
-
-# Normalisoidaan data
-scaler = StandardScaler()
-X_scaled = scaler.fit_transform(X)
-
-# Klusteroidaan raakadata K-means-avulla
-kmeans_raw = KMeans(n_clusters=4, random_state=42)
-data["Cluster_Raw"] = kmeans_raw.fit_predict(X_scaled) + 1
-
-# Vähennetään ulottuvuudet kahteen PCA:lla
-pca = PCA(n_components=2)
-X_pca = pca.fit_transform(X_scaled)
-
-# Visualisoidaan klusterointi PCA:lla
-scatter = plt.scatter(X_pca[:, 0], X_pca[:, 1], c=data["Cluster_Raw"], cmap="viridis")
-plt.title("Raakadatan klusterointi (PCA)")
-plt.xlabel("yhdistetty data 1")
-plt.ylabel("yhdistettu data 2")
-
-# Lisätään selite
-legend1 = plt.legend(*scatter.legend_elements(), title="Klusterit")
-plt.gca().add_artist(legend1)
-
-# Näytetään kuva
-plt.show()
\ No newline at end of file
diff --git a/Ominaisuussuunnittelu.txt b/Ominaisuussuunnittelu.txt
index a21ac8a3ab60b3ebbac06d246f4188575627e859..a8f997729c071a66e26b6cc5783e957a607b69d0 100644
--- a/Ominaisuussuunnittelu.txt
+++ b/Ominaisuussuunnittelu.txt
@@ -42,3 +42,17 @@ Tämä auttaa tunnistamaan puulajeja.
 
 ----------------------------------------
 
+Korkeus suhteessa ympärysmittaan:
+
+data['Height_to_Circumference'] = data['Height'] / data['Circumference']
+
+Auttaa tunnistamaan kasvutapoja ja puiden muotoja.
+
+----------------------------------------
+
+Neulasten määrä suhteessa kaarnan paksuuteen:
+
+data['Needles_to_Bark'] = data['NeedleNo'] / data['BarkThickness']
+
+Auttaa tunnistamaan kasvuolosuhteet ja puun iän.
+
diff --git a/Raportti.txt b/Raportti.txt
index 763316b177b4b326754f3f12e770bac5f11abd3b..b1c2cdb89d0fc5c8f74a4c0e5549e10b7e3f6ca4 100644
--- a/Raportti.txt
+++ b/Raportti.txt
@@ -15,7 +15,7 @@ Näin kuvaajista saatiin hieman luettavampia.
 Käytimme Principal Component Analysis, eli pääkomponenttianalyysia, joka vähentää ulottuvuuksia.
 Näin data on jaettu kahteen pääkomponenttiin, x- ja y-akselille kuvaajalla.
 
-2. Ominaisuussuunnittelu  ##KESKEN
+2. Ominaisuussuunnittelu 
 Lisäsimme uusia ominaisuuksia, jotka auttavat tunnistamaan eri tyyppejä.
 1. Käpyjen ja neulasten suhde ['Needles_per_Pine']: Tämän avulla voidaan tunnistaa eri puulajeja ja arvioida karkeasti kasvuympäristöä ja puun hyvinvointia.
 2. Puun tilavuuden likimäärä ['VolumeIndex']: 
@@ -27,10 +27,19 @@ Lisäsimme uusia ominaisuuksia, jotka auttavat tunnistamaan eri tyyppejä.
 
 Katso Ominaisuussuunnittelu.txt, sieltä näkee miten uudet ominaisuudet on johdettu.
 
-3. Muokatun datan klusterointi ## KESKEN
+3. Muokatun datan klusterointi 
 Muokatun datan klusterointi tuotti selkeämmät klusterit, jotka erottelivat puut ominaisuuksien perusteella.
+Käytimme ominaisuussuunnittelun avulla luotuja uusia attribuutteja, kuten neulastiheyttä ja puun tilavuusindeksiä,
+jotka auttoivat ryhmittelemään puut niiden biologisten ja rakenteellisten ominaisuuksien perusteella.
+Työn pohjana toimivat Pandas ja K-Means -klusterointi. Klusterit visualisoitiin PCA:n 
+avulla kahdessa ulottuvuudessa. Lisäksi poistimme 1% kaukaisimmista pisteistä, jotta
+visualisointi keskittyisi olennaisiin havaintoihin.
 
-4.Johtopäätökset ## KESKEN
+Katso Uusien ominaisuuksien klusterointi.py 
+
+4.Johtopäätökset 
 Biologien alkuperäinen luokittelu ei täysin vastannut klusteroinnin tuloksia. 
-Uudet ominaisuudet, kuten `--` ja `--`, auttoivat parantamaan klusterointia. 
-Näiden avulla saimme paremman näkemyksen puiden eroista, kuten ....
\ No newline at end of file
+Uudet ominaisuudet auttoivat parantamaan klusterointia, sillä ne erottelivat puut esimerkiksi
+niiden kasvutapojen, iän ja lajityypin perusteella. 
+Näiden avulla saimme paremman näkemyksen puiden eroista, kuten neulasten määrä suhteessa
+kaarnan paksuuteen paljasti niiden ekologisia ja rakenteellisia eroja.
\ No newline at end of file
diff --git a/Uusien ominaisuuksien klusterointi.py b/Uusien ominaisuuksien klusterointi.py
index 065ca9f9197c2cfbd5f22d4b3ceed2e0f24fc74d..6e8346ad11d7e1ccf4267c63454327b50685d6f9 100644
--- a/Uusien ominaisuuksien klusterointi.py	
+++ b/Uusien ominaisuuksien klusterointi.py	
@@ -23,8 +23,10 @@ print("1. Puun tilavuuden suhde neulastiheyteen (auttaa tunnistamaan puutyyppej
 print("2. Käpytiheyden suhde puun tilavuuteen (auttaa tunnistamaan puiden iän ja lisääntymismahdollisuudet)") # features = ['Pine_Density', 'VolumeIndex']
 print("3. Käpytiheyden suhde kaarnan paksuuteen (auttaa tunnistamaan puun iän ja lisääntymisvaiheen)")
 print("4. Neulastiheyden suhde käpytiheyteen (auttaa tunnistamaan 'lehtevät' ja lisääntymiskykyiset puut)")
-print("5. Kaikki uudet ominaisuudet (luonnollinen ryhmittely)")
-print("6. Exit")
+print("5. korkeus suhteessa ympärysmittaan (auttaa tunnistamaan puiden kasvutapoja ja muotoja)")
+print("6. neulasten määrä suhteessa kaarnan paksuuteen (auttaa tunnistamaan kasvuolosuhteet ja puun iän)")
+print("7. Kaikki uudet ominaisuudet (luonnollinen ryhmittely)")
+print("8. Exit")
 
 choice = input("Anna valitsemasi numero: ")
 
@@ -57,14 +59,29 @@ elif choice == "4":
     yakseli = "Käpytiheys"
 
 elif choice == "5":
+    features = ['Height', 'Circumference'] # Lisätty, korkeus suhteessa ympärysmittaan
+    X = data[features]
+    title = "Puiden kasvutapoja ja puiden muotoja"
+    xakseli = "Korkeus"
+    yakseli = "Ympärysmitta"
+
+elif choice == "6":
+    features = ['NeedleNo', 'BarkThickness'] # neulasten määrä suhteessa kaarnan paksuuteen
+    X = data[features]
+    title = "Kasvuolosuhteet ja puun ikä"
+    xakseli = "Neulaset"
+    yakseli = "Kaarnan paksuus"
+
+elif choice == "7":
     features = ['Needles_per_Pine', 'Bark_to_Height', 'Pine_Density', 'Needle_Density',
                 'VolumeIndex', 'Height_to_Circumference', 'Needles_to_Bark'] # Valitaan klusterointiin käytettävät attribuutit
     X = data[features]
     title = "Luonnollinen ryhmittely"
-    xakseli = "Yhdistetyt ominaisuudet"
-    yakseli = "Yhdistetyt ominaisuudet"
+    xakseli = "Yhdistetyt ominaisuudet 1"
+    yakseli = "Yhdistetyt ominaisuudet 2"
 
-elif choice == "6":
+
+elif choice == "8":
     print("Lopetetaan...")
     exit()