Unsupervised learning(Denetimsiz,Gözetimsiz Öğrenme)

ANIL NEBİ ŞENTÜRK
10 min readFeb 3, 2022
https://techvidvan.com/tutorials/unsupervised-learning/

Merhabalar bu yazım da makine öğrenmesinin bir diğer türü olan denetimsiz öğrenmeden bahsedeceğim ve 3 farklı veri seti ile uçtan uca uygulama gerçekleştireceğim.

Denetimsiz(Gözetimsiz)Öğrenme:Modeli denetlememize gerek olmayan bir makine öğrenmesi modelidir.Bağımlı değişkene rastlanmaz.Denetimli öğrenmeye kıyasla daha karmaşık işlem ve görevleri yerine getirir.Denetimsiz öğrenmenin temel amacı verileri sınırlandırmaktır.Google fotoğraflardaki yüzler, hayvanlar ve bitkiler sınıflandırması denetimsiz öğrenmeye örnek gösterilebilir.

Denetimsiz Öğrenme’de Kullanılan Metotlar

Kümeleme Yöntemi(K-means):Kümeleme yöntemi, makine öğrenmesinin bir çeşidi olan gözetimsiz öğrenmede kullanılan bir istatistiksel yaklaşımdır. Gözetimsiz öğrenmede kullanılan etiketlenmemiş veriler kümeleme yöntemi ile gösterdikleri özelliklere göre sınıflandırılır. Elinizde bir veri havuzu olduğunu düşünelim, binlerce veri benzer özelliklerine göre kümelere ayrılır sonuç olarak verilerin birbirine yakınlığına bağlı olmak üzere elinizde belli sayıda veri kümesi oluşur.

https://www.analyticsvidhya.com/blog/2020/10/a-simple-explanation-of-k-means-clustering/

Adım 1:Küme sayısı belirlenir
Adım 2:Rastgele k merkez seçilir
Adım 3:Her gözlem için k merkezlere uzaklıklar hesaplanır
Adım 4:Her gözlem en yakın olduğu kümeye atanır.
Adım 5:Kümeler için tekrar merkez hesabı yapılır.
Adım 6:Küme içi hata kareler toplamlarının toplamının minimum olduğu durumda ki gözlemlerin kümelenme yapısı nihai kümelenme olarak seçilir.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.preprocessing import MinMaxScaler
from yellowbrick.cluster import KElbowVisualizer
from scipy.cluster.hierarchy import linkage
from scipy.cluster.hierarchy import dendrogram
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.model_selection import cross_val_score, GridSearchCV
from sklearn.preprocessing import LabelEncoder
from helpers.data_prep import *
from helpers.eda import *
#K-Means:Bu veri seti, 1973'te ABD’nin 50 eyaletinin her birinde 100.000 kişi başına saldırı, cinayet ve tecavüz nedeniyle tutuklanan istatistikleri içerir. Ayrıca, kentsel alanlarda yaşayan nüfusun yüzdesi de verilmiştir
Rape:Tecavüz
Murder:Cinayet
UrbanPop:Nüfus Yoğunluğu;
Murder:Cinayet

Neden standartlaştırma işlemi yapmamız gerekebilir???
1) Değişkenlerin birbirini ezmemesi için…
2)Gradient Descent temelli optimizasyon süresine pozitif katkısı olduğundan ötürü.
3)Uzaklık temelli yöntemlerde

sc = MinMaxScaler((0, 1))
df = sc.fit_transform(df)

df[0:5]
array([[0.74698795, 0.65410959, 0.44067797, 0.35917313],
[0.55421687, 0.74657534, 0.27118644, 0.96124031],
[0.43975904, 0.85273973, 0.81355932, 0.6124031 ],
[0.48192771, 0.49657534, 0.30508475, 0.31524548],
[0.4939759 , 0.79109589, 1. , 0.86046512]])
kmeans = KMeans(n_clusters=4)
k_fit = kmeans.fit(df)
k_fit.n_clusters #küme sayısını verir
k_fit.cluster_centers_ #kümelerin merkezlerini verir
k_fit.labels_ #kümelerin etiketleri 0,1,2,3'lerden oluşumu
k_fit.inertia_ #SSE uzaklıkların karesi
3.683456153585913

Temel Bileşenler Analizi (Principal Component Analysis)

Temel Bileşenler Analizi, çok değişkenli bir veri seti içerisindeki bilgiyi daha az değişkenle ve minimum bilgi kaybıyla açıklamanın bir matematiksel tekniğidir. Başka bir tanımla PCA, çok sayıda birbiri ile ilişkili değişkenler içeren veri setinin boyutunu, veri seti içerisindeki veriyi koruyarak daha küçük boyuta indirgenmesini sağlayan bir dönüşüm tekniğidir. PCA, büyük boyutlu veri setlerindeki boyutsallığı azaltır. Teknik, boyut küçültme işleminde veri seti içerisindeki değişken sayısını azaltmayı hedefler. Dönüşüm sonrasında elde edilen değişkenler ilk değişkenlerin temel bileşenleri olarak adlandırılır. İlk temel bileşen olarak varyans değeri en büyük olan seçilir ve diğer temel bileşenler varyans değerleri azalacak şekilde sıralanır.

PCA’nın Özellikleri
.
PCA, boyut azaltmada çok faydalı bir yöntemdir.

.PCA, çok boyutlu verileri yaklaşık olarak ve daha az boyutlu veriyle temsil eder.

.PCA, orijinal veriler için dik-olan-en-büyük-varyans-yönleri bulup orijinal verileri bu koordinat sisteminde gösterir.

.PCA, çok boyutlu verilerin görsel gösterilmesi ve incelenmesi için kullanılabilir.

  • PCA, makine öğrenmesi olarak, verilerin boyutu azaltabilir–az değişen PCA özellikleri modelleme için önemsiz olabilir, bu şekilde modelleme ile ilgili hesaplama hızlandırabilir.
  • PCA, veri sıkıştırma içinde kullanılabilir.

PCA’nın üç temel amacı vardır:

  1. Verilerin boyutunu azaltma
  2. Tahminleme yapma
  3. Veri setini, bazı analizler için görüntülemek

PCA’nın Uygulanışı
1)
Birinci eksen olarak, verilerin en büyük değişiminde olan yön seçilir.

2)İkinci eksen olarak, önceki birinci eksene dikey olan ve verilerin en büyük değişiminde olan yön seçilir.

3)Üçüncü eksen olarak, önceki birinci ve ikinci eksene dikey olan ve kalan verilerin en büyük değişiminde olan yön seçilir.

4)Böyle — her zaman yeni eksen olarak verilerindeki en büyük kalan değişimde olan yön seçilmektedir.

# Optimum Küme Sayısının Belirlenmesi
################################

kmeans = KMeans()
ssd = [] #sum of square distances
K = range(1, 30)

for k in K:
kmeans = KMeans(n_clusters=k).fit(df)
ssd.append(kmeans.inertia_)

plt.plot(K, ssd, "bx-")
plt.xlabel("Farklı K Değerlerine Karşılık Uzaklık Artık Toplamları")
plt.title("Optimum Küme sayısı için Elbow Yöntemi")
plt.show()

Optimum küme sayısı için Elbow(dirsek) Yöntemi

kmeans = KMeans()
elbow = KElbowVisualizer(kmeans, k=(2, 20))
elbow.fit(df)
elbow.show()

elbow.elbow_value_
6
# Final Cluster'ların Oluşturulması
kmeans = KMeans(n_clusters=elbow.elbow_value_).fit(df)
kumeler = kmeans.labels_

df = pd.read_csv("C:/Users/Lenovo/OneDrive/Masaüstü/anş.py/USArrests.csv", index_col=0)

pd.DataFrame({"Eyaletler": df.index, "Kumeler": kumeler})

df["cluster_no"] = kumeler

df["cluster_no"] = df["cluster_no"] + 1
#cluster 1'den başlatıldı.

df.head()

df.groupby("cluster_no").agg({"cluster_no": "count"})
df.groupby("cluster_no").agg(np.mean)
df[df["cluster_no"] == 5]
Murder Assault UrbanPop Rape cluster_no
Connecticut 3.3 110 77 11.1 5
Hawaii 5.3 46 83 20.2 5
Massachusetts 4.4 149 85 16.3 5
New Jersey 7.4 159 89 18.8 5
Ohio 7.3 120 75 21.4 5
Pennsylvania 6.3 106 72 14.9 5
Rhode Island 3.4 174 87 8.3 5
Utah 3.2 120 80 22.9 5
Washington 4.0 145 73 26.2 5
df[df["cluster_no"] == 6]
Murder Assault UrbanPop Rape cluster_no
Alaska 10.0 263 48 44.5 6

Hiyerarşik Kümeleme Yöntemi:Amaç gözlemleri birbilerine olan banzerliklerine göre alt kümelere ayırmaktır.

