Pengantar ilmu data dalam tugas python 1

Plot ini menggambarkan bagaimana pengelompokan dipengaruhi oleh penghapusan titik data acak. Hasilnya menunjukkan konsistensi yang kuat dalam pengelompokan, menggunakan k=4. Grup tetap konsisten selama iterasi dan menjaga struktur menyeluruh, di mana Anda dapat dengan jelas melihat bahwa titik-titik yang bersama dalam iterasi sebelumnya tetap dikelompokkan bersama

# Memilih k sebagai 4 X = df [ . ['phi', 'psi']] scaler = StandardScaler() X = scaler. fit_transform ( X ) random_init . = [0, 1, 2, 3, 4, 5] plots = len(random_init) fig, axs = plt. subplot (1, plot . , figsize=(20,4)) for i in range(0, plots): kmeans = KMeans ( n_clusters . = k, random_state = i) y_pred = kmeans. fit_predict ( X ) kapak . [i]. menyebar ( X [. ,0], X . [:,1], c . = y_pred, cmap= 'gist_rainbow', edgecolor='black', s = 20) axs[i]. menyebar ( kberarti . cluster_centers_ [. , 0], kmeans . . cluster_centers_ [. , 1], penanda . = 'x',c = 'black') axs[i]. set_title (f'Status acak {i}') plt. tight_layout () plt . tampilkan ()

Plot menampilkan konsistensi yang luar biasa dalam pengelompokan, saat menggunakan 4 grup, terlepas dari posisi awal centroid dalam algoritme K-means. Ini berbicara sangat tinggi tentang konsistensi k = 4 dan validitas cluster

X = df [['phi', 'psi']] k_values = range(2, 8) k_opt = 0 high_score = 0 for k in k_values: kmeans = KMeans ( n_clusters . = k, random_state = 0). cocok ( X ) label . = kmeans. skor label_ = metrik . siluet_score ( X , label . , metric = 'euclidean') print(f"Silhoutte score for k = {k} is: { skor }") . if (score > high_score): k_opt = k skor_tinggi = . print(f"The optimal silhoutte score is for k = {k_opt} and is: { skor_tinggi }")

Silhoutte score for k = 2 is: 0.6328209708884562 Silhoutte score for k = 3 is: 0.6724895253169637 Silhoutte score for k = 4 is: 0.6674392423283723 Silhoutte score for k = 5 is: 0.5095212375670435 Silhoutte score for k = 6 is: 0.4698172916742672 Silhoutte score for k = 7 is: 0.48149562265196355 The optimal silhoutte score is for k = 3 and is: 0.6724895253169637

Skor siluet berkisar dari -1 hingga 1. Nilai yang mendekati 1 menunjukkan metode pengelompokan yang baik. Mencari berbagai saran untuk k (mulai dari 2 hingga 8) kami menemukan bahwa k=3 dan k=4 memberikan skor sihoutte terbaik, karena sangat mirip sehingga sulit untuk membuat penilaian. Menggunakan temuan dari 'metode siku' dan inspeksi visual plot, kami memilih k=4 sebagai yang paling cocok

df_mod = df . salin () df_mod [ . 'phi']=(df['phi']+360)%360 df_mod['psi']=(df['psi']+360)%360 # Extracting the variables X_phi_mod = df_mod['phi'] X_psi_mod = df_mod['psi'] # Making a scatterplot plt. angka ( figsize =( . 14,9)) plt. pencar ( X_phi_mod , X_psi_mod . , s = 10, c = 'darkcyan', label = 'Distribution of phi and psi') plt. kisi (Benar) plt . . title ('Distribusi kombinasi Phi dan Psi untuk molekul protein (digeser 360 derajat)') plt. xlabel ('Phi, dalam derajat') plt. ylabel ('Psi, dalam derajat') plt. legenda ( loc =' . ) plt. tampilkan ()

X = df_mod [['phi', 'psi']] X = StandardScaler(). fit_transform ( X ) k_values . = range(2, 8) for value in k_values: kmeans_clustering ( X , nilai )

Tampaknya kecocokan yang paling intuitif sekarang adalah 3 cluster. Mari kita lihat bagaimana tampilan skor siluetnya. Mari kita bandingkan k=3 dan k=4 (mana yang paling efektif sebelum menggeser kumpulan data)

