余弦相似度
余弦相似度是一种计算相关性的方法,它是将个体的指标数据映射到向量空间,计算两个向量之间的夹角余弦值作为两个变量之间的相似性度量。
两个向量m和n之间的余弦相似度计算公式为:
cosα=mn∣m∣∣n∣cos\alpha=\frac{mn}{|m||n|}cosα=∣m∣∣n∣mncos<x,y>=∑i=1nxiyi∑i=1nxi2∑i=1nyi2cos<x,y>=\frac{\sum_{i=1}^{n}x_{i}y_{i}}{\sqrt {\sum_{i=1}^{n}x_{i}^{2}}\sqrt {\sum_{i=1}^{n}y_{i}^{2}}}cos<x,y>=∑i=1nxi2∑i=1nyi2∑i=1nxiyi
举例

求excel表格中A列、B列、C列、D列两两之间的余弦相关度,并将结果写入表格中
代码
from openpyxl import load_workbook #导入程序包
wb = load_workbook("a.xlsx") #加载excel文件
ws = wb.active #工作表
rows = []
for row in ws.iter_rows():
rows.append(row) #将工作表中数据导入rows中
for q in range(0,4): #求余弦相关系数
for w in range(q+1,4):
a1 = 0
a2 = 0
a3 = 0
for i in range(0,len(rows)):
a1 += rows[i][q].value * rows[i][w].value #余弦相关系数的分字
for j in range(0,len(rows)):
a2 += pow(rows[j][q].value,2)
a2 = pow(a2,.5) #余弦相关系数分母的前部分
for m in range(0,len(rows)):
a3 += pow(rows[m][w].value,2)
a3 = pow(a3,.5) #余弦相关系数分母的后部分
ws.cell(row=q+1, column=w+5, value=a1/(a2*a3)) #向单元格中写入结果
wb.save("a.xlsx") #文件保存
结果

遇到的问题
- 应将excel关闭,再运行程序,否则程序报错
- 向单元格写入结果,最初想用ws.write(),但是一直报错,所以改用了ws.cell(row=行序号, column=列序号, value=值),注意这个序号从1开始
一个简单的编程实例,里面有python对excel数据的操作,这也是第一次写博客,如有问题请指正。
该博客介绍了如何利用Python的openpyxl库读取Excel文件,并计算其中A列到D列两两之间的余弦相似度。通过计算向量的内积和各自的模长来确定余弦值,将结果写入新的Excel单元格。在编程过程中需要注意关闭已打开的工作簿以避免错误,以及使用ws.cell()方法代替已弃用的ws.write()来写入单元格。
962

被折叠的 条评论
为什么被折叠?



