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解析xml文件操作实例
Oct 05 Python
Python部署web开发程序的几种方法
May 05 Python
python打包压缩、读取指定目录下的指定类型文件
Apr 12 Python
TensorFlow Session会话控制&Variable变量详解
Jul 30 Python
Python实现的简单计算器功能详解
Aug 25 Python
详解python中list的使用
Mar 15 Python
深入了解Python枚举类型的相关知识
Jul 09 Python
pyinstaller打包opencv和numpy程序运行错误解决
Aug 16 Python
python应用文件读取与登录注册功能
Sep 23 Python
关于Numpy中的行向量和列向量详解
Nov 30 Python
Python 多进程原理及实现
Dec 21 Python
Ubuntu20下的Django安装的方法步骤
Jan 24 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
递归列出所有文件和目录
2006/10/09 PHP
function.inc.php超越php
2006/12/09 PHP
php中文字母数字验证码实现代码
2008/04/25 PHP
php反弹shell实现代码
2009/04/22 PHP
PHP 单引号与双引号的区别
2009/11/24 PHP
php构造函数实例讲解
2013/11/13 PHP
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
PHP性能分析工具XHProf安装使用教程
2015/05/13 PHP
PHP基于单例模式实现的mysql类
2016/01/09 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
thinkPHP5.0框架API优化后的友好性分析
2017/03/17 PHP
简单实例处理url特殊符号&处理(2种方法)
2013/04/02 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
jQuery中parents()和parent()的区别分析
2014/10/28 Javascript
dedecms页面如何获取会员状态的实例代码
2016/03/15 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
js技巧之十几行的代码实现vue.watch代码
2018/06/09 Javascript
深入理解Vue 的钩子函数
2018/09/05 Javascript
在Vue-cli里应用Vuex的state和mutations方法
2018/09/16 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
Python检测QQ在线状态的方法
2015/05/09 Python
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
python使用turtle库绘制树
2018/06/25 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
代码实例讲解python3的编码问题
2019/07/08 Python
python3实现单目标粒子群算法
2019/11/14 Python
美国正宗设计师眼镜在线零售商:EYEZZ
2019/03/23 全球购物
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
"引用"与多态的关系
2013/02/01 面试题
优秀英语专业毕业生求职信
2013/11/23 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
企业优秀团员事迹材料
2014/08/20 职场文书
Golang之sync.Pool使用详解
2021/05/06 Golang