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获取图片颜色信息的方法
Mar 18 Python
使用IPython下的Net-SNMP来管理类UNIX系统的教程
Apr 15 Python
Python中自定义函数的教程
Apr 27 Python
浅谈python装饰器探究与参数的领取
Dec 01 Python
python批量修改图片后缀的方法(png到jpg)
Oct 25 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
Dec 14 Python
python 发送和接收ActiveMQ消息的实例
Jan 30 Python
django富文本编辑器的实现示例
Apr 10 Python
python实现将文件夹内的每张图片批量分割成多张
Jul 22 Python
使用pyqt5 tablewidget 单元格设置正则表达式
Dec 13 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
Apr 22 Python
Python用类实现扑克牌发牌的示例代码
Jun 01 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 xml文件操作实现代码(二)
2009/03/20 PHP
PHP中文件上传的一个问题
2010/09/04 PHP
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
PHP不用递归遍历目录下所有文件的代码
2014/07/04 PHP
Symfony页面的基本创建实例详解
2015/01/26 PHP
php获取文件后缀的9种方法
2016/03/22 PHP
浅析PHP中的i++与++i的区别及效率
2016/06/15 PHP
不错的新闻标题颜色效果
2006/12/10 Javascript
在html页面上拖放移动标签
2010/01/08 Javascript
浏览器打开层自动缓慢展开收缩实例代码
2013/07/04 Javascript
javascript中普通函数的使用介绍
2013/12/19 Javascript
js随机生成字母数字组合的字符串 随机动画数字
2015/09/02 Javascript
解决JS无法调用Controller问题的方法
2015/12/31 Javascript
Bootstrap Fileinput文件上传组件用法详解
2016/05/10 Javascript
给easyui datebox扩展一个清空的实例
2016/11/09 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
react 国际化的实现代码示例
2018/09/14 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
详解vue 项目白屏解决方案
2018/10/31 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
详解微信小程序支付流程与梳理
2019/07/16 Javascript
jQuery实现的上拉刷新功能组件示例
2020/05/01 jQuery
js实现限定区域范围拖拉拽效果
2020/11/20 Javascript
Python实现模拟登录网易邮箱的方法示例
2018/07/05 Python
Python数据集切分实例
2018/12/08 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
教师个人剖析材料
2014/02/05 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python
详解Java七大阻塞队列之SynchronousQueue
2021/09/04 Java/Android
Python3.10的一些新特性原理分析
2021/09/15 Python
pt-archiver 主键自增
2022/04/26 MySQL