詳解Python可視化神器Yellowbrick使用
機器學習中非常重要的一環(huán)就是數(shù)據的可視化分析,從源數(shù)據的可視化到結果數(shù)據的可視化都離不開可視化工具的使用,sklearn+matplotlib的組合在日常的工作中已經滿足了絕對大多數(shù)的需求,今天主要介紹的是一個基于sklearn和matplotlib模塊進行擴展的可視化工具Yellowbrick。
Yellowbrick的官方文檔在
Yellowbrick主要包含的組件如下: 這里以癌癥數(shù)據集為例繪制ROC曲線,如下: 結果如下: 結果看起來也是挺美觀的。 之后用平行坐標的方法對高維數(shù)據進行作圖,數(shù)據集同上: 結果如下: 這個最初沒有看明白什么意思,其實就是高維特征數(shù)據的可視化分析,這個功能還可以對原始數(shù)據進行采樣,之后再繪圖。 基于癌癥數(shù)據集,使用邏輯回歸模型來分類,繪制分類報告 結果如下: 這樣的結果展現(xiàn)方式還是比較美觀的,在使用的時候發(fā)現(xiàn)了這個模塊的一個不足的地方,就是:如果連續(xù)繪制兩幅圖片的話,第一幅圖片就會累加到第二幅圖片中去,多幅圖片繪制亦是如此,在matplotlib中可以使用plt.clf()方法來清除上一幅圖片,這里沒有找到對應的API,希望有找到的朋友告知一下。 接下來基于共享單車數(shù)據集進行租借預測,具體如下: 首先基于特征對相似度分析方法來分析共享單車數(shù)據集中兩兩特征之間的相似度 基于線性回歸模型實現(xiàn)預測分析 結果如下: 基于共享單車數(shù)據使用AlphaSelection 結果如下: 基于共享單車數(shù)據繪制預測錯誤圖 結果如下: 今天先記錄到這里,之后有時間繼續(xù)更新學習! 總結 以上所述是小編給大家介紹的Python可視化神器Yellowbrick使用,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
Visualizers
Visualizers也是estimators(從數(shù)據中習得的對象),其主要任務是產生可對模型選擇過程有更深入了解的視圖。從Scikit-Learn來看,當可視化數(shù)據空間或者封裝一個模型estimator時,其和轉換器(transformers)相似,就像"ModelCV" (比如 RidgeCV, LassoCV )的工作原理一樣。Yellowbrick的主要目標是創(chuàng)建一個和Scikit-Learn類似的有意義的API。其中最受歡迎的visualizers包括:
特征可視化
Rank Features: 對單個或者兩兩對應的特征進行排序以檢測其相關性
Parallel Coordinates: 對實例進行水平視圖
Radial Visualization: 在一個圓形視圖中將實例分隔開
PCA Projection: 通過主成分將實例投射
Feature Importances: 基于它們在模型中的表現(xiàn)對特征進行排序
Scatter and Joint Plots: 用選擇的特征對其進行可視化
分類可視化
Class Balance: 看類的分布怎樣影響模型
Classification Report: 用視圖的方式呈現(xiàn)精確率,召回率和F1值
ROC/AUC Curves: 特征曲線和ROC曲線子下的面積
Confusion Matrices: 對分類決定進行視圖描述
回歸可視化
Prediction Error Plot: 沿著目標區(qū)域對模型進行細分
Residuals Plot: 顯示訓練數(shù)據和測試數(shù)據中殘差的差異
Alpha Selection: 顯示不同alpha值選擇對正則化的影響
聚類可視化
K-Elbow Plot: 用肘部法則或者其他指標選擇k值
Silhouette Plot: 通過對輪廓系數(shù)值進行視圖來選擇k值
文本可視化
Term Frequency: 對詞項在語料庫中的分布頻率進行可視化
t-SNE Corpus Visualization: 用隨機鄰域嵌入來投射文檔
def testFunc1(savepath='Results/breast_cancer_ROCAUC.png'):
'''
基于癌癥數(shù)據集的測試
'''
data=load_breast_cancer()
X,y=data['data'],data['target']
X_train, X_test, y_train, y_test = train_test_split(X, y)
viz=ROCAUC(LogisticRegression())
viz.fit(X_train, y_train)
viz.score(X_test, y_test)
viz.poof(outpath=savepath)
def testFunc2(savepath='Results/breast_cancer_ParallelCoordinates.png'):
'''
用平行坐標的方法對高維數(shù)據進行作圖
'''
data=load_breast_cancer()
X,y=data['data'],data['target']
print 'X_shape: ',X.shape #X_shape: (569L, 30L)
visualizer=ParallelCoordinates()
visualizer.fit_transform(X,y)
visualizer.poof(outpath=savepath)
def testFunc3(savepath='Results/breast_cancer_LR_report.png'):
'''
基于癌癥數(shù)據集,使用邏輯回歸模型來分類,繪制分類報告
'''
data=load_breast_cancer()
X,y=data['data'],data['target']
model=LogisticRegression()
visualizer=ClassificationReport(model)
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=42)
visualizer.fit(X_train,y_train)
visualizer.score(X_test,y_test)
visualizer.poof(outpath=savepath)
def testFunc5(savepath='Results/bikeshare_Rank2D.png'):
'''
共享單車數(shù)據集預測
'''
data=pd.read_csv('bikeshare/bikeshare.csv')
X=data[["season", "month", "hour", "holiday", "weekday", "workingday",
"weather", "temp", "feelslike", "humidity", "windspeed"
]]
y=data["riders"]
visualizer=Rank2D(algorithm="pearson")
visualizer.fit_transform(X)
visualizer.poof(outpath=savepath)
def testFunc7(savepath='Results/bikeshare_LinearRegression_ResidualsPlot.png'):
'''
基于共享單車數(shù)據使用線性回歸模型預測
'''
data = pd.read_csv('bikeshare/bikeshare.csv')
X=data[["season", "month", "hour", "holiday", "weekday", "workingday",
"weather", "temp", "feelslike", "humidity", "windspeed"]]
y=data["riders"]
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3)
visualizer=ResidualsPlot(LinearRegression())
visualizer.fit(X_train, y_train)
visualizer.score(X_test, y_test)
visualizer.poof(outpath=savepath)
def testFunc8(savepath='Results/bikeshare_RidgeCV_AlphaSelection.png'):
'''
基于共享單車數(shù)據使用AlphaSelection
'''
data=pd.read_csv('bikeshare/bikeshare.csv')
X=data[["season", "month", "hour", "holiday", "weekday", "workingday",
"weather", "temp", "feelslike", "humidity", "windspeed"]]
y=data["riders"]
alphas=np.logspace(-10, 1, 200)
visualizer=AlphaSelection(RidgeCV(alphas=alphas))
visualizer.fit(X, y)
visualizer.poof(outpath=savepath)
def testFunc9(savepath='Results/bikeshare_Ridge_PredictionError.png'):
'''
基于共享單車數(shù)據繪制預測錯誤圖
'''
data=pd.read_csv('bikeshare/bikeshare.csv')
X=data[["season", "month", "hour", "holiday", "weekday", "workingday",
"weather", "temp", "feelslike", "humidity", "windspeed"]]
y=data["riders"]
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3)
visualizer=PredictionError(Ridge(alpha=3.181))
visualizer.fit(X_train, y_train)
visualizer.score(X_test, y_test)
visualizer.poof(outpath=savepath)
blog.csdn.net/Together_CZ/article/details/86640784
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
相關文章
python scipy.spatial.distance 距離計算函數(shù) ?
本文主要介紹了python scipy.spatial.distance 距離計算函數(shù),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03實現(xiàn)python版本的按任意鍵繼續(xù)/退出
本文給大家簡單介紹了在windows以及l(fā)inux下實現(xiàn)python版本的按任意鍵繼續(xù)/退出功能,非常的簡單實用,linux下稍微復雜些,有需要的小伙伴可以參考下2016-09-09ruff check文件目錄檢測--exclude參數(shù)設置路徑詳解
這篇文章主要為大家介紹了ruff check文件目錄檢測exclude參數(shù)如何設置多少路徑詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10在Python中操作文件之truncate()方法的使用教程
這篇文章主要介紹了在Python中操作文件之truncate()方法的使用教程,是Python入門學習中的基礎知識,需要的朋友可以參考下2015-05-05在python中使用pyspark讀寫Hive數(shù)據操作
這篇文章主要介紹了在python中使用pyspark讀寫Hive數(shù)據操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06