Agglomerative(birleştirici)Clustering:Başlangıç da gözlem sayısı kadar küme vardır.
Adım 1:Veri setinde birbirine en yakın olan iki gözlem bulunur.
Adım2:Bu iki nokta bir araya getirilerek yeni bir gözlem oluşturulur.
Adım3:Aynı işlem tekrarlanarak yukarıya doğru çıkılır.

Birbirine yakın noktalar uzaklık ölçütleri kullanılarak belirlenir.Öklit uzaklığı,manhattan uzaklığı,korelasyon,vs

Divisive(bölümleyici)Clustering:Başlangıç da 1 tane küme vardır o da tüm veri setidir.
Adım1:Tüm gözlemlerin bir arada olduğu küme iki alt kümeye ayrılır.
Adım2:Oluşan yeni kümeler birbirine benzemeyen alt kümelere bölünür.
Adım3:Aynı işlem gözlem sayısı kadar küme elde edilinceye kadar devam eder.

# Hierarchical Clustering
################################


df = pd.read_csv("C:/Users/Lenovo/OneDrive/Masaüstü/anş.py/USArrests.csv", index_col=0)

sc = MinMaxScaler((0, 1))
df = sc.fit_transform(df)

hc_complete = linkage(df, "complete")
hc_average = linkage(df, "average")

plt.figure(figsize=(10, 5))
plt.title("Hiyerarşik Kümeleme Dendogramı")
plt.xlabel("Gözlem Birimleri")
plt.ylabel("Uzaklıklar")
dendrogram(hc_complete,
leaf_font_size=10)
plt.show()
# Kume Sayısını Belirlemek
################################

plt.figure(figsize=(7, 5))
plt.title("Dendrograms")
dend = dendrogram(hc_average,
truncate_mode="lastp",
p=10,
show_contracted=True,
leaf_font_size=10)
plt.axhline(y=0.5, color='r', linestyle='--')
plt.show()
# Final Modeli Oluşturmak
################################

from sklearn.cluster import AgglomerativeClustering

cluster = AgglomerativeClustering(n_clusters=5)
cluster.fit_predict(df)

df = pd.read_csv("C:/Users/Lenovo/OneDrive/Masaüstü/anş.py/USArrests.csv", index_col=0)
df["cluster_no"] = cluster.fit_predict(df)

Temel Bileşen Analizi(Principal Component Analysis)
Çok değişkenli verinin ana özelliklerini daha az sayıda değişken(bileşen) ile ifade etmektir.
Küçük bir miktarda bilgi kaybını göze alıp değişken boyutunu azaltmaktır.

# Principal Component Analysis
################################


df = pd.read_csv("C:/Users/Lenovo/Hitters.csv")
df.head()
df.shape


num_cols = [col for col in df.columns if df[col].dtypes != "O" and "Salary" not in col] #salary ve object olmayanları seçtim.

df = df[num_cols]
df.dropna(inplace=True)
df.shape

df = StandardScaler().fit_transform(df)

pca = PCA()
pca_fit = pca.fit_transform(df)

pca.explained_variance_ratio_
np.cumsum(pca.explained_variance_ratio_)
# Optimum Bileşen Sayısı
################################


pca = PCA().fit(df)
plt.plot(np.cumsum(pca.explained_variance_ratio_))
plt.xlabel("Bileşen Sayısını")
plt.ylabel("Kümülatif Varyans Oranı")
plt.show()

Faktör Analizi:(Dipnot):Korelasyonu yüksek olan değişkenler bir arada
Benzer özelliklere sahip değişkenler faktörleşir(bir araya gelir)

# Final PCA'in Oluşturulması
################################

pca = PCA(n_components=3)
pca_fit = pca.fit_transform(df)
pca.explained_variance_ratio_
np.cumsum(pca.explained_variance_ratio_)


pca_fit.shape
Out[60]: array([0.46037855, 0.72077704, 0.82416565])
pca_fit.shape
Out[61]: (322, 3)
%82'i ilk üç bileşen açıklıyor.

Veri setini 3 farklı bileşene(değişken) indirgedik(P1,P2,P3)

3 farklı bileşen ve others dediğimiz kategorikleri bir araya getirdik.
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor

def label_encoder(dataframe, binary_col):
labelencoder = LabelEncoder()
dataframe[binary_col] = labelencoder.fit_transform(dataframe[binary_col])
return dataframe

for col in ["NewLeague", "Division", "League"]:
label_encoder(final_df, col)


