from math import sqrt def multipl(a,b): sumofab=0.0 for i in range(len(a)): temp=a[i]*b[i] sumofab+=temp return sumofab def corrcoef(x,y): n=len(x) #求和 sum1=sum(x) sum2=sum(y) #求乘积之和 sumofxy=multipl(x,y) #求平方和 sumofx2 = sum([pow(i,2) for i in x]) sum
template <class T1, class T2>double Pearson(std::vector<T1> &inst1, std::vector<T2> &inst2) { if(inst1.size() != inst2.size()) { std::cout<<"the size of the vectors is not the same\n"; return 0; } size_t n=inst1.s
# -*- coding: utf-8 -*- """ Created on Mon Dec 2 14:49:59 2018 @author: zhen """ import matplotlib.pyplot as plt import numpy as np import pandas as pd from datetime import datetime def normal(a): #最大值最小值归一化 return (a - np.mi
1.闵可夫斯基距离 闵可夫斯基距离可以概括曼哈顿距离与欧几里得距离. 其中r越大,单个维度差值大小会对整体产生更大的影响.这个很好理解,假设当r=2时一个正方形对角线长度,永远是r=3时正方体对角线的投影,因此r越大,单个维度差异会有更大影响.(所以这也可能是很多公司的推荐算法并不准确的原因之一) 我们在对一个新用户进行推荐时,可以计算在同等维度下其他用户的闵可夫斯基距离.这种海量数据的表格,用pandas处理十分方便 下面有一个闵可夫距离计算的实例 from math import