原作者:David 9
原文發於作者個人部落格,點選檢視原文,掘金已獲得轉載授權。再次感謝作者。
PyCon2018兩款最新ML資料視覺化庫:Altair和Yellowbrick,函數語言程式設計的視覺化庫和scikit-learn增強視覺化庫
資料科學的視覺化庫和深度學習框架庫一樣,雖然層出不窮,但是大致分為兩種:
一種是通用視覺化庫任何類似json schema的靜態資料都可以用它作圖如: Pandas, Seaborn , ggplot, Bokeh, pygal, Plotly 。
另一種是和框架耦合較高的視覺化庫,如TensorFlow的TensorBoard,scikit-learn增強視覺化庫Yellowbrick。
對於第一種通用庫,方便簡潔、易用的趨勢一直沒有改變。這屆PyCon2018上的talk:Exploratory Data Visualization with Vega, Vega-Lite, and Altair 就介紹了Altair這種新的函數語言程式設計視覺化庫,其簡潔程度,只要拿到panda的dataframe資料,多加一句宣告程式碼,就可以進行視覺化了:
import altair as alt# to use with Jupyter notebook (not JupyterLab) run the following# alt.renderers.enable('notebook')# load a simple dataset as a pandas DataFramefrom vega_datasets import datacars = data.cars()# 這裡是宣告程式碼,是不是有函數語言程式設計的味道 ?alt.Chart(cars).mark_point().encode( x='Horsepower', y='Miles_per_Gallon', color='Origin',)複製程式碼
如果要把點的樣式改成線的樣式,只需把函式mark_point()改成mark_line()即可:
alt.Chart(cars).mark_line().encode( x='Horsepower', y='Miles_per_Gallon', color='Origin',)複製程式碼
這裡可以注意到無論你的car資料集有多少特徵,視覺化時你需要什麼特徵,在encode函式中宣告就可以了。當然,Altair API還有許多便捷的地方,許多例項的jupyterNOTEBOOK例子可以先試試。
而對於和scikit-learn耦合較高的視覺化庫Yellowbrick, 甚至在視覺化的過程中,已經融入的訓練過程:
from sklearn.linear_model import LogisticRegressionfrom yellowbrick.classifier import ROCAUC# 初始化分類模型和視覺化logistic = LogisticRegression()visualizer = ROCAUC(logistic)visualizer.fit(X_train, y_train) # visualizer物件其實就是estimater類的繼承,可以進行fit訓練visualizer.score(X_test, y_test) # 在測試集上得分g = visualizer.poof() # 獲得ROCAUC的分析圖複製程式碼
如上述程式碼,在logistic迴歸模型訓練完畢就立即輸出分析圖:
同樣,PCA分析也一樣,視覺化和訓練程式碼是耦合的:
from yellowbrick.features.pca import PCADecompositionvisualizer = PCADecomposition(scale=True, center=False, color=y)visualizer.fit_transform(X,y)visualizer.poof()複製程式碼
上述程式碼直接實現了兩維的PCA視覺化:
參考文獻:
本文采用署名 – 非商業性使用 – 禁止演繹 3.0 中國大陸許可協議進行許可。著作權屬於“David 9的部落格”原創,如需轉載,請聯絡微信: david9ml,或郵箱:yanchao727@gmail.com
或直接掃二維碼: