Python特征分析-相关性分析

Python特征分析-相关性分析
Python特征分析- 相关性分析
相关性分析
介绍:分析连续变量之间的线性相关程度的强弱栗斑腹鹀
⽅法:图⽰初判 / Pearson相关系数(⽪尔逊相关系数) / Sperman秩相关系数(斯⽪尔曼相关系数)
引⼊库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats
%matplotlib inline
图⽰初判
变量之间的线性相关性
data1 = pd.Series(np.random.rand(50)*100).sort_values()
data2 = pd.Series(np.random.rand(50)*50).sort_values()
data3 = pd.Series(np.random.rand(50)*500).sort_values(ascending =False)
# 创建三个数据:data1为0-100的随机数并从⼩到⼤排列,data2为0-50的随机数并从⼩到⼤排列,data3为0-500的随机数并从⼤到⼩排列,
fig = plt.figure(figsize =(10,4))
ax1 = fig.add_subplot(1,2,1)
ax1.scatter(data1, data2)
# 正线性相关
ax2 = fig.add_subplot(1,2,2)
ax2.scatter(data1, data3)
# 负线性相关
方玉婷
*
散点图矩阵初判多变量间关系
data = pd.DataFrame(np.random.randn(200,4)*100, columns =['A','B','C','D']) pd.plotting.scatter_matrix(data,figsize=(8,8),
c ='k',
marker ='+',
diagonal='hist',
alpha =0.8,
range_padding=0.1)
data.head()
*
Pearson相关系数
创建样本数据
data1 = pd.Series(np.random.rand(100)*100).sort_values()
data2 = pd.Series(np.random.rand(100)*50).sort_values()
data = pd.DataFrame({'value1':data1.values,
'value2':data2.values})
print(data.head())
print('------')
# 创建样本数据
*
正态性检验→ pvalue >0.05
u1,u2 = data['value1'].mean(),data['value2'].mean()# 计算均值
std1,std2 = data['value1'].std(),data['value2'].std()# 计算标准差
print('value1正态性检验:\n',stats.kstest(data['value1'],'norm',(u1, std1)))
print('value2正态性检验:\n',stats.kstest(data['value2'],'norm',(u2, std2)))
print('------')
# 正态性检验→ pvalue >0.05
制作Pearson相关系数求值表
data['(x-u1)*(y-u2)']=(data['value1']- u1)*(data['value2']- u2)
data['(x-u1)**2']=(data['value1']- u1)**2
data['(y-u2)**2']=(data['value2']- u2)**2
print(data.head())
print('------')
# 制作Pearson相关系数求值表
*
求出r
r = data['(x-u1)*(y-u2)'].sum()/(np.sqrt(data['(x-u1)**2'].sum()* data['(y-u2)**2'].sum()))
print('Pearson相关系数为:%.4f'% r)
# 求出r
# |r| > 0.8 →⾼度线性相关
Pearson相关系数为:0.9969
Pearson相关系数 - 算法
data1 = pd.Series(np.random.rand(100)*100).sort_values()领导者的作用
data2 = pd.Series(np.random.rand(100)*50).sort_values()
data = pd.DataFrame({'value1':data1.values,
'value2':data2.values})
print(data.head())
print('------')
# 创建样本数据
<()
附庸
# pandas相关性⽅法:(method='pearson', min_periods=1) →直接给出数据字段的相关系数矩阵# method默认pearson
*
Sperman秩相关系数
创建样本数据
data = pd.DataFrame({'智商':[106,86,100,101,99,103,97,113,112,110], '每周看电视⼩时数':[7,0,27,50,28,29,20,12,6,17]})
print(data)
print('------')
# 创建样本数据
*
重新排序、index
data.sort_values('智商', inplace=True)
data['range1']= np.arange(1,len(data)+1)
data.sort_values('每周看电视⼩时数', inplace=True)
data['range2']= np.arange(1,len(data)+1)
print(data)
print('------')
# “智商”、“每周看电视⼩时数”重新按照从⼩到⼤排序,并设定秩次index *
求出rs
data['d']= data['range1']- data['range2']
data['d2']= data['d']**2
print(data)
print('------')
# 求出di,di2
n =len(data)
rs =1-6*(data['d2'].sum())/(n *(n**2-1))
print('Pearson相关系数为:%.4f'% rs)
# 求出rs
*
聚合度Pearson相关系数 - 算法
data = pd.DataFrame({'智商':[106,86,100,101,99,103,97,113,112,110],
'每周看电视⼩时数':[7,0,27,50,28,29,20,12,6,17]})
玩命关头3东京甩尾
print(data)
print('------')
# 创建样本数据
<(method='spearman')
# pandas相关性⽅法:(method='pearson', min_periods=1) →直接给出数据字段的相关系数矩阵# method默认pearson
*
python 数据特征分析

本文发布于:2024-09-22 11:35:43,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/485486.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:矩阵   变量   计算   数据   创建   数据字
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议