
Data Science Utils ขยาย Scikit-Learn API และ Matplotlib API เพื่อให้วิธีการง่าย ๆ ที่ทำให้งานและการสร้างภาพข้อมูลง่ายขึ้นสำหรับโครงการวิทยาศาสตร์ข้อมูล
ลองสำรวจตัวอย่างรหัสและเอาต์พุต
คุณสามารถค้นหาเอกสารฉบับเต็มได้ด้วยตัวอย่างรหัสทั้งหมดได้ที่: https://datascienceutils.readthedocs.io/en/latest/
ในเอกสารคุณสามารถค้นหาวิธีการเพิ่มเติมและตัวอย่างเพิ่มเติม
API ของแพ็คเกจถูกสร้างขึ้นเพื่อทำงานกับ Scikit-Learn API และ Matplotlib API นี่คือความสามารถบางอย่างของแพ็คเกจนี้:
คำนวณและแปลงเมทริกซ์ความสับสนอัตราบวกเท็จอัตราลบเท็จความแม่นยำและคะแนน F1 ของการจำแนกประเภท
from ds_utils . metrics import plot_confusion_matrix
plot_confusion_matrix ( y_test , y_pred , [ 0 , 1 , 2 ])รับชุดรถไฟและทดสอบและแปลงการเปลี่ยนแปลงตัวชี้วัดที่กำหนดด้วยจำนวนอินสแตนซ์ที่ผ่านการฝึกอบรมเพิ่มขึ้น
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 )
}
)ได้รับการทดสอบฉลากที่แท้จริงและการทำนายความน่าจะเป็นของตัวจําแนกแบ่งและจำแนกผลลัพธ์และในที่สุดก็วางแผนแผนภูมิแท่งแบบซ้อนกับผลลัพธ์ รหัสต้นฉบับ
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
)โดยไม่มีการสลาย:
ด้วยการแยกย่อย:
พล็อต ROC เส้นโค้งที่มีคำอธิบายประกอบเกณฑ์สำหรับตัวแยกประเภทหลายตัวโดยใช้พล็อตเป็นแบ็กเอนด์
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 ()พล็อตเส้นโค้งการตั้งค่าความแม่นยำด้วยคำอธิบายประกอบเกณฑ์สำหรับตัวแยกประเภทหลายตัวโดยใช้พล็อตเป็นแบ็กเอนด์
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 ()ได้รับคุณสมบัติและแสดงค่าของมันบนกราฟ:
from ds_utils . preprocess import visualize_feature
visualize_feature ( X_train [ "feature" ])| ประเภทคุณสมบัติ | พล็อต |
|---|---|
| ลอย | |
| จำนวนเต็ม | |
| วันที่ | |
| หมวดหมู่ / วัตถุ | |
| บูลีน |
คำนวณคุณสมบัติที่มีความสัมพันธ์เหนือเกณฑ์และแยกเฟรมข้อมูลด้วยความสัมพันธ์และความสัมพันธ์กับคุณสมบัติเป้าหมาย
from ds_utils . preprocess import get_correlated_features
correlations = get_correlated_features ( train , features , target )| ระดับ _0 | ระดับ _1 | Level_0_level_1_corr | Level_0_target_corr | level_1_target_corr |
|---|---|---|---|---|
| รายได้ _category_low | รายได้ _category_medium | 1.0 | 0.1182165609358650 | 0.11821656093586504 |
| TERM_ 36 เดือน | TERM_ 60 เดือน | 1.0 | 0.1182165609358650 | 0.11821656093586504 |
| present_payments_high | present_payments_low | 1.0 | 0.1182165609358650 | 0.11821656093586504 |
คำนวณความสัมพันธ์แบบคู่ของคอลัมน์ไม่รวมค่า NA/NULL และแสดงภาพด้วยแผนที่ความร้อน รหัสต้นฉบับ
from ds_utils . preprocess import visualize_correlations
visualize_correlations ( data )พล็อต dendrogram ของเมทริกซ์สหสัมพันธ์ สิ่งนี้ประกอบด้วยแผนภูมิที่แสดงตัวแปรที่มีความสัมพันธ์กันมากที่สุดโดยการเชื่อมต่อต้นไม้ ยิ่งอยู่ใกล้ทางด้านขวาที่การเชื่อมต่อนั้นยิ่งมีความสัมพันธ์กันมากขึ้นเท่านั้น รหัสต้นฉบับ
from ds_utils . preprocess import plot_correlation_dendrogram
plot_correlation_dendrogram ( data )แปลงการกระจายร่วมระหว่างสองคุณสมบัติ:
from ds_utils . preprocess import plot_features_interaction
plot_features_interaction ( "feature_1" , "feature_2" , data )| เป็นตัวเลข | เป็นหมวดหมู่ | บูลีน | วันที่ | |
|---|---|---|---|---|
| เป็นตัวเลข | ||||
| เป็นหมวดหมู่ | ||||
| บูลีน | ||||
| วันที่ |
วิธีนี้แยกแท็กจากฟิลด์ที่กำหนดและผนวกเป็นคอลัมน์ใหม่ไปยัง DataFrame
พิจารณาชุดข้อมูลที่มีลักษณะเช่นนี้:
x_train :
| บทความ _name | บทความ _tags |
|---|---|
| 1 | DS, ML, DL |
| 2 | DS, ML |
x_test :
| บทความ _name | บทความ _tags |
|---|---|
| 3 | DS, ML, PY |
การใช้รหัสนี้:
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_" )ผลลัพธ์จะเป็น:
x_train_with_tags :
| บทความ _name | tag_ds | tag_ml | tag_dl |
|---|---|---|---|
| 1 | 1 | 1 | 1 |
| 2 | 1 | 1 | 0 |
x_test_with_tags :
| บทความ _name | tag_ds | tag_ml | tag_dl |
|---|---|---|---|
| 3 | 1 | 1 | 0 |
วิธีนี้ส่งคืนคำศัพท์ที่น่าสนใจหรือผิดปกติในชุดย่อย มันขึ้นอยู่กับการรวม ELASTICSEARCEARTIAR_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" ) ผลลัพธ์สำหรับ terms จะเป็นตารางต่อไปนี้:
| ที่สาม | หนึ่ง | และ | นี้ | ที่ | เป็น | อันดับแรก | เอกสาร | ที่สอง |
|---|---|---|---|---|---|---|---|---|
| 1.0 | 1.0 | 1.0 | 0.67 | 0.67 | 0.67 | 0.5 | 0.25 | 0.0 |
คลัสเตอร์ cardinality คือจำนวนตัวอย่างต่อคลัสเตอร์ วิธีนี้จะวางแผนจำนวนคะแนนต่อคลัสเตอร์เป็นแผนภูมิแท่ง
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 ()ขนาดของคลัสเตอร์คือผลรวมของระยะทางจากตัวอย่างทั้งหมดไปยังเซนทรอยด์ของคลัสเตอร์ วิธีนี้จะวางแผนระยะทางจุดต่อเซ็นทรอยด์ทั้งหมดต่อคลัสเตอร์เป็นแผนภูมิแท่ง
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 ()คลัสเตอร์ที่สูงขึ้นมีแนวโน้มที่จะส่งผลให้มีขนาดคลัสเตอร์ที่สูงขึ้นซึ่งทำให้รู้สึกอย่างสังหรณ์ใจ กลุ่มถือว่าผิดปกติเมื่อ cardinality ไม่สัมพันธ์กับขนาดที่สัมพันธ์กับกลุ่มอื่น ๆ วิธีนี้จะช่วยค้นหากลุ่มที่ผิดปกติโดยการวางแผนขนาดกับ cardinality เป็นพล็อตกระจาย
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-mean ต้องการให้คุณตัดสินใจจำนวนกลุ่ม k ล่วงหน้า วิธีนี้ใช้อัลกอริทึม KMEANS และเพิ่มจำนวนคลัสเตอร์ในการวนซ้ำแต่ละครั้ง ขนาดทั้งหมดหรือผลรวมของระยะทางถูกใช้เป็นตัวชี้วัดการสูญเสีย
หมายเหตุ: ปัจจุบันวิธีนี้ใช้ได้กับ 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 ()วิธีการนี้มีความสำคัญเป็นแผนภูมิแท่งช่วยให้เห็นภาพว่าคุณสมบัติใดที่มีผลกระทบที่สำคัญที่สุดต่อการตัดสินใจของโมเดล
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 ()การสร้างภาพข้อมูลนี้ช่วยในการทำความเข้าใจว่าคุณสมบัติใดที่มีอิทธิพลมากที่สุดในกระบวนการตัดสินใจของโมเดลซึ่งให้ข้อมูลเชิงลึกที่มีคุณค่าสำหรับการเลือกคุณสมบัติและการตีความแบบจำลอง
ตื่นเต้นกับสิ่งที่คุณเคยเห็นมาก่อน? มีอีกมากที่จะค้นพบ! ดำน้ำลึกลงไปในแต่ละโมดูลเพื่อปลดล็อกศักยภาพทั้งหมดของ DataScienceUtils:
ตัวชี้วัด - วิธีการที่ทรงพลังสำหรับการคำนวณและการประเมินภาพอัลกอริทึมการประเมินประสิทธิภาพ รับข้อมูลเชิงลึกเกี่ยวกับวิธีการทำงานของโมเดลของคุณ
Preprocess - เทคนิคการประมวลผลข้อมูลที่จำเป็นเพื่อเตรียมข้อมูลของคุณสำหรับการฝึกอบรม ปรับปรุงอินพุตของโมเดลของคุณเพื่อผลลัพธ์ที่ดีกว่า
สตริง - วิธีการที่มีประสิทธิภาพสำหรับการจัดการและประมวลผลสตริงใน dataframes จัดการข้อมูลข้อความได้อย่างง่ายดาย
ไม่ได้รับการดูแล - เครื่องมือสำหรับการคำนวณและแสดงภาพประสิทธิภาพของโมเดลที่ไม่ได้รับการดูแล ทำความเข้าใจผลการจัดกลุ่มและการลดขนาดของคุณได้ดีขึ้น
XAI - วิธีการที่จะช่วยอธิบายการตัดสินใจแบบจำลองทำให้ AI ของคุณตีความได้และน่าเชื่อถือมากขึ้น
แต่ละโมดูลได้รับการออกแบบมาเพื่อปรับปรุงเวิร์กโฟลว์วิทยาศาสตร์ข้อมูลของคุณให้คุณมีเครื่องมือที่คุณต้องการในการประมวลผลข้อมูลล่วงหน้าโมเดลรถไฟประเมินประสิทธิภาพและตีความผลลัพธ์ ตรวจสอบเอกสารโดยละเอียดสำหรับแต่ละโมดูลเพื่อดูว่า DataScienceUtils สามารถปรับปรุงโครงการของคุณได้อย่างไร!
เราตื่นเต้นที่คุณสนใจที่จะมีส่วนร่วมในการใช้ข้อมูลวิทยาศาสตร์ข้อมูล! การมีส่วนร่วมของคุณช่วยให้โครงการนี้ดีขึ้นสำหรับทุกคน ไม่ว่าคุณจะเป็นนักพัฒนาที่มีประสบการณ์หรือเพิ่งเริ่มต้นมีสถานที่สำหรับคุณที่นี่
ค้นหาพื้นที่ที่มีส่วนร่วมในการ : ตรวจสอบหน้าปัญหาของเราสำหรับงานเปิดหรือคิดถึงคุณสมบัติที่คุณต้องการเพิ่ม
แยกที่เก็บ : ทำสำเนาของโครงการของคุณเองเพื่อทำงาน
สร้างสาขา : ทำการเปลี่ยนแปลงของคุณในสาขา GIT ใหม่
ทำการเปลี่ยนแปลงของคุณ : เพิ่มการปรับปรุงหรือแก้ไข เราขอขอบคุณ:
ทดสอบการเปลี่ยนแปลงของคุณ : ตรวจสอบให้แน่ใจว่ารหัสของคุณทำงานตามที่คาดไว้และไม่แนะนำปัญหาใหม่
ส่งคำขอดึง : เปิดประชาสัมพันธ์ด้วยชื่อที่ชัดเจนและคำอธิบายการเปลี่ยนแปลงของคุณ
เราทำตามจรรยาบรรณของ Python Software และคู่มือการใช้งาน Matplotlib โปรดปฏิบัติตามแนวทางเหล่านี้ในการบริจาคของคุณ
หากคุณยังใหม่กับโอเพ่นซอร์สหรือต้องการความช่วยเหลือใด ๆ อย่าลังเลที่จะถามคำถามในส่วนปัญหาหรือติดต่อกับผู้ดูแล เรามาที่นี่เพื่อช่วย!
โปรดจำไว้ว่าไม่มีการบริจาคเล็กเกินไป ไม่ว่าจะเป็นการแก้ไขการพิมพ์ผิดในเอกสารหรือเพิ่มคุณสมบัติที่สำคัญการมีส่วนร่วมทั้งหมดมีค่าและชื่นชม
ขอบคุณที่ช่วยให้ข้อมูลวิทยาศาสตร์มีประโยชน์ดีขึ้นสำหรับทุกคน!
นี่คือหลายวิธีในการติดตั้งแพ็คเกจ:
วิธีที่ง่ายที่สุดในการติดตั้งข้อมูลวิทยาศาสตร์ข้อมูลและการพึ่งพานั้นมาจาก PYPI โดยใช้ PIP, ตัวติดตั้งแพ็คเกจที่ต้องการของ Python:
pip install data-science-utilsในการอัพเกรดวิทยาศาสตร์ข้อมูลใช้เป็นเวอร์ชันล่าสุดให้ใช้:
pip install -U data-science-utilsหากคุณต้องการติดตั้งจากแหล่งที่มาคุณสามารถโคลนที่เก็บและติดตั้ง:
git clone https://github.com/idanmoradarthas/DataScienceUtils.git
cd DataScienceUtils
pip install .หรือคุณสามารถติดตั้งโดยตรงจาก GitHub โดยใช้ PIP:
pip install git+https://github.com/idanmoradarthas/DataScienceUtils.gitหากคุณใช้ Anaconda คุณสามารถติดตั้งได้โดยใช้ Conda:
conda install idanmorad::data-science-utilsData Science Utils มีการพึ่งพาหลายประการรวมถึง numpy, pandas, matplotlib, plotly และ scikit-learn สิ่งเหล่านี้จะถูกติดตั้งโดยอัตโนมัติเมื่อคุณติดตั้งแพ็คเกจโดยใช้วิธีการด้านบน
Data Science Utils เป็นโครงการที่ใช้งานอยู่ซึ่งเผยแพร่การเผยแพร่ใหม่เป็นประจำด้วยวิธีการและการปรับปรุงเพิ่มเติม เราขอแนะนำให้ตรวจสอบการอัปเดตเป็นระยะเพื่อเข้าถึงคุณสมบัติล่าสุดและการแก้ไขข้อบกพร่อง
หากคุณพบปัญหาใด ๆ ในระหว่างการติดตั้งโปรดตรวจสอบหน้าปัญหา GitHub ของเราหรือเปิดปัญหาใหม่เพื่อขอความช่วยเหลือ