自用 | 数据相关性分析 python代码

  • 随机森林-重要性权重分析

 

#随机森林模型
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error

rf = RandomForestRegressor(n_estimators = 50, random_state = 1)
rf.fit(X, y)


# argsort函数给数组做一个排列
importances = rf.feature_importances_
included = X.columns.values
indices = np.argsort(importances)[::-1]

#绘制条形图
import matplotlib.pyplot as plt
plt.figure(figsize = (20, 5))
plt.bar(x = included[indices][0:20], height = importances[indices][0:20], color = 'g', edgecolor = 'k')
plt.xticks(rotation = -45, fontsize = 12, ha = 'left')
plt.yticks(fontsize = 12)
plt.show()

 

  •  相关系数热力图


# import warnings
# warnings.filterwarnings("ignore")
# print(data.corr())  # 计算相关系数矩阵
import matplotlib.pyplot as plt

import numpy as np
import seaborn as sns

def test(df):
    dfData = df.corr()
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 正常显示中文
    plt.rcParams['axes.unicode_minus'] = False
    plt.subplots(figsize=(29, 29)) # 设置画面大小
    sns.heatmap(dfData, annot=True, vmax=1, square=True, cmap="Blues")
    plt.savefig('./相关系数热力图.png')
    plt.show()
    
test(data)
  •  多重共线性检查VIF

import pandas as pd
from statsmodels.stats.outliers_influence import variance_inflation_factor
import numpy as np


# 当VIF<10,说明不存在多重共线性;当10<=VIF<100,存在较强的多重共线性,当VIF>=100,存在严重多重共线性
name = X.columns
vif = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
VIF = pd.DataFrame({'feature':name,"VIF":vif})

方差膨胀因子(Variance Inflation Factor,以下简称VIF),指解释变量之间存在多重共线性时的方差与不存在多重共线性时的方差之比。

有警告但是能出来结果 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值