Linear Discriminant Analysis

Kategori: Machine Learning , 03 Ocak 2020 , JanFranco


Linear Discriminant Analyis, kısaca LDA bir boyut indirgeme algoritmasıdır. Aslında Principal Component Analysis ile (kısaca PCA) benzer algoritmalardır. Bu yazımda basitçe LDA algoritmasını anlatacağım ve Python üzerinde kodlamasını göstereceğim.

PCA algoritmasında amaç veriler arası mesafeyi maksimumda tutmaktır ve sınıfların bir önemi yoktur. Sınıfların bir önemi olmadığına göre PCA gözetimsiz yani unsupervised bir öğrenme algoritması diyebiliriz. LDA algoritmasında ise amaç sınıfları birbirinden maksimum uzaklıkta ayırmaktır, doğrusal bir şekilde ayrıştırılabilecek sınıflar yaratmaktır. Sınıfları kullanacaksak bu algoritmaya da gözetimli yani supervised bir algoritma diyebiliriz. İki algoritmanın karşılaştırmasını aşağıdaki görselden daha iyi anlayabiliriz:

Linear discriminant analysis

Python ile bir örnek yapalım. Verileri ve ilgili kütüphaneleri import edelim:


import pandas as pd
from sklearn.metrics import confusion_matrix
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)

df = pd.read_csv('Wine.csv')
print(df)

>>

     Alcohol  Malic_Acid   Ash  Ash_Alcanity  Magnesium  Total_Phenols  Flavanoids  Nonflavanoid_Phenols  Proanthocyanins  Color_Intensity   Hue  OD280  Proline  Customer_Segment
