阅读今日所有推文,汇聚好运召唤神龙
当机器学习工具Scikit-Learn遇上了可视化工具Matplotlib,就衍生出Scikit-Plot。Scikit-Plot是由Reiichiro Nakano创建,用在机器学习流程中的可视化工具。它简直就是玩机器学习的数据科学家的福音,能最快速简洁地画出用 Matplotlib要写很多行语句才能画出的图,使用Scikit-Plot的每个人都可以用一行代码 (one-liner) 完成任务。开始渴望使用Scikit-plot?来吧,展示~
—
Installation
首先,确保已经安装了最新版本的Scikit-plot。Scikit-plot在PyPi上,所以只需运行下面语句即可安装最新版本:
pip install scikit-plot
python setup.py install
—
First Plot
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
X, y = load_digits(return_X_y=True)
from sklearn.ensemble import RandomForestClassifier
random_forest_clf = RandomForestClassifier(n_estimators=5, max_depth=5, random_state=1)
from sklearn.model_selection import cross_val_predict
predictions = cross_val_predict(random_forest_clf, X, y)
import scikitplot as skplt
skplt.metrics.plot_confusion_matrix(y, predictions, normalize=True)
plt.show()
就是这样,一行代码可视化!快速浏览一下上面的混淆矩阵就会发现,分类器在识别数字 1、8 和 9 方面表现不佳,或许调整随机森林的超参数后可以得到更棒的结果。
03
—
One more example
import matplotlib.pyplot as plt
import scikitplot as skplt
# This is a Keras classifier. We'll generate probabilities on the test set
keras_clf.fit(X_train, y_train, batch_size=64, nb_epoch=10, verbose=2)
probas = keras_clf.predict_proba(X_test, batch_size=64)
# Now plot
skplt.metrics.plot_precision_recall_curve(y_test, probas)
plt.show()
04
—
Metrics Module
scikitplot.metrics模块包括机器学习评估指标图,例如混淆矩阵、轮廓分数等。下面将逐个进行介绍,给出代码示例,并展示可视化图形。由于上述已经介绍了混淆矩阵和精确召回曲线的绘制方法,下面内容不再包含这两种图形。
import scikitplot as skplt
lr = LogisticRegression()
lr = lr.fit(X_train, y_train)
y_probas = lr.predict_proba(X_test)
# 绘制KS统计图
skplt.metrics.plot_ks_statistic(y_test, y_probas)
plt.show()
绘制分类器的校准曲线有助于确定是否可以将它们的预测概率直接解释为置信水平。例如,一个经过良好校准的二分类器应该对样本进行分类,使得对于它给出 0.8分的样本,大约80%实际上应该来自正类。该方法目前仅适用于二分类。
import scikitplot as skplt
rf = RandomForestClassifier()
lr = LogisticRegression()
nb = GaussianNB()
svm = LinearSVC()
rf_probas = rf.fit(X_train, y_train).predict_proba(X_test)
lr_probas = lr.fit(X_train, y_train).predict_proba(X_test)
nb_probas = nb.fit(X_train, y_train).predict_proba(X_test)
svm_scores = svm.fit(X_train, y_train).decision_function(X_test)
probas_list = [rf_probas, lr_probas, nb_probas, svm_scores]
clf_names = ['Random Forest', 'Logistic Regression', 'Gaussian Naive Bayes', 'Support Vector Machine']
skplt.metrics.plot_calibration_curve(y_test, probas_list, clf_names)
plt.show()
import scikitplot as skplt
lr = LogisticRegression()
lr = lr.fit(X_train, y_train)
y_probas = lr.predict_proba(X_test)
skplt.metrics.plot_cumulative_gain(y_test, y_probas)
plt.show()
05
—
Estimators Module
import scikitplot as skplt
rf = RandomForestClassifier()
skplt.estimators.plot_learning_curve(rf, X, y)
plt.show()
5.2 为学习器生成训练和测试学习曲线图
import scikitplot as skplt
rf = RandomForestClassifier()
rf.fit(X, y)
skplt.estimators.plot_feature_importances(rf, feature_names=['petal length', 'petal width', 'sepal length', 'sepal width'])
plt.show()
06
—
Cluster Module
import scikitplot as skplt
kmeans = KMeans(random_state=1)
skplt.cluster.plot_elbow_curve(kmeans, cluster_ranges=range(1, 30))
plt.show()
import scikitplot as skplt
kmeans = KMeans(n_clusters=4, random_state=1)
cluster_labels = kmeans.fit_predict(X)
skplt.metrics.plot_silhouette(X, cluster_labels)
plt.show()
—
Decomposition Module
对于整数/无输入,如果y是二进制或多类, StratifiedKFold则使用。如果估计器不是分类器或者既不y是二分类也不是多分类,KFold则使用。
import scikitplot as skplt
pca = PCA(random_state=1)
pca.fit(X)
skplt.decomposition.plot_pca_component_variance(pca)
plt.show()
import scikitplot as skplt
pca = PCA(random_state=1)
pca.fit(X)
skplt.decomposition.plot_pca_2d_projection(pca, X, y)
plt.show()
—
结束语