大家好,我是一行
最近看到一个好玩的工具库,叫做dython,乍一看还以为是哪个模仿python的冷门语言
其实是一款数据建模库,原来scikit-learn、statsmodels、seaborn这些库需要十几行代码才能完成的功能,dython只需要一行代码就可以了
具体怎么使用它呢?一行分享在下面
通过pip即可完成对dython的安装:
pip install dython
那它有哪些一行代码便可实现的功能呢?下面举两个例子
只需要给定一个数据集,Dython 将自动找到哪些特征是分类特征,哪些特征是数值特征,计算每个特征之间的相关关联度量,并将其绘制为易于阅读的热图,所有这一切都是用一行完成的
例如入门常用的鸢尾花数据集,绘制它的的关联热图便可以使用dython.nominal.associations 来实现
import pandas as pd
from sklearn import datasets
from dython.nominal import associations
# Load data
iris = datasets.load_iris()
# Convert int classes to strings to allow associations
# method to automatically recognize categorical columns
target = ['C{}'.format(i) for i in iris.target]
# Prepare data
X = pd.DataFrame(data=iris.data, columns=iris.feature_names)
y = pd.DataFrame(data=target, columns=['target'])
df = pd.concat([X, y], axis=1)
# Plot features associations
associations(df)
只需要给定机器学习多种模型的预测,使用dython便可以轻松显示每个种模型的 ROC 曲线、AUC 分数并找到模型估计的最佳阈值
在Iris 数据集上绘制 SVM 模型预测示例ROC图,便可以使用dython.model_utils.metric_graph() 来进行实现
import numpy as np
from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import label_binarize
from sklearn.multiclass import OneVsRestClassifier
from dython.model_utils import metric_graph
# Load data
iris = datasets.load_iris()
X = iris.data
y = label_binarize(iris.target, classes=[0, 1, 2])
# Add noisy features
random_state = np.random.RandomState(4)
n_samples, n_features = X.shape
X = np.c_[X, random_state.randn(n_samples, 200 * n_features)]
# Train a model
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.5, random_state=0)
classifier = OneVsRestClassifier(svm.SVC(kernel='linear', probability=True, random_state=0))
# Predict
y_score = classifier.fit(X_train, y_train).predict_proba(X_test)
# Plot ROC graphs
metric_graph(y_test, y_score, 'roc', class_names=iris.target_names)
这个dython一共有4个子模块,分别实现分析、预测、检验、采样等功能
data_utils子模块集成了一些基础性的数据探索性分析相关的API
nominal子模块包含了一些进阶的特征相关性度量功能
model_utils子模块包含了诸多对机器学习模型进行性能评估的工具
sampling子模块则包含了boltzmann_sampling()和weighted_sampling()两种数据采样方法,简化数据建模流程。
Dython的主要目的是实现各种功能的简易可读性,但是在性能上面稍有欠缺
大家如果对这个库想深入了解,可以参考网站 http://shakedzy.xyz/dython/ 来查看它的具体使用情况
好了,这就是今天的分享,技术永不眠,我们下期见~