ml-2023SZ/zad8.py

36 lines
1.0 KiB
Python

import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
data = pd.read_csv("flats_for_clustering.tsv",
header=0,
sep="\t")
data["Piętro"] = data["Piętro"].apply(
lambda x: 0 if x in ["parter", "niski parter"] else x
)
data["Piętro"] = data["Piętro"].apply(pd.to_numeric, errors="coerce")
data["cena"] = data["cena"].apply(
lambda x: np.NaN if x in [0] else x
)
data = data.loc[(data["Powierzchnia w m2"] < 500)] # pozbywamy się danych odstających
data = data.dropna()
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)
kmeans = KMeans(n_clusters=5)
clusters = kmeans.fit_predict(scaled_data)
pca = PCA(n_components=2)
pca_data = pca.fit_transform(scaled_data)
plt.scatter(pca_data[:, 0], pca_data[:, 1], c=clusters)
plt.title('Wizualizacja klastrów po zastosowaniu algorytmu PCA')
plt.xlabel('x1')
plt.ylabel('x2')
plt.show()