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脚本生成Android SALT扰码的方法
Sep 18 Python
Python专用方法与迭代机制实例分析
Sep 15 Python
在Python的gevent框架下执行异步的Solr查询的教程
Apr 16 Python
详解Python中的type()方法的使用
May 21 Python
Python编程求解二叉树中和为某一值的路径代码示例
Jan 04 Python
django的登录注册系统的示例代码
May 14 Python
Python使用combinations实现排列组合的方法
Nov 13 Python
python获取交互式ssh shell的方法
Feb 14 Python
Python3中urlencode和urldecode的用法详解
Jul 23 Python
如何在Django项目中引入静态文件
Jul 26 Python
基于nexus3配置Python仓库过程详解
Jun 15 Python
使用Python+Appuim 清理微信的方法
Jan 26 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
PHP4引用文件语句的对比
2006/10/09 PHP
PHP字符转义相关函数小结(php下的转义字符串)
2007/04/12 PHP
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
PHP利用header跳转失效的解决方法
2014/10/24 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
2015/03/19 PHP
PHP实现断点续传乱序合并文件的方法
2018/09/06 PHP
jQuery 名称冲突的解决方法
2011/04/08 Javascript
javascript加号"+"的二义性说明
2013/03/04 Javascript
Javascript+CSS实现影像卷帘效果思路及代码
2014/10/20 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
ie下js不执行的几种可能
2017/02/28 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
vue+element-ui+axios实现图片上传
2019/08/20 Javascript
在Angular中实现一个级联效果的下拉框的示例代码
2020/05/20 Javascript
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
Python pickle类库介绍(对象序列化和反序列化)
2014/11/21 Python
Python网站验证码识别
2016/01/25 Python
python3+PyQt5使用数据库窗口视图
2018/04/24 Python
Python 如何批量更新已安装的库
2020/05/26 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
幼儿园教师节活动方案
2014/02/02 职场文书
幼儿园中秋节活动方案
2014/02/06 职场文书
荷叶母亲教学反思
2014/04/30 职场文书
中国文明网2015年“向国旗敬礼”活动网上签名寄语
2015/09/24 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
导游词之京东大峡谷旅游区
2019/10/29 职场文书
详解Nginx 工作原理
2021/03/31 Servers
mysql优化
2021/04/06 MySQL
pycharm安装深度学习pytorch的d2l包失败问题解决
2022/03/25 Python