Python数据可视化:幂律分布实例详解


Posted in Python onDecember 07, 2019

1、公式推导

对幂律分布公式:

Python数据可视化:幂律分布实例详解

对公式两边同时取以10为底的对数:

Python数据可视化:幂律分布实例详解

Python数据可视化:幂律分布实例详解

所以对于幂律公式,对X,Y取对数后,在坐标轴上为线性方程。

2、可视化

从图形上来说,幂律分布及其拟合效果:

Python数据可视化:幂律分布实例详解

对X轴与Y轴取以10为底的对数。效果上就是X轴上1与10,与10与100的距离是一样的。

Python数据可视化:幂律分布实例详解

对XY取双对数后,坐标轴上点可以很好用直线拟合。所以,判定数据是否符合幂律分布,只需要对XY取双对数,判断能否用一个直线很好拟合就行。常见的直线拟合效果评估标准有拟合误差平方和、R平方。

3、代码实现

#!/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一个数据 0处取对数,会时负无穷 生成100个数据点
 noise=norm.rvs(0, size=100, scale=0.2) # 生成50个正态分布 scale=0.1控制噪声强度
 Y=[]
 for i in range(len(X)):
  Y.append(10.8*pow(X[i],-0.3)+noise[i]) # 得到Y=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) # 对X,Y取双对数
 Y=np.log10(Y)
 return X,Y

def DataFitAndVisualization(X,Y):
 # 模型数据准备
 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)
 # 模型结果与得分
 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数据可视化:幂律分布实例详解

Python数据可视化:幂律分布实例详解

以上这篇Python数据可视化:幂律分布实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 获取本机ip地址的两个方法
Feb 25 Python
python解析html开发库pyquery使用方法
Feb 07 Python
Python Deque 模块使用详解
Jul 04 Python
深入解析Python编程中super关键字的用法
Jun 24 Python
Python 爬虫学习笔记之正则表达式
Sep 21 Python
python多进程中的内存复制(实例讲解)
Jan 05 Python
Django 路由系统URLconf的使用
Oct 11 Python
python 获取utc时间转化为本地时间的方法
Dec 31 Python
详解Python3除法之真除法、截断除法和下取整对比
May 23 Python
Django如何实现网站注册用户邮箱验证功能
Aug 14 Python
基于python调用psutil模块过程解析
Dec 20 Python
python模拟点击网页按钮实现方法
Feb 25 Python
Python数据可视化:泊松分布详解
Dec 07 #Python
python-numpy-指数分布实例详解
Dec 07 #Python
Python Sympy计算梯度、散度和旋度的实例
Dec 06 #Python
python实现输入的数据在地图上生成热力图效果
Dec 06 #Python
python 画3维轨迹图并进行比较的实例
Dec 06 #Python
解决pyshp UnicodeDecodeError的问题
Dec 06 #Python
python创建ArcGIS shape文件的实现
Dec 06 #Python
You might like
PHP版本常用的排序算法汇总
2015/12/20 PHP
JavaScript模板入门介绍
2012/09/26 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
Egret引擎开发指南之发布项目
2014/09/03 Javascript
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
2016/09/17 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
angularjs实现首页轮播图效果
2017/04/14 Javascript
最基础的vue.js双向绑定操作
2017/08/23 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
JS中的BOM应用
2018/02/02 Javascript
Vue自定义指令实现checkbox全选功能的方法
2018/02/28 Javascript
jQuery使用each遍历循环的方法
2018/09/19 jQuery
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
JS实现横向跑马灯效果代码
2020/04/20 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
Python中str.format()详解
2017/03/12 Python
python实现简易云音乐播放器
2018/01/04 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
2020/03/17 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
《这儿真好》教学反思
2014/02/22 职场文书
超市开学活动方案
2014/03/01 职场文书
小学生竞选班干部演讲稿(5篇)
2014/09/12 职场文书
计划生育汇报材料
2014/12/26 职场文书
信用卡收入证明范本
2015/06/12 职场文书
SpringBoot集成Redis的思路详解
2021/10/16 Redis
Python OpenCV超详细讲解读取图像视频和网络摄像头
2022/04/02 Python
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python