X = df_mod [['phi', 'psi']] k_values = [3, 4] k_opt=0 high_score = 0 for k in k_values: kmeans = KMeans ( n_clusters . =k, random_state=0). cocok ( X ) label . = kmeans. skor label_ = metrik . siluet_score ( X , label . , metric='euclidean') print(f"Silhoutte score for k = {k} is: { skor }") . if (score > high_score): k_opt = k high_score = . print(f"The optimal silhoutte score is for k = {k_opt} and is: { skor_tinggi }")

Silhoutte score for k = 3 is: 0.6797531685533981 Silhoutte score for k = 4 is: 0.6045983974626823 The optimal silhoutte score is for k = 3 and is: 0.6797531685533981_

Skor siluet jelas tidak optimal untuk k=3 sebagai gantinya. Yang konsisten dengan tampilan grafis di atas

dari sklearn . cluster impor DBSCAN dari sklearn . import metrics from sklearn. pemrosesan awal impor StandardScaler dari sklearn . . tetangga impor NearestNeighbours impor koleksi

X = df [['phi', 'psi']] scaler = StandardScaler() X = scaler. fit_transform ( X )

# Fungsi untuk membuat dan memplot DBSCAN untuk nilai eps dan min_samples yang berbeda def createDBSCAN( . 5X, eps = 0.5, min_samples = 100 . add_bar_plot = False): # Menyesuaikan dan memprediksi nilai yang diberikan disediakan untuk eps dan min_samples dbscan = DBSCAN . (eps = eps, min_samples = min_samples) y = dbscan. fit_predict ( X ) label . = dbscan. labels_ # Jumlah cluster dalam label, abaikan noise jika ada. n_clusters_ = len(set . (labels)) - (1 if -1 in labels else 0) n_noise_ = list(labels). hitung (-1) . %d' print('Estimated number of clusters: %d' % n_clusters_ ) cetak('Estimated number of noise points: %d' % n_noise_ ) outliers_df = df[labels == -1] clusters_df = df[labels != -1] color_clusters . = labels[labels != -1] color_outliers . 'black' plt. angka ( figsize =( . 7,4)) plt. menyebar ( clusters_df [' . ], clusters_df['psi'], c = color_clusters, edgecolors = 'black', cmap='gist_rainbow', s = 30) plt. menyebar ( outliers_df [' . ], outliers_df['psi'],c = color_outliers, edgecolors = 'black', label = 'Outliers', s = 30) plt. judul (f"Poin data dengan DBSCAN, sampel minimum. { min_samples }, eps. { eps }") . plt. xlabel ('Phi, dalam derajat') plt. label ('Psi, dalam derajat') plt. legenda ( loc =' . ) plt. tampilkan () jika add_bar_plot . == True: bar = outliers_df [' . ]. jumlah_nilai ( urutkan =Benar . ). plot . bar () bar . set_title ('Jenis residu asam amino yang paling sering outlier') . 5 dan nilai yang berbeda untuk min_samples # Tryng the function with eps = 0.5 and different values for min_samples createDBSCAN ( X , min_samples = 10) createDBSCAN(X, min_samples = 100) createDBSCAN(X, min_samples = 500)

Estimated number of clusters: 1 Estimated number of noise points: 0

Estimated number of clusters: 5 Estimated number of noise points: 172

Estimated number of clusters: 2 Estimated number of noise points: 1590_

# Sampel minimum untuk diuji min_samples = [200, 250, 300]

color_list = ['orchid', 'darkcyan', 'darkviolet'] i = 0 for value in min_samples: tetangga = Tetangga Terdekat ( n_tetangga . = value) # Fitting NearestNeighbors to the data nbrs = neigh. cocok ( X ) # . distances, indices = nbrs. kneighbors ( X ) jarak . = np. urutkan ( jarak , sumbu . =0) distances = distances[:,1] plt . plot ( jarak , c . = color_list[i], linewidth = 3) plt. xlabel ('Jumlah poin') plt. ylabel ('Jarak Rata-Rata') plt. title (f'Menemukan ep optimal, # tetangga terdekat. { nilai }') . plt. kisi (Benar) plt . . tampilkan () i = i + 1

eps = [0. 3, 0. 4, 0. 5] untuk i di . : cetak(f'DBSCAN dengan eps = {i} and various values for min_samples') for j in min_samples: createDBSCAN ( X , eps = i, min_samples = j)

DBSCAN with eps = 0.3 and various values for min_samples Estimated number of clusters: 4 Estimated number of noise points: 1252

Estimated number of clusters: 2 Estimated number of noise points: 1977_