final_df.dropna(inplace=True)


y = final_df["Salary"]
X = final_df.drop(["Salary"], axis=1)

lm = LinearRegression()
rmse = np.mean(np.sqrt(-cross_val_score(lm, X, y, cv=5, scoring="neg_mean_squared_error")))

y.mean()


cart = DecisionTreeRegressor()
rmse = np.mean(np.sqrt(-cross_val_score(cart, X, y, cv=5, scoring="neg_mean_squared_error")))

cart_params = {'max_depth': range(1, 11),
"min_samples_split": range(2, 20)}

# GridSearchCV
cart_best_grid = GridSearchCV(cart,
cart_params,
cv=5,
n_jobs=-1,
verbose=True).fit(X, y)

cart_final = DecisionTreeRegressor(**cart_best_grid.best_params_, random_state=17).fit(X, y)

rmse = np.mean(np.sqrt(-cross_val_score(cart_final, X, y, cv=5, scoring="neg_mean_squared_error")))
<<Fitting 5 folds for each of 180 candidates, totalling 900 fits>>BONUS: PCA ile Çok Boyutlu Veriyi 2 Boyutta GörselleştirmeBreast Cancer

Meme kanseri hastalarına ait veri seti olan breast cancer verimizi okutalım.

pd.set_option('display.max_columns', None)
pd.set_option('display.width', 500)
import random
df = pd.read_csv("C:/Users/Lenovo/anaconda3/pkgs/scikit-learn-1.0.2-py39hf11a4ad_1/Lib/site-packages/sklearn/datasets/data/breast_cancer.csv")
check_df(df)
nt64
check_df(df)
heck_df(df)
##################### Shape #####################
(569, 33)
##################### Types #####################
id int64
diagnosis object
radius_mean float64
texture_mean float64
perimeter_mean float64
area_mean float64
smoothness_mean float64
compactness_mean float64
concavity_mean float64
concave points_mean float64
symmetry_mean float64
fractal_dimension_mean float64
radius_se float64
texture_se float64
perimeter_se float64
area_se float64
smoothness_se float64
compactness_se float64
concavity_se float64
concave points_se float64
symmetry_se float64
fractal_dimension_se float64
radius_worst float64
texture_worst float64
perimeter_worst float64
area_worst float64
smoothness_worst float64
compactness_worst float64
concavity_worst float64
concave points_worst float64
symmetry_worst float64
fractal_dimension_worst float64
Unnamed: 32 float64
dtype: object
##################### Head #####################
id diagnosis radius_mean texture_mean perimeter_mean area_mean smoothness_mean compactness_mean concavity_mean concave points_mean symmetry_mean fractal_dimension_mean radius_se texture_se perimeter_se area_se smoothness_se compactness_se concavity_se concave points_se symmetry_se fractal_dimension_se radius_worst texture_worst perimeter_worst area_worst smoothness_worst compactness_worst concavity_worst concave points_worst symmetry_worst \
0 842302 M 17.99 10.38 122.80 1001.0 0.11840 0.27760 0.3001 0.14710 0.2419 0.07871 1.0950 0.9053 8.589 153.40 0.006399 0.04904 0.05373 0.01587 0.03003 0.006193 25.38 17.33 184.60 2019.0 0.1622 0.6656 0.7119 0.2654 0.4601
1 842517 M 20.57 17.77 132.90 1326.0 0.08474 0.07864 0.0869 0.07017 0.1812 0.05667 0.5435 0.7339 3.398 74.08 0.005225 0.01308 0.01860 0.01340 0.01389 0.003532 24.99 23.41 158.80 1956.0 0.1238 0.1866 0.2416 0.1860 0.2750
2 84300903 M 19.69 21.25 130.00 1203.0 0.10960 0.15990 0.1974 0.12790 0.2069 0.05999 0.7456 0.7869 4.585 94.03 0.006150 0.04006 0.03832 0.02058 0.02250 0.004571 23.57 25.53 152.50 1709.0 0.1444 0.4245 0.4504 0.2430 0.3613
3 84348301 M 11.42 20.38 77.58 386.1 0.14250 0.28390 0.2414 0.10520 0.2597 0.09744 0.4956 1.1560 3.445 27.23 0.009110 0.07458 0.05661 0.01867 0.05963 0.009208 14.91 26.50 98.87 567.7 0.2098 0.8663 0.6869 0.2575 0.6638
4 84358402 M 20.29 14.34 135.10 1297.0 0.10030 0.13280 0.1980 0.10430 0.1809 0.05883 0.7572 0.7813 5.438 94.44 0.011490 0.02461 0.05688 0.01885 0.01756 0.005115 22.54 16.67 152.20 1575.0 0.1374 0.2050 0.4000 0.1625 0.2364
fractal_dimension_worst Unnamed: 32
0 0.11890 NaN
1 0.08902 NaN
2 0.08758 NaN
3 0.17300 NaN
4 0.07678 NaN
##################### Tail #####################
id diagnosis radius_mean texture_mean perimeter_mean area_mean smoothness_mean compactness_mean concavity_mean concave points_mean symmetry_mean fractal_dimension_mean radius_se texture_se perimeter_se area_se smoothness_se compactness_se concavity_se concave points_se symmetry_se fractal_dimension_se radius_worst texture_worst perimeter_worst area_worst smoothness_worst compactness_worst concavity_worst concave points_worst symmetry_worst \
564 926424 M 21.56 22.39 142.00 1479.0 0.11100 0.11590 0.24390 0.13890 0.1726 0.05623 1.1760 1.256 7.673 158.70 0.010300 0.02891 0.05198 0.02454 0.01114 0.004239 25.450 26.40 166.10 2027.0 0.14100 0.21130 0.4107 0.2216 0.2060
565 926682 M 20.13 28.25 131.20 1261.0 0.09780 0.10340 0.14400 0.09791 0.1752 0.05533 0.7655 2.463 5.203 99.04 0.005769 0.02423 0.03950 0.01678 0.01898 0.002498 23.690 38.25 155.00 1731.0 0.11660 0.19220 0.3215 0.1628 0.2572
566 926954 M 16.60 28.08 108.30 858.1 0.08455 0.10230 0.09251 0.05302 0.1590 0.05648 0.4564 1.075 3.425 48.55 0.005903 0.03731 0.04730 0.01557 0.01318 0.003892 18.980 34.12 126.70 1124.0 0.11390 0.30940 0.3403 0.1418 0.2218
567 927241 M 20.60 29.33 140.10 1265.0 0.11780 0.27700 0.35140 0.15200 0.2397 0.07016 0.7260 1.595 5.772 86.22 0.006522 0.06158 0.07117 0.01664 0.02324 0.006185 25.740 39.42 184.60 1821.0 0.16500 0.86810 0.9387 0.2650 0.4087
568 92751 B 7.76 24.54 47.92 181.0 0.05263 0.04362 0.00000 0.00000 0.1587 0.05884 0.3857 1.428 2.548 19.15 0.007189 0.00466 0.00000 0.00000 0.02676 0.002783 9.456 30.37 59.16 268.6 0.08996 0.06444 0.0000 0.0000 0.2871
fractal_dimension_worst Unnamed: 32
564 0.07115 NaN
565 0.06637 NaN
566 0.07820 NaN
567 0.12400 NaN
568 0.07039 NaN
##################### NA #####################
id 0
diagnosis 0
radius_mean 0
texture_mean 0
perimeter_mean 0
area_mean 0
smoothness_mean 0
compactness_mean 0
concavity_mean 0
concave points_mean 0
symmetry_mean 0
fractal_dimension_mean 0
radius_se 0
texture_se 0
perimeter_se 0
area_se 0
smoothness_se 0
compactness_se 0
concavity_se 0
concave points_se 0
symmetry_se 0
fractal_dimension_se 0
radius_worst 0
texture_worst 0
perimeter_worst 0
area_worst 0
smoothness_worst 0
compactness_worst 0
concavity_worst 0
concave points_worst 0
symmetry_worst 0
fractal_dimension_worst 0
Unnamed: 32 569
dtype: int64
##################### Quantiles #####################
0.00 0.05 0.50 0.95 0.99 1.00
id 8670.000000 90267.000000 906024.000000 9.042446e+07 9.010343e+08 9.113205e+08
radius_mean 6.981000 9.529200 13.370000 2.057600e+01 2.437160e+01 2.811000e+01
texture_mean 9.710000 13.088000 18.840000 2.715000e+01 3.065200e+01 3.928000e+01
perimeter_mean 43.790000 60.496000 86.240000 1.358200e+02 1.657240e+02 1.885000e+02
area_mean 143.500000 275.780000 551.100000 1.309800e+03 1.786600e+03 2.501000e+03
smoothness_mean 0.052630 0.075042 0.095870 1.187800e-01 1.328880e-01 1.634000e-01
compactness_mean 0.019380 0.040660 0.092630 2.087000e-01 2.771920e-01 3.454000e-01
concavity_mean 0.000000 0.004983 0.061540 2.430200e-01 3.516880e-01 4.268000e-01
concave points_mean 0.000000 0.005621 0.033500 1.257400e-01 1.642080e-01 2.012000e-01
symmetry_mean 0.106000 0.141500 0.179200 2.307200e-01 2.595640e-01 3.040000e-01
fractal_dimension_mean 0.049960 0.053926 0.061540 7.609000e-02 8.543760e-02 9.744000e-02
radius_se 0.111500 0.160100 0.324200 9.595200e-01 1.291320e+00 2.873000e+00
texture_se 0.360200 0.540140 1.108000 2.212000e+00 2.915440e+00 4.885000e+00
perimeter_se 0.757000 1.132800 2.287000 7.041600e+00 9.690040e+00 2.198000e+01
area_se 6.802000 11.360000 24.530000 1.158000e+02 1.776840e+02 5.422000e+02
smoothness_se 0.001713 0.003690 0.006380 1.264400e-02 1.725800e-02 3.113000e-02
compactness_se 0.002252 0.007892 0.020450 6.057800e-02 8.987200e-02 1.354000e-01
concavity_se 0.000000 0.003253 0.025890 7.893600e-02 1.222920e-01 3.960000e-01
concave points_se 0.000000 0.003831 0.010930 2.288400e-02 3.119360e-02 5.279000e-02
symmetry_se 0.007882 0.011758 0.018730 3.498800e-02 5.220800e-02 7.895000e-02
fractal_dimension_se 0.000895 0.001522 0.003187 7.959800e-03 1.264960e-02 2.984000e-02
radius_worst 7.930000 10.534000 14.970000 2.564000e+01 3.076280e+01 3.604000e+01
texture_worst 12.020000 16.574000 25.410000 3.630000e+01 4.180240e+01 4.954000e+01
perimeter_worst 50.410000 67.856000 97.660000 1.716400e+02 2.083040e+02 2.512000e+02
area_worst 185.200000 331.060000 686.500000 2.009600e+03 2.918160e+03 4.254000e+03
smoothness_worst 0.071170 0.095734 0.131300 1.718400e-01 1.889080e-01 2.226000e-01
compactness_worst 0.027290 0.071196 0.211900 5.641200e-01 7.786440e-01 1.058000e+00
concavity_worst 0.000000 0.018360 0.226700 6.823800e-01 9.023800e-01 1.252000e+00
concave points_worst 0.000000 0.024286 0.099930 2.369200e-01 2.692160e-01 2.910000e-01
symmetry_worst 0.156500 0.212700 0.282200 4.061600e-01 4.869080e-01 6.638000e-01
fractal_dimension_worst 0.055040 0.062558 0.080040 1.195200e-01 1.406280e-01 2.075000e-01
Unnamed: 32 NaN NaN NaN NaN NaN NaN

Amacımız çok değişkenli veriyi PCA(Principal Component Analysis) kullanarak,boyut indirgemesi yaparak 2 eksende göstermek.!!!

y = df["diagnosis"]
X = df.drop(["diagnosis", "id", "Unnamed: 32"], axis=1)


def create_pca_df(X, y):
X = StandardScaler().fit_transform(X)
pca = PCA(n_components=2)
pca_fit = pca.fit_transform(X)
pca_df = pd.DataFrame(data=pca_fit, columns=['PC1', 'PC2'])
final_df = pd.concat([pca_df, pd.DataFrame(y)], axis=1)
return final_df

pca_df = create_pca_df(X, y)

def plot_pca(dataframe, target):
fig = plt.figure(figsize=(7, 5))
ax = fig.add_subplot(1, 1, 1)
ax.set_xlabel('PC1', fontsize=15)
ax.set_ylabel('PC2', fontsize=15)
ax.set_title(f'{target.capitalize()} ', fontsize=20)

targets = list(dataframe[target].unique())
colors = random.sample(['r', 'b', "g", "y"], len(targets))

for t, color in zip(targets, colors):
indices = dataframe[target] == t
ax.scatter(dataframe.loc[indices, 'PC1'], dataframe.loc[indices, 'PC2'], c=color, s=50)
ax.legend(targets)
ax.grid()
plt.show()


plot_pca(pca_df, "diagnosis")

Referans:https://www.veribilimiokulu.com/makineler-nasil-ogrenir/

VBO❤

--

--