
Pengkhianatan Ilmu Data Memperluas API Scikit-Learn API dan Matplotlib untuk memberikan metode sederhana yang menyederhanakan tugas dan visualisasi untuk proyek sains data.
Mari kita jelajahi beberapa contoh kode dan output.
Anda dapat menemukan dokumentasi lengkap dengan semua contoh kode di: https://datascienceutils.readthedocs.io/en/latest/
Dalam dokumentasi, Anda dapat menemukan lebih banyak metode dan contoh tambahan.
API paket ini dibangun untuk bekerja dengan API Scikit-Learn dan Matplotlib. Berikut adalah beberapa kemampuan paket ini:
Menghitung dan merencanakan matriks kebingungan, tingkat positif palsu, tingkat negatif palsu, akurasi, dan skor F1 dari klasifikasi.
from ds_utils . metrics import plot_confusion_matrix
plot_confusion_matrix ( y_test , y_pred , [ 0 , 1 , 2 ])Menerima set kereta dan tes, dan plot perubahan metrik yang diberikan dengan meningkatnya jumlah instance yang terlatih.
from ds_utils . metrics import plot_metric_growth_per_labeled_instances
from sklearn . tree import DecisionTreeClassifier
from sklearn . ensemble import RandomForestClassifier
plot_metric_growth_per_labeled_instances (
x_train , y_train , x_test , y_test ,
{
"DecisionTreeClassifier" : DecisionTreeClassifier ( random_state = 0 ),
"RandomForestClassifier" : RandomForestClassifier ( random_state = 0 , n_estimators = 5 )
}
)Menerima Label True Tes dan prediksi probabilitas classifier, membagi dan mengklasifikasikan hasilnya, dan akhirnya merencanakan bagan batang yang ditumpuk dengan hasilnya. Kode asli
from ds_utils . metrics import visualize_accuracy_grouped_by_probability
visualize_accuracy_grouped_by_probability (
test [ "target" ],
1 ,
classifier . predict_proba ( test [ selected_features ]),
display_breakdown = False
)Tanpa Breakdown:
Dengan kerusakan:
Plot kurva ROC dengan anotasi ambang batas untuk beberapa pengklasifikasi, menggunakan plotly sebagai backend.
from ds_utils . metrics import plot_roc_curve_with_thresholds_annotations
classifiers_names_and_scores_dict = {
"Decision Tree" : tree_clf . predict_proba ( X_test )[:, 1 ],
"Random Forest" : rf_clf . predict_proba ( X_test )[:, 1 ],
"XGBoost" : xgb_clf . predict_proba ( X_test )[:, 1 ]
}
fig = plot_roc_curve_with_thresholds_annotations (
y_true ,
classifiers_names_and_scores_dict ,
positive_label = 1
)
fig . show ()Plot kurva precision-recall dengan anotasi ambang batas untuk beberapa pengklasifikasi, menggunakan plot dengan backend.
from ds_utils . metrics import plot_precision_recall_curve_with_thresholds_annotations
classifiers_names_and_scores_dict = {
"Decision Tree" : tree_clf . predict_proba ( X_test )[:, 1 ],
"Random Forest" : rf_clf . predict_proba ( X_test )[:, 1 ],
"XGBoost" : xgb_clf . predict_proba ( X_test )[:, 1 ]
}
fig = plot_precision_recall_curve_with_thresholds_annotations (
y_true ,
classifiers_names_and_scores_dict ,
positive_label = 1
)
fig . show ()Menerima fitur dan memvisualisasikan nilainya pada grafik:
from ds_utils . preprocess import visualize_feature
visualize_feature ( X_train [ "feature" ])| Jenis fitur | Merencanakan |
|---|---|
| Mengambang | |
| Bilangan bulat | |
| Datetime | |
| Kategori / objek | |
| Boolean |
Hitung fitur mana yang berkorelasi di atas ambang batas dan ekstrak bingkai data dengan korelasi dan korelasi dengan fitur target.
from ds_utils . preprocess import get_correlated_features
correlations = get_correlated_features ( train , features , target )| level_0 | level_1 | level_0_level_1_corr | level_0_target_corr | level_1_target_corr |
|---|---|---|---|---|
| pendapatan_category_low | pendapatan_category_medium | 1.0 | 0.1182165609358650 | 0.11821656093586504 |
| Istilah_ 36 bulan | istilah_ 60 bulan | 1.0 | 0.1182165609358650 | 0.11821656093586504 |
| bunga_payments_high | bunga_payments_low | 1.0 | 0.1182165609358650 | 0.11821656093586504 |
Hitung korelasi berpasangan kolom, tidak termasuk nilai Na/null, dan visualisasikan dengan peta panas. Kode asli
from ds_utils . preprocess import visualize_correlations
visualize_correlations ( data )Plot dendrogram dari matriks korelasi. Ini terdiri dari bagan yang menunjukkan secara hierarkis variabel yang paling berkorelasi dengan menghubungkan pohon. Semakin dekat ke kanan koneksi, semakin berkorelasi fitur -fiturnya. Kode asli
from ds_utils . preprocess import plot_correlation_dendrogram
plot_correlation_dendrogram ( data )Plot distribusi bersama antara dua fitur:
from ds_utils . preprocess import plot_features_interaction
plot_features_interaction ( "feature_1" , "feature_2" , data )| Numerik | Kategorikal | Boolean | Datetime | |
|---|---|---|---|---|
| Numerik | ||||
| Kategorikal | ||||
| Boolean | ||||
| Datetime |
Metode ini mengekstrak tag dari bidang yang diberikan dan menambahkannya sebagai kolom baru ke DataFrame.
Pertimbangkan dataset yang terlihat seperti ini:
x_train :
| artikel_name | artikel_tags |
|---|---|
| 1 | DS, ML, DL |
| 2 | DS, ML |
x_test :
| artikel_name | artikel_tags |
|---|---|
| 3 | DS, ML, PY |
Menggunakan kode ini:
import pandas as pd
from ds_utils . strings import append_tags_to_frame
x_train = pd . DataFrame ([{ "article_name" : "1" , "article_tags" : "ds,ml,dl" },
{ "article_name" : "2" , "article_tags" : "ds,ml" }])
x_test = pd . DataFrame ([{ "article_name" : "3" , "article_tags" : "ds,ml,py" }])
x_train_with_tags , x_test_with_tags = append_tags_to_frame ( x_train , x_test , "article_tags" , "tag_" )Hasilnya adalah:
x_train_with_tags :
| artikel_name | tag_ds | tag_ml | tag_dl |
|---|---|---|---|
| 1 | 1 | 1 | 1 |
| 2 | 1 | 1 | 0 |
x_test_with_tags :
| artikel_name | tag_ds | tag_ml | tag_dl |
|---|---|---|---|
| 3 | 1 | 1 | 0 |
Metode ini mengembalikan kejadian istilah yang menarik atau tidak biasa dalam subset. Ini didasarkan pada agregasi Elasticsearch Signifikan_Text.
import pandas as pd
from ds_utils . strings import extract_significant_terms_from_subset
corpus = [ 'This is the first document.' , 'This document is the second document.' ,
'And this is the third one.' , 'Is this the first document?' ]
data_frame = pd . DataFrame ( corpus , columns = [ "content" ])
# Let's differentiate between the last two documents from the full corpus
subset_data_frame = data_frame [ data_frame . index > 1 ]
terms = extract_significant_terms_from_subset ( data_frame , subset_data_frame ,
"content" ) Output untuk terms akan menjadi tabel berikut:
| ketiga | satu | Dan | ini | itu | adalah | Pertama | dokumen | Kedua |
|---|---|---|---|---|---|---|---|---|
| 1.0 | 1.0 | 1.0 | 0.67 | 0.67 | 0.67 | 0,5 | 0.25 | 0,0 |
Kardinalitas cluster adalah jumlah contoh per cluster. Metode ini merencanakan jumlah poin per cluster sebagai bagan batang.
import pandas as pd
from matplotlib import pyplot as plt
from sklearn . cluster import KMeans
from ds_utils . unsupervised import plot_cluster_cardinality
data = pd . read_csv ( path / to / dataset )
estimator = KMeans ( n_clusters = 8 , random_state = 42 )
estimator . fit ( data )
plot_cluster_cardinality ( estimator . labels_ )
plt . show ()Besarnya cluster adalah jumlah jarak dari semua contoh ke centroid dari cluster. Metode ini merencanakan jarak point-to-centroid total per cluster sebagai bagan batang.
import pandas as pd
from matplotlib import pyplot as plt
from sklearn . cluster import KMeans
from scipy . spatial . distance import euclidean
from ds_utils . unsupervised import plot_cluster_magnitude
data = pd . read_csv ( path / to / dataset )
estimator = KMeans ( n_clusters = 8 , random_state = 42 )
estimator . fit ( data )
plot_cluster_magnitude ( data , estimator . labels_ , estimator . cluster_centers_ , euclidean )
plt . show ()Kardinalitas cluster yang lebih tinggi cenderung menghasilkan besarnya cluster yang lebih tinggi, yang secara intuitif masuk akal. Cluster dianggap anomali ketika kardinalitas tidak berkorelasi dengan besarnya relatif terhadap kelompok lainnya. Metode ini membantu menemukan cluster anomali dengan merencanakan besarnya terhadap kardinalitas sebagai plot sebaran.
import pandas as pd
from matplotlib import pyplot as plt
from sklearn . cluster import KMeans
from scipy . spatial . distance import euclidean
from ds_utils . unsupervised import plot_magnitude_vs_cardinality
data = pd . read_csv ( path / to / dataset )
estimator = KMeans ( n_clusters = 8 , random_state = 42 )
estimator . fit ( data )
plot_magnitude_vs_cardinality ( data , estimator . labels_ , estimator . cluster_centers_ , euclidean )
plt . show () K-Means Clustering mengharuskan Anda untuk memutuskan jumlah kelompok k sebelumnya. Metode ini menjalankan algoritma Kmeans dan meningkatkan nomor cluster pada setiap iterasi. Besarnya total atau jumlah jarak digunakan sebagai metrik kerugian.
Catatan: Saat ini, metode ini hanya berfungsi dengan sklearn.cluster.KMeans .
import pandas as pd
from matplotlib import pyplot as plt
from scipy . spatial . distance import euclidean
from ds_utils . unsupervised import plot_loss_vs_cluster_number
data = pd . read_csv ( path / to / dataset )
plot_loss_vs_cluster_number ( data , 3 , 20 , euclidean )
plt . show ()Metode ini plot fitur penting sebagai bagan batang, membantu memvisualisasikan fitur mana yang memiliki dampak paling signifikan pada keputusan model.
import pandas as pd
from matplotlib import pyplot as plt
from sklearn . tree import DecisionTreeClassifier
from ds_utils . xai import plot_features_importance
# Load the dataset
data = pd . read_csv ( path / to / dataset )
target = data [ "target" ]
features = data . columns . tolist ()
features . remove ( "target" )
# Train a decision tree classifier
clf = DecisionTreeClassifier ( random_state = 42 )
clf . fit ( data [ features ], target )
# Plot feature importance
plot_features_importance ( features , clf . feature_importances_ )
plt . show ()Visualisasi ini membantu dalam memahami fitur mana yang paling berpengaruh dalam proses pengambilan keputusan model, memberikan wawasan yang berharga untuk pemilihan fitur dan interpretasi model.
Bersemangat tentang apa yang Anda lihat sejauh ini? Bahkan masih ada lagi yang bisa ditemukan! Menyelam lebih dalam ke setiap modul untuk membuka potensi penuh Dataencienceutils:
Metrik - Metode yang kuat untuk menghitung dan memvisualisasikan evaluasi kinerja algoritma. Dapatkan wawasan tentang kinerja model Anda.
Preprocess - Teknik Preprocessing Data Esensial untuk menyiapkan data Anda untuk pelatihan. Tingkatkan input model Anda untuk hasil yang lebih baik.
String - Metode yang efisien untuk memanipulasi dan memproses string di datarame. Menangani data teks dengan mudah.
Tanpa pengawasan - Alat untuk menghitung dan memvisualisasikan kinerja model yang tidak diawasi. Memahami hasil pengurangan clustering dan dimensi Anda dengan lebih baik.
XAI - Metode untuk membantu menjelaskan keputusan model, membuat AI Anda lebih dapat ditafsirkan dan dapat dipercaya.
Setiap modul dirancang untuk merampingkan alur kerja ilmu data Anda, memberi Anda alat yang Anda butuhkan untuk preprocess data, melatih model, mengevaluasi kinerja, dan menafsirkan hasil. Lihatlah dokumentasi terperinci untuk setiap modul untuk melihat bagaimana DataCienceutils dapat meningkatkan proyek Anda!
Kami senang bahwa Anda tertarik untuk berkontribusi pada util sains data! Kontribusi Anda membantu membuat proyek ini lebih baik untuk semua orang. Apakah Anda seorang pengembang berpengalaman atau baru memulai, ada tempat untuk Anda di sini.
Temukan area untuk berkontribusi : Lihat halaman masalah kami untuk tugas terbuka, atau pikirkan fitur yang ingin Anda tambahkan.
Fork The Repository : Buat salinan proyek Anda sendiri untuk dikerjakan.
Buat cabang : Buat perubahan Anda di cabang git baru.
Buat perubahan Anda : Tambahkan perbaikan atau perbaikan Anda. Kami menghargai:
Uji perubahan Anda : Pastikan kode Anda berfungsi seperti yang diharapkan dan tidak memperkenalkan masalah baru.
Kirimkan permintaan tarik : Buka PR dengan judul yang jelas dan deskripsi perubahan Anda.
Kami mengikuti kode perilaku pondasi perangkat lunak Python dan Panduan Penggunaan Matplotlib. Harap patuhi pedoman ini dalam kontribusi Anda.
Jika Anda baru mengenal open source atau membutuhkan bantuan, jangan ragu untuk mengajukan pertanyaan di bagian masalah atau menjangkau pemelihara. Kami di sini untuk membantu!
Ingat, tidak ada kontribusi yang terlalu kecil. Apakah itu memperbaiki kesalahan ketik dalam dokumentasi atau menambahkan fitur utama, semua kontribusi dihargai dan dihargai.
Terima kasih telah membantu membuat util sains data lebih baik untuk semua orang!
Berikut adalah beberapa cara untuk menginstal paket:
Cara paling sederhana untuk menginstal util sains data dan ketergantungannya adalah dari PYPI menggunakan PIP, penginstal paket pilihan Python:
pip install data-science-utilsUntuk meningkatkan util sains data ke versi terbaru, gunakan:
pip install -U data-science-utilsJika Anda lebih suka menginstal dari sumber, Anda dapat mengkloning repositori dan menginstal:
git clone https://github.com/idanmoradarthas/DataScienceUtils.git
cd DataScienceUtils
pip install .Atau, Anda dapat menginstal langsung dari GitHub menggunakan PIP:
pip install git+https://github.com/idanmoradarthas/DataScienceUtils.gitJika Anda menggunakan Anaconda, Anda dapat menginstal menggunakan Conda:
conda install idanmorad::data-science-utilsUTIL Sains Data memiliki beberapa dependensi, termasuk Numpy, Panda, Matplotlib, Plotly dan Scikit-Learn. Ini akan diinstal secara otomatis saat Anda menginstal paket menggunakan metode di atas.
Data Science Utils adalah proyek aktif yang secara rutin menerbitkan rilis baru dengan metode dan peningkatan tambahan. Kami merekomendasikan untuk memeriksa pembaruan secara berkala untuk mengakses fitur terbaru dan perbaikan bug.
Jika Anda mengalami masalah selama instalasi, silakan periksa halaman masalah GitHub kami atau buka masalah baru untuk bantuan.