0      14.23        1.71  2.43          15.6        127           2.80        3.06                  0.28             2.29         5.640000  1.04   3.92     1065                 1
1      13.20        1.78  2.14          11.2        100           2.65        2.76                  0.26             1.28         4.380000  1.05   3.40     1050                 1
2      13.16        2.36  2.67          18.6        101           2.80        3.24                  0.30             2.81         5.680000  1.03   3.17     1185                 1
3      14.37        1.95  2.50          16.8        113           3.85        3.49                  0.24             2.18         7.800000  0.86   3.45     1480                 1
4      13.24        2.59  2.87          21.0        118           2.80        2.69                  0.39             1.82         4.320000  1.04   2.93      735                 1
5      14.20        1.76  2.45          15.2        112           3.27        3.39                  0.34             1.97         6.750000  1.05   2.85     1450                 1
6      14.39        1.87  2.45          14.6         96           2.50        2.52                  0.30             1.98         5.250000  1.02   3.58     1290                 1
7      14.06        2.15  2.61          17.6        121           2.60        2.51                  0.31             1.25         5.050000  1.06   3.58     1295                 1
8      14.83        1.64  2.17          14.0         97           2.80        2.98                  0.29             1.98         5.200000  1.08   2.85     1045                 1
9      13.86        1.35  2.27          16.0         98           2.98        3.15                  0.22             1.85         7.220000  1.01   3.55     1045                 1
10     14.10        2.16  2.30          18.0        105           2.95        3.32                  0.22             2.38         5.750000  1.25   3.17     1510                 1
11     14.12        1.48  2.32          16.8         95           2.20        2.43                  0.26             1.57         5.000000  1.17   2.82     1280                 1
12     13.75        1.73  2.41          16.0         89           2.60        2.76                  0.29             1.81         5.600000  1.15   2.90     1320                 1
13     14.75        1.73  2.39          11.4         91           3.10        3.69                  0.43             2.81         5.400000  1.25   2.73     1150                 1
14     14.38        1.87  2.38          12.0        102           3.30        3.64                  0.29             2.96         7.500000  1.20   3.00     1547                 1
15     13.63        1.81  2.70          17.2        112           2.85        2.91                  0.30             1.46         7.300000  1.28   2.88     1310                 1
16     14.30        1.92  2.72          20.0        120           2.80        3.14                  0.33             1.97         6.200000  1.07   2.65     1280                 1
17     13.83        1.57  2.62          20.0        115           2.95        3.40                  0.40             1.72         6.600000  1.13   2.57     1130                 1
18     14.19        1.59  2.48          16.5        108           3.30        3.93                  0.32             1.86         8.700000  1.23   2.82     1680                 1
19     13.64        3.10  2.56          15.2        116           2.70        3.03                  0.17             1.66         5.100000  0.96   3.36      845                 1
20     14.06        1.63  2.28          16.0        126           3.00        3.17                  0.24             2.10         5.650000  1.09   3.71      780                 1
21     12.93        3.80  2.65          18.6        102           2.41        2.41                  0.25             1.98         4.500000  1.03   3.52      770                 1
22     13.71        1.86  2.36          16.6        101           2.61        2.88                  0.27             1.69         3.800000  1.11   4.00     1035                 1
23     12.85        1.60  2.52          17.8         95           2.48        2.37                  0.26             1.46         3.930000  1.09   3.63     1015                 1
24     13.50        1.81  2.61          20.0         96           2.53        2.61                  0.28             1.66         3.520000  1.12   3.82      845                 1
25     13.05        2.05  3.22          25.0        124           2.63        2.68                  0.47             1.92         3.580000  1.13   3.20      830                 1
26     13.39        1.77  2.62          16.1         93           2.85        2.94                  0.34             1.45         4.800000  0.92   3.22     1195                 1
27     13.30        1.72  2.14          17.0         94           2.40        2.19                  0.27             1.35         3.950000  1.02   2.77     1285                 1
28     13.87        1.90  2.80          19.4        107           2.95        2.97                  0.37             1.76         4.500000  1.25   3.40      915                 1
29     14.02        1.68  2.21          16.0         96           2.65        2.33                  0.26             1.98         4.700000  1.04   3.59     1035                 1
..       ...         ...   ...           ...        ...            ...         ...                   ...              ...              ...   ...    ...      ...               ...
148    13.32        3.24  2.38          21.5         92           1.93        0.76                  0.45             1.25         8.420000  0.55   1.62      650                 3
149    13.08        3.90  2.36          21.5        113           1.41        1.39                  0.34             1.14         9.400000  0.57   1.33      550                 3
150    13.50        3.12  2.62          24.0        123           1.40        1.57                  0.22             1.25         8.600000  0.59   1.30      500                 3
151    12.79        2.67  2.48          22.0        112           1.48        1.36                  0.24             1.26        10.800000  0.48   1.47      480                 3
152    13.11        1.90  2.75          25.5        116           2.20        1.28                  0.26             1.56         7.100000  0.61   1.33      425                 3
153    13.23        3.30  2.28          18.5         98           1.80        0.83                  0.61             1.87        10.520000  0.56   1.51      675                 3
154    12.58        1.29  2.10          20.0        103           1.48        0.58                  0.53             1.40         7.600000  0.58   1.55      640                 3
155    13.17        5.19  2.32          22.0         93           1.74        0.63                  0.61             1.55         7.900000  0.60   1.48      725                 3
156    13.84        4.12  2.38          19.5         89           1.80        0.83                  0.48             1.56         9.010000  0.57   1.64      480                 3
157    12.45        3.03  2.64          27.0         97           1.90        0.58                  0.63             1.14         7.500000  0.67   1.73      880                 3
158    14.34        1.68  2.70          25.0         98           2.80        1.31                  0.53             2.70        13.000000  0.57   1.96      660                 3
159    13.48        1.67  2.64          22.5         89           2.60        1.10                  0.52             2.29        11.750000  0.57   1.78      620                 3
160    12.36        3.83  2.38          21.0         88           2.30        0.92                  0.50             1.04         7.650000  0.56   1.58      520                 3
161    13.69        3.26  2.54          20.0        107           1.83        0.56                  0.50             0.80         5.880000  0.96   1.82      680                 3
162    12.85        3.27  2.58          22.0        106           1.65        0.60                  0.60             0.96         5.580000  0.87   2.11      570                 3
163    12.96        3.45  2.35          18.5        106           1.39        0.70                  0.40             0.94         5.280000  0.68   1.75      675                 3
164    13.78        2.76  2.30          22.0         90           1.35        0.68                  0.41             1.03         9.580000  0.70   1.68      615                 3
165    13.73        4.36  2.26          22.5         88           1.28        0.47                  0.52             1.15         6.620000  0.78   1.75      520                 3
166    13.45        3.70  2.60          23.0        111           1.70        0.92                  0.43             1.46        10.680000  0.85   1.56      695                 3
167    12.82        3.37  2.30          19.5         88           1.48        0.66                  0.40             0.97        10.260000  0.72   1.75      685                 3
168    13.58        2.58  2.69          24.5        105           1.55        0.84                  0.39             1.54         8.660000  0.74   1.80      750                 3
169    13.40        4.60  2.86          25.0        112           1.98        0.96                  0.27             1.11         8.500000  0.67   1.92      630                 3
170    12.20        3.03  2.32          19.0         96           1.25        0.49                  0.40             0.73         5.500000  0.66   1.83      510                 3
171    12.77        2.39  2.28          19.5         86           1.39        0.51                  0.48             0.64         9.899999  0.57   1.63      470                 3
172    14.16        2.51  2.48          20.0         91           1.68        0.70                  0.44             1.24         9.700000  0.62   1.71      660                 3
173    13.71        5.65  2.45          20.5         95           1.68        0.61                  0.52             1.06         7.700000  0.64   1.74      740                 3
174    13.40        3.91  2.48          23.0        102           1.80        0.75                  0.43             1.41         7.300000  0.70   1.56      750                 3
175    13.27        4.28  2.26          20.0        120           1.59        0.69                  0.43             1.35        10.200000  0.59   1.56      835                 3
176    13.17        2.59  2.37          20.0        120           1.65        0.68                  0.53             1.46         9.300000  0.60   1.62      840                 3
177    14.13        4.10  2.74          24.5         96           2.05        0.76                  0.56             1.35         9.200000  0.61   1.60      560                 3
İlk 13 attribute bizim için bağımsız değişken, son attribute bizim bağımlı değişkendir:


x = df.iloc[:, 0:13].values
y = df.iloc[:, 13].values
Verileri train ve test şeklinde ayıralım. Scale edelim:


sc = StandardScaler()
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=.33, random_state=0)
x_train = sc.fit_transform(x_train)
x_test = sc.fit_transform(x_test)
LinearDiscriminantAnalysis sınıfından bir obje türetelim. Algoritmayı verilere fit_transform methodu ile uygulayalım:


lda = LinearDiscriminantAnalysis(n_components=2)
x_train2 = lda.fit_transform(x_train, y_train)
x_test2 = lda.transform(x_test)
Logistic Regression algoritması ile sonuçları görelim:


logisticReg = LogisticRegression(random_state=0)
logisticReg.fit(x_train, y_train)
res = logisticReg.predict(x_test)

logisticReg2 = LogisticRegression(random_state=0)
logisticReg2.fit(x_train2, y_train)
res2 = logisticReg2.predict(x_test2)

cm1 = confusion_matrix(res, y_test)
cm2 = confusion_matrix(res2, y_test)
print(cm1)
print(cm2)

>>

[[20  0  0]
 [ 0 24  0]
 [ 0  0 15]]
[[20  0  0]
 [ 0 24  0]
 [ 0  0 15]]


Sonraki Yazı: k-fold Cross Validation
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın