Python機器學習之資料探索視覺化庫yellowbrick
背景介紹
從學sklearn時,除了演算法的坎要過,還得學習matplotlib視覺化,對我的實踐應用而言,視覺化更重要一些,然而matplotlib的易用性和美觀性確實不敢恭維。陸續使用過plotly、seaborn,最終定格在了Bokeh,因為它可以與Flask完美的結合,資料看板的開發難度降低了很多。
前陣子看到這個庫可以較為便捷的實現資料探索,今天得空打算學習一下。原本訪問的是英文文件,結果發現已經有人在做漢化,雖然看起來也像是谷歌翻譯的,本著拿來主義,少費點精力的精神,就半抄半學,還是發現了一些與文件不太一致的地方。
# http://www.scikit-yb.org/zh/latest/quickstart.html # http://www.scikit-yb.org/en/latest/quickstart.html
import pandas as pd data = pd.read_csv('data/bikeshare/bikeshare.csv') X = data[[ "season", "month", "hour", "holiday", "weekday", "workingday", "weather", "temp", "feelslike", "humidity", "windspeed" ]] y = data["riders"]
from yellowbrick.features import Rank2D
visualizer = Rank2D(algorithm="pearson")
visualizer.fit_transform(X.values)
visualizer.poof() # 在notebook顯示
# visualizer.poof(outpath="pcoords.jpg",clear_figure=True) # 輸出為png、jpg格式
由上圖可以看出特徵向量7、8為強相關;0、1相關係數也比較高。
下面再來通過曲線擬合看看兩者的相關度。
from yellowbrick.features import JointPlotVisualizer visualizer = JointPlotVisualizer(feature='temp', target='feelslike') visualizer.fit(X['temp'], X['feelslike']) visualizer.poof()
JointPlotVisualizer 讓我們能快速瀏覽有強相關性的特徵,以及各個特徵的範圍和分佈情況。需要注意的是圖中的各個軸都已經標準化到0到1之間的值,這是機器學習中一中非常常用的減少一個特徵對另一個影響的技術。
from yellowbrick.regressor import ResidualsPlot
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
# Create training and test sets
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.1
)
visualizer = ResidualsPlot(LinearRegression())
visualizer.fit(X_train, y_train)
visualizer.score(X_test, y_test)
visualizer.poof()
殘差圖還向我們展示了模型的誤差是怎麼產生的:那根加粗的水平線表示的是 residuals = 0 ,也就是沒有誤差;線上方或者下方的點則表示誤差值的大小。比如大部分殘差是負值,並且其值是由 actual - expected 算得,也就是說大部分時間預測值比實際值要大,比如和實際相比我們的模型總是預測有更多的騎手。|
import numpy as np
from sklearn.linear_model import RidgeCV
from yellowbrick.regressor import AlphaSelection
# RidgeCV:多個阿爾法,得出多個對應最佳的w,然後得到最佳的w及對應的阿爾法
alphas = np.logspace(-10, 1, 200)
visualizer = AlphaSelection(RidgeCV(alphas=alphas))
visualizer.fit(X, y)
visualizer.poof()
alpha = visualizer.alpha_
visualizer.alpha_
3.612342699709438
在探索模型家族的過程中,第一個要考慮的是模型是怎樣變得更複雜的。當模型的複雜度增加,由於方差增加形成的誤差也相應增加,因為模型會變得過擬合併且不能泛化到未知資料上。然而,模型越簡單由於偏差造成的誤差就會越大;模型欠擬合,因此有更多的未中靶預測。大部分機器學習的目的就是要產生一個複雜度適中的模型,在偏差和方差之間找到一箇中間點。
對一個線性模型來說,複雜度來自於特徵本身以及根據模型賦予它們的值。因此對線性模型期望用最少的特徵達到最好的闡釋結果。正則化是實現如上目標的其中一種技術,即引入一個alpha引數來對其相互之間係數的權重進行標準化並且懲罰其複雜度。Alpha和複雜度之間是一個負相關。alpha值越大,複雜度越小,反之亦然。
我們現在可以訓練我們最終的模型並且用 PredictionError 對其進行可視化了:
from sklearn.linear_model import Ridge
from yellowbrick.regressor import PredictionError
visualizer = PredictionError(Ridge(alpha=alpha))
visualizer.fit(X_train, y_train)
visualizer.score(X_test, y_test)
visualizer.poof()
用預測誤差visualizer將實際(測量)值對期望(預測)值進行視覺化。黑色的45度虛線表示誤差為0的點。和殘差圖一樣,這讓我們可以看到誤差在何處出現,值為多大。
在這個圖上,我們可以看到大部分的點集中在小於200騎手的位置。我們也許想要嘗試用正交匹配追蹤演算法(OMP)或者樣條(spline)來訓練一個將更多區域性考慮進來的迴歸模型。我們還可以看到殘差圖中奇怪的拓撲結構好像已被Ridge迴歸糾正,而且在我們的模型中大值和小值之間有了更多的平衡。Ridge正則化可能糾正了兩個特徵之間的協方差問題。當我們用其他模型的形式將我們的資料分析推進的同時,我們可以繼續visualizers來快速比較並且視覺化我們的結果。
希望這個流程讓你對怎樣將Visualizers通過Scikit-Learn整合到機器學習中去有一個概念,並且給你啟發讓你將其運用到你的工作中!如果想要了解更多的有關怎樣開始使用Yellowbrick的資訊,請檢視 模型選擇教程 。然後你就在 Visualizers and API 上快速檢視更多的特定visualizers了。
相關推薦
Python機器學習之資料探索視覺化庫yellowbrick
背景介紹
從學sklearn時,除了演算法的坎要過,還得學習matplotlib視覺化,對我的實踐應用而言,視覺化更重要一些,然而
Python機器學習之資料探索視覺化庫yellowbrick-tutorial
背景介紹
從學sklearn時,除了演算法的坎要過,還得學習matplotlib視覺化,對我的實踐應用而言,視覺化更重要一些,然而matplotlib的易用性和美觀性確實不敢恭維。陸續使用過plotly、seaborn,最終定格在了Bokeh,因為它可以與Flask完美的結合,資料看板的開發難度降低了很多。
Python機器學習之資料預處理
# -*- coding: utf-8 -*-
"""
Created on Sat Sep 29 22:39:26 2018
@author: Lxiao217
email:[email protected]
"""
#資料預處理
#CSV(comma-srpared values,
機器學習之資料歸一化
器學習中,資料歸一化是非常重要,如果不進行資料歸一化,可能會導致模型壞掉或者訓練出一個奇怪的模型。
為什麼要進行資料歸一化
現在有一個訓練資料集,包含兩個樣本,內容如下:
樣本1
1
200
樣本2
5
機器學習之資料歸一化問題
1.機器學習中,為何要經常對資料做歸一化:
1)歸一化後加快了梯度下降求最優解的速度;2)歸一化有可能提高精度。
1)歸一化為什麼能提高梯度下降法求解最優解的速度:
如下圖所示,藍色的圈圈圖代表的是兩個特徵的等高線。其中左圖兩個特徵X1和X2的區間相差非常大,X1區間是[0,2000],
Python與機器學習之資料視覺化(三)
裝飾Matplotlib(標籤、文字、標記、註釋…)
在機器學習實際應用中,最關鍵的部分就是資料視覺化,否則無論除錯還是總結,你無從下手。python大牛們提供了非常牛逼的庫—Matplotlib
回顧
詳解影象組成
Figure
在
python機器學習之--用凝聚層次聚類進行資料分組
1.什麼是層次聚類def perfrom_clustering(X,connectivity,title,num_clusters=3,linkage='ward'):
plt.figure()
model = AgglomerativeClustering(
FPGA機器學習之資料探勘,影象處理,機器視覺,模式識別,人工智慧,機器學習的關係
資料探勘:
資料探勘從字面上就已經很好理解了,就是從一堆資料中,挖掘出一些有用的資訊來的過程。比如說,我們的搜尋資料,如果某個地區大部分人都在搜尋MH370,表示他們在關注這個事情。我們就可以推薦一些安全知識,飛機知識過去。同樣的也可能會有蠟燭銷售高潮
Python 機器學習之開發環境
sta HR nta 命令行 make 語言 anaconda 使用總結 2.6 Python 數據分析庫
Python 編程語言
Pythong Tutorial: https://docs.python.org/3/tutorial/
NumPy
提供常用的數值數組、矩
Python機器學習之梯度提升樹
pri () 糾正 ensemble depth del gbrt 1.5 cer #和隨機森林一樣,基於決策樹,采用連續的方式構建樹,深度很小max_depth<5.重要的參數n_estimate和learning_rate,這兩個參數的y作用在於對模型過擬合化得調
Bobo老師機器學習筆記-資料歸一化
實現演算法:
def normalizate_max_min(X):
"""
利用最大和最小化方式進行歸一化,過一化的資料集中在【0, 1】
:param X:
:return:
"""
np.asarray(X, dty
Python讓你的資料生成視覺化圖形
今天就用 pyecharts 庫來畫圖。
安裝:最簡單快速的命令安裝方法:
pip install pyecharts
柱形圖
柱形圖簡明、醒目,是一種常用的統計圖形。以下生成的圖都可以點選 html 檔案開啟,點選圖形右邊下載按鈕可以下載到本地。
from py
Python基礎學習之資料型別
#列表
list1=[1,2,3]
print(type(list1))
#字典
dict1={"title":"web開發"}
print(type(dict1))
print(dict1['title'])
#元組
tuple1=(11
機器學習之資料集切分
機器學習之資料集切分
# -*- coding: utf-8 -*-
"""
Created on Mon Dec 10 09:32:55 2018
@author: muli
"""
from sklearn.model_selection import trai
機器學習之資料標準化處理
機器學習之資料標準化處理
# -*- coding: utf-8 -*-
"""
Created on Sat Dec 8 16:41:32 2018
@author: muli
"""
from sklearn.preprocessing import MinM
Python Django+Echarts將資料作視覺化輸出
以上為最終結果
Django是開放原始碼的Web應用框架,由Python語言編寫。
pip3 install django安裝Django,並加入系統變數Path。
建立Django專案,並在PyCharm下的terminal輸入:python manage.py st
機器學習之 資料預處理(sklearn preprocessing)
資料預處理(data preprocessing)是指在主要的處理以前對資料進行的一些處理。如對大部分地球物理面積性觀測資料在進行轉換或增強處理之前,首先將不規則分佈的測網經過插值轉換為規則網的處理,以利於計算機的運算。另外,對於一些剖面測量資料,如地震資料預處理有垂直疊加、
Python機器學習之特徵工程
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from sklearn.model_selection import
python機器學習之SMO演算法
SVM演算法計算到後面是一個帶約束條件的優化問題
這裡的SMO(Sequential Minimal Optimization)序列最小化演算法就是一個二次規劃優化演算法,可以用來解決上面的問題。SMO演算法是由John C.Platt在1998年提出的。SMO演算法的目
Python & 機器學習之專案實踐
機器學習是一項經驗技能,經驗越多越好。在專案建立的過程中,實踐是掌握機器學習的最佳手段。在實踐過程中,通過實際操作加深對分類和迴歸問題的每一個步驟的理解,達到學習機器學習的目的。
預測模型專案模板
不能只通過閱讀來掌握機器學習的技能,需要進行大量的練習。