Estimated number of clusters: 2 Estimated number of noise points: 2083

DBSCAN with eps = 0.4 and various values for min_samples Estimated number of clusters: 3 Estimated number of noise points: 826_

Estimated number of clusters: 3 Estimated number of noise points: 897_

Silhoutte score for k = 3 is: 0.6797531685533981 Silhoutte score for k = 4 is: 0.6045983974626823 The optimal silhoutte score is for k = 3 and is: 0.6797531685533981_0

Silhoutte score for k = 3 is: 0.6797531685533981 Silhoutte score for k = 4 is: 0.6045983974626823 The optimal silhoutte score is for k = 3 and is: 0.6797531685533981_1

Silhoutte score for k = 3 is: 0.6797531685533981 Silhoutte score for k = 4 is: 0.6045983974626823 The optimal silhoutte score is for k = 3 and is: 0.6797531685533981_2

Silhoutte score for k = 3 is: 0.6797531685533981 Silhoutte score for k = 4 is: 0.6045983974626823 The optimal silhoutte score is for k = 3 and is: 0.6797531685533981_3

# Merencanakan klaster yang ditemukan dengan DBSCAN dengan epsilon = 0. 4 dan min_samples = 150 createDBSCAN ( X , 0.4, 200, Benar)

Silhoutte score for k = 3 is: 0.6797531685533981 Silhoutte score for k = 4 is: 0.6045983974626823 The optimal silhoutte score is for k = 3 and is: 0.6797531685533981_4

print('Untuk data yang tidak diterjemahkan, k = 4 optimal') kmeans_clustering(X, 4) createDBSCAN(X, 0.4, 200)

Silhoutte score for k = 3 is: 0.6797531685533981 Silhoutte score for k = 4 is: 0.6045983974626823 The optimal silhoutte score is for k = 3 and is: 0.6797531685533981_5

Silhoutte score for k = 3 is: 0.6797531685533981 Silhoutte score for k = 4 is: 0.6045983974626823 The optimal silhoutte score is for k = 3 and is: 0.6797531685533981_4

pro_df = df [(df['residue name'] == 'PRO')]. salin () X = . pro_df[['phi', 'psi']] X = StandardScaler(). fit_transform ( X ) min_samples . 5 = 200 eps = 0.5 # Menyesuaikan dan memprediksi nilai yang diberikan disediakan untuk eps dan min_samples dbscan = . (eps = eps, min_samples = min_samples) y = dbscan. fit_predict ( X ) label . = dbscan. labels_ # Jumlah cluster dalam label, abaikan noise jika ada. n_clusters_ = len(set . (labels)) - (1 if -1 in labels else 0) n_noise_ = list(labels). hitung (-1) . %d' print('Estimated number of clusters: %d' % n_clusters_ ) cetak('Estimated number of noise points: %d' % n_noise_ ) outliers_df = pro_df[labels == -1] clusters_df = pro_df[labels != -1] color_clusters . = labels[labels != -1] color_outliers . 'black' plt. angka ( figsize =( . 7,4)) plt. menyebar ( clusters_df [' . ], clusters_df['psi'], c = color_clusters, edgecolors = 'black', cmap='gist_rainbow', s = 30) plt. menyebar ( outliers_df [' . ], outliers_df['psi'],c = color_outliers, edgecolors = 'black', label = 'Outliers', s = 30) plt. title (f"Titik data dengan DBSCAN untuk PRO, sampel minimum. { min_samples }, eps. { eps }") . plt. xlabel ('Phi, dalam derajat') plt. ylabel ('Psi, dalam derajat') plt. legenda ( loc =' . ) plt. tampilkan ()

Silhoutte score for k = 3 is: 0.6797531685533981 Silhoutte score for k = 4 is: 0.6045983974626823 The optimal silhoutte score is for k = 3 and is: 0.6797531685533981_7

Parameter awal tampaknya menghasilkan hasil yang konsisten, bahkan sedikit memvariasikannya tidak memengaruhi solusi

Pengelompokan yang hanya menggunakan tipe residu PRO berbeda dari pengelompokan DBSCAN umum karena tidak memiliki kluster dengan nilai Phi positif. Selain itu, ini menghasilkan dua klaster yang terdefinisi dengan baik, dan tidak menemukan nilai apa pun di pojok kiri atas, yang sangat lazim di klaster DBSCAN sebelumnya. Ini menarik, karena DBSCAN sepertinya tidak pernah mengelompokkan titik-titik yang tepat ini, namun, untuk k besar, algoritme k berarti tampaknya menemukan kluster ini (ditemukan dalam tipe residu PRO) lebih akurat

