Python數(shù)據(jù)可視化:冪律分布實(shí)例詳解
1、公式推導(dǎo)
對(duì)冪律分布公式:

對(duì)公式兩邊同時(shí)取以10為底的對(duì)數(shù):


所以對(duì)于冪律公式,對(duì)X,Y取對(duì)數(shù)后,在坐標(biāo)軸上為線性方程。
2、可視化
從圖形上來(lái)說(shuō),冪律分布及其擬合效果:

對(duì)X軸與Y軸取以10為底的對(duì)數(shù)。效果上就是X軸上1與10,與10與100的距離是一樣的。

對(duì)XY取雙對(duì)數(shù)后,坐標(biāo)軸上點(diǎn)可以很好用直線擬合。所以,判定數(shù)據(jù)是否符合冪律分布,只需要對(duì)XY取雙對(duì)數(shù),判斷能否用一個(gè)直線很好擬合就行。常見的直線擬合效果評(píng)估標(biāo)準(zhǔn)有擬合誤差平方和、R平方。
3、代碼實(shí)現(xiàn)
#!/usr/bin/env python
# -*-coding:utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
from sklearn import linear_model
from scipy.stats import norm
def DataGenerate():
X = np.arange(10, 1010, 10) # 0-1,每隔著0.02一個(gè)數(shù)據(jù) 0處取對(duì)數(shù),會(huì)時(shí)負(fù)無(wú)窮 生成100個(gè)數(shù)據(jù)點(diǎn)
noise=norm.rvs(0, size=100, scale=0.2) # 生成50個(gè)正態(tài)分布 scale=0.1控制噪聲強(qiáng)度
Y=[]
for i in range(len(X)):
Y.append(10.8*pow(X[i],-0.3)+noise[i]) # 得到Y(jié)=10.8*x^-0.3+noise
# plot raw data
Y=np.array(Y)
plt.title("Raw data")
plt.scatter(X, Y, color='black')
plt.show()
X=np.log10(X) # 對(duì)X,Y取雙對(duì)數(shù)
Y=np.log10(Y)
return X,Y
def DataFitAndVisualization(X,Y):
# 模型數(shù)據(jù)準(zhǔn)備
X_parameter=[]
Y_parameter=[]
for single_square_feet ,single_price_value in zip(X,Y):
X_parameter.append([float(single_square_feet)])
Y_parameter.append(float(single_price_value))
# 模型擬合
regr = linear_model.LinearRegression()
regr.fit(X_parameter, Y_parameter)
# 模型結(jié)果與得分
print('Coefficients: \n', regr.coef_,)
print("Intercept:\n",regr.intercept_)
# The mean square error
print("Residual sum of squares: %.8f"
% np.mean((regr.predict(X_parameter) - Y_parameter) ** 2)) # 殘差平方和
# 可視化
plt.title("Log Data")
plt.scatter(X_parameter, Y_parameter, color='black')
plt.plot(X_parameter, regr.predict(X_parameter), color='blue',linewidth=3)
# plt.xticks(())
# plt.yticks(())
plt.show()
if __name__=="__main__":
X,Y=DataGenerate()
DataFitAndVisualization(X,Y)


以上這篇Python數(shù)據(jù)可視化:冪律分布實(shí)例詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 利用Python進(jìn)行數(shù)據(jù)可視化常見的9種方法!超實(shí)用!
- Python數(shù)據(jù)可視化 pyecharts實(shí)現(xiàn)各種統(tǒng)計(jì)圖表過(guò)程詳解
- 利用Python代碼實(shí)現(xiàn)數(shù)據(jù)可視化的5種方法詳解
- Python數(shù)據(jù)可視化庫(kù)seaborn的使用總結(jié)
- Python數(shù)據(jù)可視化:箱線圖多種庫(kù)畫法
- Python數(shù)據(jù)可視化之畫圖
- Python數(shù)據(jù)可視化:餅狀圖的實(shí)例講解
- Python數(shù)據(jù)可視化:泊松分布詳解
- python實(shí)現(xiàn)股票歷史數(shù)據(jù)可視化分析案例
- Python?"手繪風(fēng)格"數(shù)據(jù)可視化方法實(shí)例匯總
相關(guān)文章
python繞過(guò)圖片滑動(dòng)驗(yàn)證碼實(shí)現(xiàn)爬取PTA所有題目功能 附源碼
這篇文章主要介紹了python繞過(guò)圖片滑動(dòng)驗(yàn)證碼實(shí)現(xiàn)爬取PTA所有題目 附源碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
如何用Python?實(shí)現(xiàn)景區(qū)安防系統(tǒng)
本設(shè)計(jì)中,利用YOLO目標(biāo)檢測(cè)算法、Openpose姿態(tài)識(shí)別算法、deepsort跟蹤算法、MSCNN人群密度估計(jì)算法實(shí)現(xiàn)了火災(zāi)監(jiān)測(cè)、吸煙監(jiān)測(cè)、行為安全監(jiān)測(cè)、人群密度監(jiān)測(cè)、口罩率監(jiān)測(cè)、人員定位監(jiān)測(cè)六大功能,對(duì)Python?實(shí)現(xiàn)景區(qū)安防系統(tǒng)感興趣的朋友一起看看吧2022-07-07
python文本數(shù)據(jù)處理學(xué)習(xí)筆記詳解
這篇文章主要為大家詳細(xì)介紹了python文本數(shù)據(jù)處理學(xué)習(xí)筆記,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
OpenCV實(shí)現(xiàn)機(jī)器人對(duì)物體進(jìn)行移動(dòng)跟隨的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于OpenCV實(shí)現(xiàn)機(jī)器人對(duì)物體進(jìn)行移動(dòng)跟隨的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
使用Matplotlib創(chuàng)建自定義可視化圖表的方法小結(jié)
Matplotlib 是 Python 中最流行的繪圖庫(kù)之一,它提供了豐富的功能和靈活性,使用戶能夠創(chuàng)建各種類型的可視化圖表,本文將介紹如何使用 Matplotlib 中的各種功能和技巧來(lái)創(chuàng)建自定義的可視化圖表,文中通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-05-05
Python實(shí)現(xiàn)經(jīng)典算法拓?fù)渑判?、字符串匹配算法和最小生成樹?shí)例
這篇文章主要介紹了Python實(shí)現(xiàn)經(jīng)典算法拓?fù)渑判颉⒆址ヅ渌惴ê妥钚∩蓸鋵?shí)例,拓?fù)渑判?、字符串匹配算法和最小生成樹是?jì)算機(jī)科學(xué)中常用的數(shù)據(jù)結(jié)構(gòu)和算法,它們?cè)诮鉀Q各種實(shí)際問(wèn)題中具有重要的應(yīng)用價(jià)值,需要的朋友可以參考下2023-08-08

