
Data Science Utils расширяет API Scikit-Learn API и Matplotlib API для предоставления простых методов, которые упрощают задачи и визуализации для проектов по науке о данных.
Давайте рассмотрим некоторые примеры кода и выходы.
Вы можете найти полную документацию со всеми примерами кода по адресу: https://datascienceutils.readthedocs.io/en/latest/
В документации вы можете найти больше методов и дополнительных примеров.
API пакета построен для работы с API Scikit-Learn и 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" ])| Тип функции | Сюжет |
|---|---|
| Плавать | |
| Целое число | |
| DateTime | |
| Категория / объект | |
| Логический |
Рассчитайте, какие функции коррелируют выше порога и извлеките рамку данных с корреляциями и корреляцией с целевой функцией.
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 |
|---|---|---|---|---|
| rescome_category_low | rescome_category_medium | 1.0 | 0,1182165609358650 | 0,11821656093586504 |
| Термин_ 36 месяцев | Термин. 60 месяцев | 1.0 | 0,1182165609358650 | 0,11821656093586504 |
| enest_payments_high | enese_payments_low | 1.0 | 0,1182165609358650 | 0,11821656093586504 |
Вычислите парную корреляцию столбцов, за исключением значений Na/NULL и визуализируйте его с помощью тепловой карты. Исходный код
from ds_utils . preprocess import visualize_correlations
visualize_correlations ( data )Построить дендрограмму матрицы корреляции. Это состоит из диаграммы, которая показывает иерархически переменные, которые наиболее коррелируются путем соединения деревьев. Чем ближе к праву, чем соединение, тем более коррелированными являются функции. Исходный код
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 )| Числовое | Категорический | Логический | DateTime | |
|---|---|---|---|---|
| Числовое | ||||
| Категорический | ||||
| Логический | ||||
| DateTime |
Этот метод извлекает теги из данного поля и добавляет их в виде новых столбцов в DataFrame.
Рассмотрим набор данных, который выглядит так:
x_train :
| article_name | article_tags |
|---|---|
| 1 | DS, ML, DL |
| 2 | DS, Ml |
x_test :
| article_name | article_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 :
| article_name | tag_ds | tag_ml | tag_dl |
|---|---|---|---|
| 1 | 1 | 1 | 1 |
| 2 | 1 | 1 | 0 |
x_test_with_tags :
| article_name | tag_ds | tag_ml | tag_dl |
|---|---|---|---|
| 3 | 1 | 1 | 0 |
Этот метод возвращает интересные или необычные случаи терминов в подмножестве. Он основан на агрегации Elasticsearch
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 |
Cluster 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 ()Более высокая кардинальность кластера имеет тенденцию привести к более высокой величине кластера, что интуитивно имеет смысл. Кластеры считаются аномальными, когда кардинальность не коррелирует с величиной относительно других кластеров. Этот метод помогает найти аномальные кластеры, построив величину против кардинальности как график рассеяния.
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 требует, чтобы вы заранее определили количество кластеров 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:
Метрики - Мощные методы расчета и визуализации оценки эффективности алгоритма. Получите представление о том, как работают ваши модели.
Предварительная обработка - необходимые методы предварительной обработки данных для подготовки ваших данных для обучения. Улучшите ввод вашей модели для лучших результатов.
Строки - Эффективные методы манипулирования и обработки строк в данных данных. С легкостью обрабатывать текстовые данные.
Неконтролируемые - инструменты для расчета и визуализации производительности неконтролируемых моделей. Поймите свою кластеризацию и сокращение размерности, результаты лучше.
XAI - Методы, помогающие объяснить модельные решения, делая ваш ИИ более интерпретируемым и заслуживающим доверия.
Каждый модуль предназначен для оптимизации вашего рабочего процесса по науке о данных, предоставляя вам инструменты, необходимые для предварительной обработки данных, обучения моделей, оценки производительности и интерпретации результатов. Ознакомьтесь с подробной документацией для каждого модуля, чтобы увидеть, как DataScienceUtils могут улучшить ваши проекты!
Мы очень рады, что вы заинтересованы в участии в Utils Data Science! Ваш вклад помогает сделать этот проект лучше для всех. Являетесь ли вы опытным разработчиком или только начинаете, есть место для вас здесь.
Найдите область, чтобы внести свой вклад : ознакомьтесь с нашей страницей «Проблемы» для открытых задач или подумайте о функции, которую вы хотели бы добавить.
Форк репозиторий : сделайте свою собственную копию проекта для работы.
Создайте филиал : внесите свои изменения в новой ветви GIT.
Внесите свои изменения : добавьте свои улучшения или исправления. Мы ценим:
Проверьте свои изменения : убедитесь, что ваш код работает так же, как и ожидалось, и не вводит новые проблемы.
Отправьте запрос на привлечение : Откройте PR с четким названием и описанием ваших изменений.
Мы следуем Кодексу поведения Python Software Foundation и Руководству по использованию Matplotlib. Пожалуйста, придерживайтесь этих руководящих принципов в ваших вкладах.
Если вы новичок в открытом исходном коде или нуждаетесь в какой -либо помощи, не стесняйтесь задавать вопросы в разделе «Проблемы» или обращайтесь к сопровождающим. Мы здесь, чтобы помочь!
Помните, что вклад не слишком мал. Будь то исправление опечатки в документации или добавление основной функции, все взносы ценятся и ценятся.
Спасибо, что помогли сделать науку о данных лучше для всех!
Вот несколько способов установить пакет:
Самый простой способ установить Utils Data Science и его зависимости от PYPI с использованием PIP, предпочтительного установщика пакета Python:
pip install data-science-utilsДля обновления данных Data Science до последней версии используйте:
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 или откройте новую проблему для помощи.