当前位置: 首页 > article >正文

使用Python解决数据分析中的相关性分析

目录

  • 1.相关系数基础
    • 1.1 使用==Pandas==计算皮尔逊相关系数
    • 1.2 计算物品A与其他物品的相关系数
    • 1.3 用户间的相关系数
    • 1.4 获取相关系数矩阵
  • 2. 相似度计算的Python实现
    • 2.1 欧式距离
    • 2.2 余弦相似度
    • 2.3 皮尔逊相关系数的手动实现
  • 3. 总结

在数据分析中,相关系数是衡量两个变量之间线性关系的重要指标。本文将深入探讨如何在Python的Pandas库中计算和应用相关系数,并结合实际示例,展示不同相似度计算方法的实现。

1.相关系数基础

相关系数可以帮助我们了解变量之间的关系强度和方向。最常用的相关系数是皮尔逊相关系数,它的值介于-1和1之间。值为1表示完全正相关,-1表示完全负相关,0则表示无相关性。

1.1 使用Pandas计算皮尔逊相关系数

我们首先创建一个数据框(DataFrame)来模拟用户对不同物品的评分:

import pandas as pd

df = pd.DataFrame([[5, 4, 4], [1, 2, 2], [5, 2, 1]], columns=['物品A', '物品B', '物品C'], index=['用户1', '用户2', '用户3'])
df

在这里插入图片描述

1.2 计算物品A与其他物品的相关系数

可以使用corrwith方法计算物品A与其他物品的皮尔逊相关系数:

A = df["物品A"]
corr_A = df.corrwith(A)
print(corr_A)

在这里插入图片描述

1.3 用户间的相关系数

类似地,可以计算用户之间的相关系数:

user_corr = df.corrwith(df.iloc[0], axis=1)  # 计算用户1与其他用户的皮尔逊相关系数
print(user_corr)

在这里插入图片描述

1.4 获取相关系数矩阵

使用corr()方法,可以快速获取整个数据框的相关系数矩阵:

corr_matrix = df.corr()
print(corr_matrix)

在这里插入图片描述

2. 相似度计算的Python实现

除了相关系数,计算物品或用户之间的相似度也非常重要。以下是几种常用的相似度计算方法。

2.1 欧式距离

欧式距离是衡量两个点之间直线距离的一种方法,可以通过以下方式计算:

import numpy as np

# 计算第一行与第二行的欧氏距离
euclidean_distance = np.linalg.norm(df.iloc[0] - df.iloc[1])
print("物品A与物品B的欧氏距离为:", euclidean_distance)

在这里插入图片描述

2.2 余弦相似度

余弦相似度用于衡量两个向量的夹角,常用于文本和推荐系统中:

from sklearn.metrics.pairwise import cosine_similarity

item_similarity = cosine_similarity(df)
cos_df = pd.DataFrame(item_similarity, columns=["物品A", "物品B", "物品C"], index=["物品A", "物品B", "物品C"])
print(cos_df)

在这里插入图片描述

2.3 皮尔逊相关系数的手动实现

除了Pandas,Scipy库也可以计算皮尔逊相关系数:

from scipy.stats import pearsonr

X = [1, 3, 5, 7, 9]
Y = [9, 8, 6, 4, 2]
corr = pearsonr(X, Y)
print("皮尔逊相关系数r的值为:", corr[0], "显著性水平P值为:", corr[1])

在这里插入图片描述

3. 总结

本文介绍了如何在Python中计算相关系数及相似度,可用于数据预处理分析部分。通过实际的代码示例,展示了皮尔逊相关系数、欧式距离和余弦相似度的计算方式。这些技术在数据分析和推荐系统中具有重要应用。


http://www.kler.cn/a/320249.html

相关文章:

  • Office-Tab-for-Mac Office 窗口标签化,Office 多文件标签化管理
  • 鸿蒙实战:页面跳转传参
  • 学习electron
  • 移门缓冲支架的工作原理
  • MySQL 日志 主从复制
  • if 语句 和 case 语句
  • 论前端框架的对比和选择 依据 前端框架的误区
  • AMEYA360代理:兆易创新GD32A7系列全新一代车规级MCU介绍
  • 【Python】:列表使用方法! 附带教程源码
  • 手机解压软件加密指南:让文件更安全
  • docker - 迁移和备份
  • PHP安装swoole扩展无效,如何将文件上传至Docker容器
  • Codeforces Round 578 (Div. 2) E题 Compress Words(扩展KMP)
  • 计算机知识竞赛网站设计与实现
  • CVPR2021 安全AI挑战者计划第六期赛道一第二名方案分享 (UM-SIAT队)
  • 木舟0基础学习Java的第二十九天(Spring,Spring的属性注入(xml,注解))
  • 代码随想录Day53|102.沉没孤岛 、103.水流问题 、104.建造最大岛屿
  • Spring Boot 点餐系统:餐饮界的技术革新
  • Packet Tracer - IPv4 ACL 的实施挑战(完美解析)
  • 【C++笔试强训】如何成为算法糕手Day3
  • Linux标准I/O
  • (11)(2.1.2) DShot ESCs(四)
  • 学校快递站点管理|基于springboot学校快递站点管理设计与实现(源码+数据库+文档)
  • 屠龙之人终成恶龙
  • 页面禁用鼠标右键属于反爬虫措施吗 ?
  • 《飞机大战游戏》实训项目(Java GUI实现)(设计模式)(简易)