我想根据时间信息计算项目(0,1,2,3….)之间的相似性。时间信息可以是时间即时(startdate)、时间间隔(startdate、enddate)或null(NaT);请参阅下面的dataframe(df_for)的示例。在

{instant,instant}:如果等于sim=1,则sim=0

{instant,null}或相反,sim=0

{instant,interval}:如果instant在interval内,sim=1,或者如果一个interval包含一个instant,sim=1

{interval,interval}:如果区间重叠,sim=两个区间的交集/两个区间的并集

{interval,interval}:如果一个间隔包含另一个,则sim=1

下面的python代码从dataframe获取时态信息,并执行上述条件(1-5)。代码很冗长,我想知道是否有一种聪明的方法/lib来使用python计算时间段和时间瞬间之间的相似性。在m, k = df_for.shape

sim = np.zeros((m, m))

data = df_for.values

for i in range(m):

for j in range(m):

if i != j:

st1 = data[i][0]

ed1 = data[i][1]

st2 = data[j][0]

ed2 = data[j][1]

#both items are null values

if pd.isnull(st1) and pd.isnull(ed1) and pd.isnull(st2) and pd.isnull(ed2):

sim[i][j] = 0.

# {instant, instant} => equal, not equal

if pd.notnull(st1) and pd.isnull(ed1) and pd.notnull(st2) and pd.isnull(ed2):

if st1 == st2:

sim[i][j] = 1.

else:

sim[i][j] = 0.

# {instant, null} => sim is 0

if pd.notnull(st1) and pd.isnull(ed1) and pd.isnull(st2) and pd.isnull(ed2):

sim[i][j] = 0.

# {instant, interval} => meets, during

if pd.notnull(st1) and pd.isnull(ed1) and pd.notnull(st2) and pd.notnull(ed2):

if(st2 <= st1 <= ed2):

sim[i][j] = 1. #a time is between two other times

else:

sim[i][j] = 0.

# {interval, instant} => meets, contains

if pd.notnull(st1) and pd.notnull(ed1) and pd.notnull(st2) and pd.isnull(ed2):

if(st1 <= st2 <= ed1):

sim[i][j] = 1. #a time is between two other times

else:

sim[i][j] = 0.

# {interval, interval} => equal, overlaps, not overlaps

if pd.notnull(st1) and pd.notnull(ed1) and pd.notnull(st2) and pd.notnull(ed2):

if (st1 <= st2 <= ed1) or (st2 <= st1 <= ed2):

intersect = min(ed1,ed2)- max(st1,st2) # earliestend-lateststart

union = max(st1,st2,ed1,ed2) - min(ed1,ed2,st1,st2)

overlaps = intersect/union

#print(intersect/np.timedelta64(1, 'D'),union/np.timedelta64(1, 'D'))

if (st1 > st2 and ed1 < ed2) or (st1 < st2 and ed1 > ed2): # contains, during

overlaps = 1.0

sim[i][j]=overlaps

else:

sim[i][j] = 0.

else:

sim[i][j] = 1.

python 计算时间重叠_Python基于时间信息(即时、间隔)计算项目之间的相似性...相关推荐

  1. python 组合优化_python基于粒子群优化的投资组合优化研究

    我今年的研究课题是使用粒子群优化(PSO)的货币进位交易组合优化.在本文中,我将介绍投资组合优化并解释其重要性.其次,我将演示粒子群优化如何应用于投资组合优化.第三,我将解释套利交易组合,然后总结我的 ...

  2. python模型预测_python:目标检测模型预测准确度计算方式(基于IoU)

    训练完目标检测模型之后,需要评价其性能,在不同的阈值下的准确度是多少,有没有漏检,在这里基于IoU(Intersection over Union)来计算. 希望能提供一些思路,如果觉得有用欢迎赞我表 ...

  3. 用python计算贷款_Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例...

    本文实例讲述了Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据.分享给大家供大家参考,具体如下: 一.Logistic回归模型: 二.Logistic回归建模步骤 1.根据分析 ...

  4. python 天气雷达_python结合API实现即时天气信息

    python结合API实现即时天气信息 import urllib.request import urllib.parse import json """ 利用" ...

  5. python 计算时间重叠_python whilepython计算两个矩形框重合百分比的实例

    如下所示: 对<python计算两个矩形框重合百分比的实例>总结来说,为我们电脑技术很实用. def mat_inter(box1,box2): # 判断两个矩形是否相交 # box=(x ...

  6. python爬虫数据挖掘_Python网页爬虫文本处理科学计算机器学习数据挖掘兵器谱...

    转载自"我爱自然语言处理":http://www.52nlp.cn,已获得授权.更多内容可见公众号:"牛衣古柳"(ID:Deserts-X). 周末时看到这篇不 ...

  7. guido python正式发布年份_Python语言适合哪些领域的计算问题? (1.3分)_学小易找答案...

    [单选题]关于Python中的复数,下列说法错误的是 (1.3分) [多选题]药物作用的基本规律包括? [单选题]Python 中,以下哪个赋值操作符是错误的? (1.3分) [单选题]哪个选项是下面 ...

  8. python图像处理教程_Python基于Tensor FLow的图像处理操作详解

    本文实例讲述了Python基于Tensor FLow的图像处理操作.分享给大家供大家参考,具体如下: 在对图像进行深度学习时,有时可能图片的数量不足,或者希望网络进行更多的学习,这时可以对现有的图片数 ...

  9. python计算圆周率_python模拟蒙特·卡罗法计算圆周率

    蒙特·卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用,其中就包括圆周率近似值的计问题. 假设有一块边长为2的正方形木板,上面画一个单位圆,然后随意往木板上扔飞镖,落点坐标(x, ...

最新文章

  1. 【应急响应】没有痕迹该如何进行最优解
  2. linux redis -p,linux 安装redis
  3. 泛型DAO与泛型Service
  4. 前端学习(325):javascript历史
  5. either fix the issues identified by lint, or modify your build script as follows
  6. (进阶篇_01)Oracle数据同步3种场景
  7. Asp.net2.0水晶报表的一些示例源码
  8. C++ OpenCV 问题
  9. 甲骨文中国疯狂裁员 招聘网站上线“甲骨文人才专场”
  10. linux ipv4 keepalive,Linux中keepalive的使用
  11. python定时爬虫_python 每天如何定时启动爬虫任务(实现方法分享)
  12. php算法结构,PHP数据结构与算法:顺序表
  13. 向架构师进军---系统架构设计基础知识
  14. 计算机应用怎么写,计算机应用专业描述怎么写
  15. CSU 2124智慧树(建图+BFS)
  16. 白帽飞客从入门到放肆
  17. java 毕向东 笔记_毕向东Java基础部分笔记
  18. 按键精灵根据图片查找技巧
  19. 个人收集的mac破解软件免费下载(不断更新中)
  20. 招聘-大数据开发工程师

热门文章

  1. php mysql 获取错误_php怎样获取mysql错误信息
  2. 数学之美 系列十五 繁与简 自然语言处理的几位精英
  3. poj2079(一堆点找出最大的三角形)
  4. hdu5384(AC自动机+纪录重复单词出现的次数)
  5. 洛谷P1182 数列分段`Section II`
  6. arrays中copyof复制两个数组_异或的魅力!图解「数组中两个数的最大异或值」
  7. 安卓期末作品小项目_北京部编版八年级上册语文期末试卷
  8. subquery unnesting、Subquery unnesting and View Merge
  9. Linux从入门到精通——Apache
  10. 2017年10月21日 数据库基础三大范式