Cara melakukan penskalaan multidimensi dengan python


Dalam statistik, penskalaan multidimensi adalah cara untuk memvisualisasikan kesamaan observasi dalam kumpulan data dalam ruang Cartesian abstrak (biasanya ruang 2D).

Cara termudah untuk melakukan penskalaan multidimensi dengan Python adalah dengan menggunakan fungsi MDS() dari submodul sklearn.manifold .

Contoh berikut menunjukkan cara menggunakan fungsi ini dalam praktiknya.

Contoh: Penskalaan Multidimensi dengan Python

Misalkan kita memiliki pandas DataFrame berikut yang berisi informasi tentang berbagai pemain bola basket:

 import pandas as pd

#create DataFrane
df = pd. DataFrame ({' player ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K '],
                   ' points ': [4, 4, 6, 7, 8, 14, 16, 19, 25, 25, 28],
                   ' assists ': [3, 2, 2, 5, 4, 8, 7, 6, 8, 10, 11],
                   ' blocks ': [7, 3, 6, 7, 5, 8, 8, 4, 2, 2, 1],
                   ' rebounds ': [4, 5, 5, 6, 5, 8, 10, 4, 3, 2, 2]})

#set player column as index column
df = df. set_index (' player ')

#view Dataframe
print (df)

        points assists blocks rebounds
player                                   
A 4 3 7 4
B 4 2 3 5
C 6 2 6 5
D 7 5 7 6
E 8 4 5 5
F 14 8 8 8
G 16 7 8 10
H 19 6 4 4
I 25 8 2 3
D 25 10 2 2
K 28 11 1 2

Kita dapat menggunakan kode berikut untuk melakukan penskalaan multidimensi dengan fungsi MDS() pada modul sklearn.manifold :

 from sklearn. manifold import MDS

#perform multi-dimensional scaling
mds = MDS(random_state= 0 )
scaled_df = mds. fit_transform (df)

#view results of multi-dimensional scaling
print (scaled_df)

[[ 7.43654469 8.10247222]
 [4.13193821 10.27360901]
 [5.20534681 7.46919526]
 [6.22323046 4.45148627]
 [3.74110999 5.25591459]
 [3.69073384 -2.88017811]
 [3.89092087 -5.19100988]
 [ -3.68593169 -3.0821144 ]
 [ -9.13631889 -6.81016012]
 [ -8.97898385 -8.50414387]
 [-12.51859044 -9.08507097]]

Setiap baris DataFrame asli telah direduksi menjadi koordinat (x, y).

Kita dapat menggunakan kode berikut untuk memvisualisasikan koordinat ini dalam ruang 2D:

 import matplotlib.pyplot as plt

#create scatterplot
plt. scatter (scaled_df[:,0], scaled_df[:,1])

#add axis labels
plt. xlabel (' Coordinate 1 ')
plt. ylabel (' Coordinate 2 ')

#add lables to each point
for i, txt in enumerate( df.index ):
    plt. annotate (txt, (scaled_df[:,0][i]+.3, scaled_df[:,1][i]))

#display scatterplot
plt. show ()

penskalaan multidimensi dengan Python

Pemain di DataFrame asli yang memiliki nilai serupa di empat kolom asli (poin, assist, blok, dan rebound) berada berdekatan satu sama lain dalam plot.

Misalnya pemain F dan G saling tertutup. Berikut nilainya dari DataFrame asli:

 #select rows with index labels 'F' and 'G'
df. loc [[' F ',' G ']]

        points assists blocks rebounds
player				
F 14 8 8 8
G 16 7 8 10

Nilai poin, assist, blok, dan reboundnya sangat mirip, itulah sebabnya keduanya begitu dekat satu sama lain dalam plot 2D.

Sebaliknya, pertimbangkan pemain B dan K yang berjauhan dalam plot.

Jika kita mengacu pada nilainya di DataFrame asli, kita dapat melihat bahwa nilainya sangat berbeda:

 #select rows with index labels 'B' and 'K'
df. loc [[' B ',' K ']]

        points assists blocks rebounds
player				
B 4 2 3 5
K 28 11 1 2

Jadi plot 2D adalah cara yang baik untuk memvisualisasikan seberapa mirip setiap pemain di semua variabel dalam DataFframe.

Pemain dengan statistik serupa dikelompokkan berdekatan sementara pemain dengan statistik sangat berbeda ditempatkan lebih jauh satu sama lain dalam plot.

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan tugas umum lainnya dengan Python:

Cara menormalkan data dengan Python
Cara Menghapus Pencilan dengan Python
Cara menguji normalitas dengan Python

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *