机器学习:皮尔逊相关系数——影评相关性分析案例

机器学习:皮尔逊相关系数——影评相关性分析案例

文章目录

  • 机器学习:皮尔逊相关系数——影评相关性分析案例
    • :rocket:1、皮尔逊相关系数概念及公式
    • :rocket:2、案例
      • 代码部分

皮尔逊(pearson)相关系数斯皮尔曼(spearman)相关系数肯德尔(kendall)相关系数并称为统计学三大相关系数。这里我们来谈一谈皮尔逊(pearson)相关系数的公式及应用

1、皮尔逊相关系数概念及公式

在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数(Pearson product-moment correlation coefficient,简称 PPMCC或PCCs),是用于度量两个变量X和Y之间的相关(线性相关),其值介于-1与1之间,0表示没有相关性。

公式:
ρ X , Y = c o v ( X , y ) σ X σ Y = E ( ( X − μ x ) ( Y − μ Y ) ) σ X σ Y = E ( X Y ) − E ( X ) E ( Y ) E ( X 2 ) − E 2 ( X ) E ( Y 2 ) − E 2 ( Y ) \rho_{X,Y}=\frac{cov(X,y)}{\sigma_X\sigma_Y}=\frac{E((X-\mu_x)(Y-\mu_Y))}{\sigma_X\sigma_Y}=\frac{E(XY)-E(X)E(Y)}{\sqrt{E(X^2)-E^2(X)}{\sqrt{E(Y^2)-E^2(Y)}}} ρX,Y=σXσYcov(X,y)=σXσYE((Xμx)(YμY))=E(X2)E2(X) E(Y2)E2(Y) E(XY)E(X)E(Y)
通过计算协方差与标准差的商,来得出相关系数。小于0时为负相关,大于0时为正相关。

2、案例

我随便写了一个影评数据集做demo

老炮儿 唐人街探案 星球大战 寻龙诀 神探夏洛克 小门神
3.5 1 0 0 0 0
2.5 3.5 3 3.5 2.5 3
3 3.5 1.5 5 3 3.5
2.5 3.5 0 3.5 4 0
3.5 2 4.5 0 3.5 2
3 4 2 3 3 2
4.5 1.5 3 5 3.5 0

代码部分

*首先引入pandas来让我的数据处理变得简单*

import pandas
import pandas as pd

*随后引入scipy库中封装好的皮尔森系数方法*

from scipy.stats import pearsonr

*计算皮尔逊相关系数矩阵*

def calculate_pearson_correlation(data):
    data = pandas.DataFrame(data)
    correlations = data.corr(method='pearson')
    return correlations
def GetPvalue_Pearson(x,y):
    return pearsonr(x,y)[1]

*返回相关系数检验P值矩阵*

def calculate_person_correlation_P(data):
    data = pd.DataFrame(data)
    return data.corr(method=GetPvalue_Pearson)

*读取文件,由于有中文表头,所以设置gbk编码*

*最后输出相关系数矩阵*

data = pd.read_csv("movie_sperman.csv",encoding='gbk')
res = calculate_pearson_correlation(data)
res

机器学习:皮尔逊相关系数——影评相关性分析案例_第1张图片

plt.rcParams['font.sans-serif'] = 'Microsoft Yahei'
ax = plt.subplots(figsize=(20, 16))#调整画布大小
ax = sns.heatmap(res, vmax=.8, square=True, annot=True)#画热力图   annot=True 显示系数

机器学习:皮尔逊相关系数——影评相关性分析案例_第2张图片

由于是相关性矩阵,所以我绘制了热力图。

可以看到颜色越深,相关性越大。

例如,唐人街探案与老炮的影评数据相关性为-0.77呈负相关,所以可以简单地推出喜欢唐人街探案的人不喜欢老炮。(非真实数据结论)

你可能感兴趣的:(机器学习,Python,python,机器学习)