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

 更新时间:2019年12月07日 09:16:11   作者:墨竹 | kevinelstri  
今天小编就为大家分享一篇Python数据可视化:幂律分布实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

1、公式推导

对幂律分布公式:

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

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

2、可视化

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

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

对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处理数据之匹配两个Excel文件数据的实现方法

    Python处理数据之匹配两个Excel文件数据的实现方法

    这篇文章主要给大家介绍了关于Python处理数据之匹配两个Excel文件数据的实现方法,可以使用Python的Pandas库来实现两层循环匹配两个Excel文件,需要的朋友可以参考下
    2023-09-09
  • python脚本和网页有何区别

    python脚本和网页有何区别

    在本篇文章里小编给大家整理的是关于python脚本和网页的区别点总结,有兴趣的朋友们可以学习下。
    2020-07-07
  • python实现拓扑排序的基本教程

    python实现拓扑排序的基本教程

    拓扑排序是对有向无环图的一种排序,发现自己并没有真的理解拓扑排序,再次学习了下,所以下面这篇文章主要给大家介绍了关于python实现拓扑排序的基本教程,文中通过示例代码介绍的非常详细,需要的朋友可以参考下,
    2018-03-03
  • Python+Appium实现自动抢微信红包

    Python+Appium实现自动抢微信红包

    不知从何时开始微信红包横空出世,对于网速和手速慢的人只能在一旁观望,做为python的学习者就是要运用编程解决生活和工作上的事情。于是我用python解决我们的手速问题python实现自动抢微信红包,至于网速慢得那就只能自己花钱提升了。
    2021-05-05
  • Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】

    Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】

    这篇文章主要介绍了Python3.5基础之函数的定义与使用,结合实例形式详细分析了Python3.5函数的定义、参数、作用域、递归、重载、内置函数等基本概念与相关使用技巧,需要的朋友可以参考下
    2019-04-04
  • Python使用django框架实现多人在线匿名聊天的小程序

    Python使用django框架实现多人在线匿名聊天的小程序

    很多网站都提供了在线匿名聊天的小功能,下面小编基于python的django框架实现一个多人在线匿名聊天的小程序,具体实现代码大家参考下本文
    2017-11-11
  • python里面单双下划线的区别详解

    python里面单双下划线的区别详解

    本文主要介绍了python里面单双下划线的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • pygame学习笔记(2):画点的三种方法和动画实例

    pygame学习笔记(2):画点的三种方法和动画实例

    这篇文章主要介绍了pygame学习笔记(2):画点的三种方法和动画实例,本文讲解了单个像素(画点)、连接多个点形成线、引用图像、动画完整实例,需要的朋友可以参考下
    2015-04-04
  • python数据库编程 ODBC方式实现通讯录

    python数据库编程 ODBC方式实现通讯录

    这篇文章主要为大家详细介绍了python数据库编程,ODBC方式实现通讯录,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • python使用openpyxl库读写Excel表格的方法(增删改查操作)

    python使用openpyxl库读写Excel表格的方法(增删改查操作)

    这篇文章主要介绍了python使用openpyxl库读写Excel表格的方法(增删改查操作),本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05

最新评论