【项目记录】【Python】多元线性回归和数据可视化(模糊化热力图heatmap、等高线contour)

该文详细描述了从数据筛选到绘制热力图的过程,包括数据的归一化处理,使用模糊处理增强热力图的视觉效果,以及如何进行多元线性回归分析和绘制等高线图。通过示例展示了如何在Python中利用matplotlib和sklearn库实现这些操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目描述:

给定数据库(dataframe格式),目标:

  1. 根据数据库中特定字段(var1,var2)筛选出所需样本;
  2. 对样本中特定维度(x)进行归一化;
  3. 自定义坐标轴标签;
  4. 绘制模糊处理的热力图;
  5. 进行多元线性回归;
  6. 绘制等高线。
步骤:
导入第三方库
# IMPORT
import matplotlib.pyplot as plt
import numpy as np
import math
import pyodbc
import pandas as pd
from matplotlib import ticker
from sklearn.linear_model import LinearRegression
导入数据并筛选

        这里我们自己生成一组数据,共100*100个点。

# 构造数据
a = 0.5
b = 0.8
c = 1
x = np.linspace(0,5,100)
y = np.linspace(0,1,100)
z = a*x*x + b*y*y + c #热力图的第三个维度
var1 = 'var1'
var2 = 'var2'
data = {'x':x,'y':y,'z':z,'var1':var1,'var2':var2}
df0 = pd.DataFrame(data)
df1 = df0[(df0.var1 == var1) & (df0.var2 == var2)]

x=np.array((df1.x-df1.x.min())/(df1.x.max()-df1.x.min())) #归一化
y=np.array(df1.y)
X,Y=np.meshgrid(x,y)
z=[]
for j in range(len(x)):
    z_row=[]
    for k in range(len(y)):
        z_value=a*X[j][k]*X[j][k] + b*Y[j][k]*Y[j][k] + c
        z_row.append(z_value)
    z.append(z_row)

#导出热力图看效果
plt.pcolormesh(x,y,z)
plt.colorbar()

效果图: 

由于这里样本量足够多,且数量关系十分明确,所以效果看起来还挺理想。

绘制热力图

在实际中画热力图时,为了让原本数量关系没那么明确、样本量也不一定够多的数据展现出一定的规律性,我们采用方格模糊化的做法。

  • 构建方格

        自定义方格的尺寸,以及模糊半径,绘制热力图。热力图展示出方格对应的中心点(xc,yc)以h为半径的圆内所有点的z的平均值大小。


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值