pro_df = df [(df['residue name'] == 'GLY')]. salin () X = . pro_df[['phi', 'psi']] X = StandardScaler(). fit_transform ( X ) min_samples . 5 = 200 eps = 0.5 # Menyesuaikan dan memprediksi nilai yang diberikan disediakan untuk eps dan min_samples dbscan = . (eps = eps, min_samples = min_samples) y = dbscan. fit_predict ( X ) label . = dbscan. labels_ # Jumlah cluster dalam label, abaikan noise jika ada. n_clusters_ = len(set . (labels)) - (1 if -1 in labels else 0) n_noise_ = list(labels). hitung (-1) . %d' print('Estimated number of clusters: %d' % n_clusters_ ) cetak('Estimated number of noise points: %d' % n_noise_ ) outliers_df = pro_df[labels == -1] clusters_df = pro_df[labels != -1] color_clusters . = labels[labels != -1] color_outliers . 'black' plt. angka ( figsize =( . 7,4)) plt. menyebar ( clusters_df [' . ], clusters_df['psi'], c = color_clusters, edgecolors = 'black', cmap='gist_rainbow', s = 30) plt. menyebar ( outliers_df [' . ], outliers_df['psi'],c = color_outliers, edgecolors = 'black', label = 'Outliers', s = 30) plt. title (f"Titik data dengan DBSCAN untuk GLY, sampel minimum. { min_samples }, eps. { eps }") . plt. xlabel ('Phi, dalam derajat') plt. ylabel ('Psi, dalam derajat') plt. legenda ( loc =' . ) plt. tampilkan ()

Silhoutte score for k = 3 is: 0.6797531685533981 Silhoutte score for k = 4 is: 0.6045983974626823 The optimal silhoutte score is for k = 3 and is: 0.6797531685533981_8

Parameter awal tampaknya menghasilkan hasil yang konsisten, bahkan sedikit memvariasikannya tidak memengaruhi solusi

Jenis residu GLY tampaknya lebih mewakili kelompok yang ditemukan dalam kasus umum. Kami melihat satu cluster dengan phi>0, kami menemukan cluster di kiri atas dan kiri tengah. Namun, beberapa titik data berada di cluster yang tersisa yang ditemukan dalam kasus umum, namun ini dianggap outlier dengan metode DBSCAN

Penting untuk mempertimbangkan bahwa dalam tugas sebelumnya kami menemukan bahwa residu GLY memiliki jumlah outlier tertinggi, dengan berbagai faktor. Ini dapat ditampilkan dalam pengelompokan residu GLY saja, karena kita dapat melihat tidak ada kelompok yang jelas, tampaknya ada titik data di setiap kuadran grafik, dan beberapa hampir tersebar secara acak

Apa dasar-dasar Python untuk ilmu data?

Python adalah bahasa pemrograman yang banyak digunakan oleh Ilmuwan Data . Python memiliki pustaka dan fungsi matematika bawaan, membuatnya lebih mudah untuk menghitung masalah matematika dan melakukan analisis data. Kami akan memberikan contoh praktis menggunakan Python.

Apa ilmu data dengan silabus Python?

Spesialisasi berbasis keterampilan ini ditujukan untuk pelajar yang memiliki latar belakang python atau pemrograman dasar, dan ingin menerapkan statistik, pembelajaran mesin, visualisasi informasi, analisis teks, dan teknik analisis jaringan sosial melalui toolkit python populer seperti panda, matplotlib, scikit-

Apa pengantar ilmu data?

Kelas Pengantar Ilmu Data akan mensurvei topik dasar dalam ilmu data, yaitu. Manipulasi Data . Analisis Data dengan Statistik dan Pembelajaran Mesin . Komunikasi Data dengan Visualisasi Informasi . Data dalam Skala Besar -- Bekerja dengan Big Data .

Bagaimana saya memulai dengan ilmu data Python?

Cara Mempelajari Python untuk Ilmu Data .
Langkah 1. Pelajari dasar-dasar Python. Semua orang mulai di suatu tempat. .
Langkah 2. Berlatih dengan pembelajaran langsung. .
Langkah 3. Pelajari perpustakaan ilmu data Python. .
Langkah 4. Bangun portofolio ilmu data saat Anda mempelajari Python. .
Langkah 5. Terapkan teknik ilmu data tingkat lanjut