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模块学习 filecmp 文件比较
Aug 27 Python
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
Jul 09 Python
Python深入学习之特殊方法与多范式
Aug 31 Python
Python中的各种装饰器详解
Apr 11 Python
python数据抓取分析的示例代码(python + mongodb)
Dec 25 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
Aug 13 Python
python函数定义和调用过程详解
Feb 09 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
Mar 08 Python
python如何删除列为空的行
Jul 17 Python
Python matplotlib模块及柱状图用法解析
Aug 10 Python
python 如何实现遗传算法
Sep 22 Python
Django实现聊天机器人
May 31 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
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
2007/01/15 PHP
解决File size limit exceeded 错误的方法
2013/06/14 PHP
PHP随机字符串生成代码(包括大小写字母)
2013/06/24 PHP
linux下php上传文件注意事项
2016/06/11 PHP
PHP实现腾讯短网址生成api接口实例
2020/12/08 PHP
用javascript实现画板的代码
2007/09/05 Javascript
告诉大家什么是JSON
2008/06/10 Javascript
idTabs基于JQuery的根据URL参数选择Tab插件
2012/04/11 Javascript
js/jQuery对象互转(快速操作dom元素)
2013/02/04 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
深入理解jQuery中的事件冒泡
2016/05/24 Javascript
利用BootStrap弹出二级对话框的简单实现方法
2016/09/21 Javascript
详解如何webpack使用DllPlugin
2018/09/30 Javascript
vue生命周期与钩子函数简单示例
2019/03/13 Javascript
详解vue在项目中使用百度地图
2019/03/26 Javascript
浅谈js闭包理解
2019/03/28 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
2020/03/17 Javascript
vue 解决IOS10低版本白屏的问题
2020/11/17 Javascript
python进程类subprocess的一些操作方法例子
2014/11/22 Python
Python实现从URL地址提取文件名的方法
2015/05/15 Python
python实现串口自动触发工作的示例
2019/07/02 Python
对于Python深浅拷贝的理解
2019/07/29 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
使用python快速在局域网内搭建http传输文件服务的方法
2019/11/14 Python
TensorFlow设置日志级别的几种方式小结
2020/02/04 Python
python新手学习使用库
2020/06/11 Python
学生偷窃检讨书
2014/09/25 职场文书
校园广播稿精选
2014/10/01 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
教师个人成长总结
2015/02/11 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
2016教师廉洁教育心得体会
2016/01/13 职场文书
JS实现九宫格拼图游戏
2022/06/28 Javascript