数据的模型分析及可视化

import numpy as np
x=np.linspace(-4,4,20)            #构建[-4,4]上 x 的数据向量 
x

np.random.seed(1)                 #设置随机种子数以便重复结果
e=np.random.randn(20)             #随机误差数据向量 e~N(0,1)
e

import matplotlib.pyplot as plt 
y1=x
plt.plot(x,y1,'o');         #完全正相关 y=x

 y2=-x
plt.plot(x,y2,'o');        #完全负相关 y=-x

y3=x+e
plt.plot(x,y3,'o');       #正相关 y=x+e

 y4=-x+e
plt.plot(x,y4,'o');      #负相关 y=-x+e

 

 相关系数的直观分析

fig,ax=plt.subplots(2,2,figsize=(10,8)) #将上述四个图放到一页上
ax[0,0].plot(x,y1,'o')
ax[0,1].plot(x,y2,'o')     
ax[1,0].plot(x,y3,'o')
ax[1,1].plot(x,y4,'o')

plt.figure(figsize=(10, 8))

plt.subplot(221)
plt.plot(x,y1,'o')
plt.subplot(222)
plt.plot(x,y2,'o')
plt.subplot(223)
plt.plot(x,y3,'o')
plt.subplot(224)
plt.plot(x,y4,'o')
plt.show()

相关系数的Python计算 

 plt.plot(x,y1,'o')
np.corrcoef([x,y1])

 plt.plot(x,y2,'o');
np.corrcoef([x,y2])

 plt.plot(x,y3,'o');
np.corrcoef([x,y3])[0,1]

np.corrcoef([x,y1,y2,y3,y4])    # 对称矩阵

 import pandas as pd   #构建模拟数据的数据框
xy=pd.DataFrame({'x':x,'y1':y1,'y2':y2,'y3':y3,'y4':y4})
xy

xy.corrwith(xy.x)

pd.plotting.scatter_matrix(xy,figsize=(9,8)); #矩阵散点图

直线回归的可视化模拟

# 定义模拟直线回归函数
import statsmodels.api as sm                  #加载统计模型包
def reglinedemo(n=20):                        #模拟样本例数
    x=np.arange(n)+1                          #自变量取值
    e=np.random.normal(0,1,n)                 #误差项
    y=2+0.5*x+e                               #因变量值
    x1=sm.add_constant(x)
    x1                  #加常数项
    fm=sm.OLS(y,x1).fit()
    fm                  #模型拟合,见下
    plt.plot(x,y,'.',x,fm.fittedvalues,'r-') #添加回归线,红色
    for i in range(len(x)):                   #画垂直线
        plt.vlines(x,y,fm.fittedvalues,linestyles='dotted',colors='b')

np.random.seed(12)
reglinedemo(20)

 

 np.random.seed(12)
reglinedemo(40)

 

import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm

# 定义模拟直线回归函数
def reglinedemo(n=20):
    x = np.arange(n) + 1                      # 自变量取值,从1到n
    e = np.random.normal(0, 1, n)             # 误差项,服从标准正态分布
    y = 2 + 0.5 * x + e                       # 因变量值,包含截距和斜率以及误差
    x1 = sm.add_constant(x)                   # 在自变量矩阵中添加常数项(截距)
    fm = sm.OLS(y, x1).fit()                  # 使用普通最小二乘法拟合线性回归模型
    plt.plot(x, y, '.', x, fm.fittedvalues, 'r-')  # 绘制散点图和回归线
    for i in range(len(x)):                   # 循环遍历每个数据点
        plt.vlines(x[i], y[i], fm.fittedvalues[i], linestyles='dotted', colors='b')  # 画垂直虚线连接实际值与预测值
    plt.xlabel('自变量 x')
    plt.ylabel('因变量 y')
    plt.title('模拟直线回归')
    plt.grid(True)
    plt.show()

# 调用函数进行演示
reglinedemo()

心得体会

优秀的模型分析需要数学严谨性、计算高效性和视觉表现力的有机结合。模型结果的可视化呈现不仅是分析的终点,更是贯穿整个分析过程的思考工具。通过将抽象的模型结果转化为直观的图形,不仅便于发现潜在问题,也更容易向非技术人员传达分析结论。这次实践让我认识到,数据模型分析与可视化是一个不断迭代的过程。可视化分析展现了数据探索的强大力量。恰当的可视化能够揭示数据中隐藏的模式和异常,这是单纯依靠数值分析难以实现的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值