自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 创新实训二十九

后端异步训练LR模型

2021-06-08 01:35:53 154

原创 创新实训二十八

从前端获取用户点击行为训练LR模型 用户每次点击酒店,前端会返回点击数据到后端,后端将点击数据存入数据库,并且设定每十分钟的点击数据为一组(十分钟为暂定时间,可以根据实际情况进行改进),在数据库中,用id作为组数,后端每十分钟进行一次训练,并将训练后得到的新权重存入数据库,这一操作异步进行 #将从前端获取的用户点击行为存入数据库 #每点击一次,存储一次,存储的数据为[id,hotel_name,time],time为存储时间 #id每十分钟更新一次,从0开始,递增 def clicks_saving(hot

2021-06-05 17:38:29 150

原创 创新实训二十七

在ideal中用java计算距离 由于常常需要使用pycharm。但是又必须运行计算距离的程序,所以考虑在ideal中运行,方法如下: import java.io.*; import java.math.BigDecimal; import java.sql.*; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; impo

2021-06-04 02:08:41 137

原创 创新实训二十六

计算经纬度

2021-06-03 13:35:29 149

原创 创新实训二十五

路径规划改进 由于前端要求改进数据输出形式,传入地点坐标,也就是经纬度,因此改动方法如下: from distance import getPosition,getapiurl from dataProcessing import distance,get_lng_lat import json #输入为酒店和景点 #前端要求传入地点坐标,也就是经纬度,输出形式如下: # {paths: [ # [ # { lng: 121.6292529148, lat: 31.203

2021-06-03 11:22:07 138

原创 创新实训二十四

使用高德API 之前计算距离一直使用百度API,但是百度计算时间长,常常容易产生bug,因此考虑使用高德地图API #调用高德API KEY = 'cb5071a542abea5c6ab88f2640335d15' #获得地址的经纬度,即location def get_geocode(address): #用于输出和字符串拼接 # global flag #参数列表key和address data = { 'key':KEY, 'addres

2021-06-02 18:02:25 116

原创 创新实训二十三

数据处理 由于实时运行时,酒店数量多,计算出景点到酒店的距离非常耗时,并且,酒店到景点的距离相当长的一段时间内是固定不变的,所以我们可以提前计算出每一个景点到所有酒店的距离,存入数据库,这样在实时查询时会大大降低查询时间 # 查询景点到酒店距离,并将它存入数据库 db = pymysql.connect( host='8.140.178.29', port=3306, user='cxsx', passwd='cxsx123',

2021-06-02 00:53:26 131

原创 创新实训二十二

数据处理

2021-06-02 00:43:50 163

原创 创新实训二十一

调用百度API计算两地步行距离 1.获取百度api接口 创建应用完成后我们就可以得到刚刚创建的应用的密钥(AK) 2.获取起始地点的地理编码 def getapiurl(myaddress): url=r"http://api.map.baidu.com/geocoding/v3/?address={}&output=json&ak={}".format(myaddress,myAK)#说明文档里给出的api接口 print(url) return url def

2021-05-31 19:41:31 129

原创 创新实训二十

调用数据库 根据设计,我们需要建立数据库,将酒店信息存放在数据库中,每次进行推荐时,先从数据库中获取数据,进行处理,再将顺序反馈到前端,前端显示时再实时爬取价格信息,以达到实时性。 数据库使用mysql 首先安装pymysql库 打开cmd,键入命令: pip3 install PyMySQL 建立数据库连接 ''' 连接数据库 ''' import pymysql db = pymysql.connect( host='8.140.178.29', port=3306,

2021-05-31 16:34:17 143

原创 创新实训十九

针对酒店类型分类 类型筛选,用户选择酒店类型(豪华型,高档型,舒适型,经济型,民宿),也可以不选择类型,那么不进行筛选 规定豪华型=5,高档型=4,舒适型=3,经济型=2,民宿=1,全部=0 输入酒店矩阵为:[酒店名称,评分,评论数,类型] def typeSelecting(type,hotels): results=[] if(type==0): return hotels elif(type==1): #将所有民宿提取出来 for

2021-05-30 20:14:46 107

原创 创新实训十八

针对酒店类型分类 用户搜索酒店时,还可以按照酒店的类型搜索,酒店共有五个类型,分别是豪华型(五星级),高档型(四星级),舒适型(三星级),经济型(二星及以下),民宿,若用户不选择类型标签,那么搜索结果包括所有标签,若用户选择其中之一,那么搜索结果只可能包括这种类型的酒店。 为了防止多次进行类型选择并减少计算量,每次在进行推荐之前,先筛选酒店类型,将筛选之后得到的酒店在进行推荐排序。 ...

2021-05-29 21:10:29 133

原创 创新实训十七

路线规划 根据之前设计的算法,进行代码实现 输入为酒店和景点 输出形式为矩阵: #[[酒店名称,景点1名称,距离,… [景点1名称,酒店名称,距离,景点2名称,距离,… … def path(hotel,places): #计算出酒店到各个景点的距离 results=[0 for k in range((len(places)+1))] #结果集第一行为酒店 results[0].append(hotel) for i in range(len(places)):

2021-05-29 18:35:01 148

原创 创新实训十六

新增任务:路线规划 在确定酒店位置的前提下,根据酒店所在的位置,利用百度地图API检索周边景点,并根据景点位置以轮图的形式呈现给用户 #以酒店为中心,在酒店与任意景点、任意景点与其相邻景点之间连接路线,这个任务为我的新增任务 目前我考虑的主要实现方法为: 以酒店为中心,计算出酒店到其他各个景点的距离,遍历每一个景点,计算这个景点到其他所有景点的距离,找到最近地点,即为相邻景点。 输入为酒店和景点 输出形式为列表: [[酒店名称,景点1名称,距离,… [景点1名称,酒店名称,距离,景点2名称,距离,… …

2021-05-26 19:27:07 197

原创 创新实训十五

计算用户入住时间 需要根据用户输入的入住时间和离开时间计算出用户入住总晚数,我们规定用户最多可以入住5个月,由于每月的天数不同,并且闰年和非闰年中2月的天数也不同,所以我将所有可能的情况一一列出,并编写代码,如下: def night(checkin_time,checkout_time): nights=0 #先提取出入住和离开的年,月,日 checkin_year=int(checkin_time[0:4]) checkout_year=int(checkout_time

2021-05-23 18:14:03 139

原创 创新实训十四

根据分组结果推荐酒店 我们已经实现了将多个地点分组,现在根据分组结果按照之前预想的算法进行酒店推荐。 具体实现代码如下: def multiple_locations_days(city,place,checkin_time,checkout_time): #计算出入住总晚数 nights=night(checkin_time,checkout_time) #计算每个地点之间的相互距离,得到距离矩阵 #判断是否有两个地点相隔较远,目前以12km为界限 maximum=

2021-05-22 18:23:06 191

原创 创新实训十三

要去的地点多于一个,但是酒店入住日期只有一天 如何根据重叠度推荐酒店? 先得到重叠的酒店:对这些推荐列表逐个比较,并且20名以后的酒店不予比较,得到一个新的列表,列表里是这几个酒店推荐列表的全集,信息包括酒店的基本参数和重叠度,重叠度为出现在这几个推荐列表的次数,根据重叠度大小优先推荐,否则根据综合评分降序推荐。 重点代码如下: #获取这些酒店前15名的全集,共9列,形式为[酒店名称,距离,评分,评论,价格,类型,图片,综合评分,重叠度] overlap_hotels=[] for

2021-05-22 18:17:32 152

原创 创新实训十二

将地点按距离分组 至少有一组地点相隔较远,将其分别放入结果集的前两组,寻找各自最近的点,每组最多有四个点,若分完两组,还有地点没有被分组,从剩下的地点中选出一个作为第三组的第一个点,然后继续寻找最近点,以此类推。 实现代码如下: def divide_group(distance,far,maximum): #至少有一组地点相隔较远,将其分别放入结果集的前两组,寻找各自最近的点,每组最多有四个点 #若分完两组,还有地点没有被分组,从剩下的地点中选出一个作为第三组的第一个点,然后继续寻找最近点

2021-05-20 20:51:38 126

原创 创新实训十一

将地点按距离分组 在选定多地点进行酒店推荐的算法中,若要去的地点多于一个,入住时间多于一天,并且要去的地点相隔较远,那么可以考虑将这些地点分组,每组地点距离较近,且每组地点数量不超过4 考虑实现方法: (1)全组合 由于要去的地点在实际中是十分有限的,一般为个位数,2的10次方为1024,即这些地点所构造出的集合最多只有一千个左右,数量并不算多,所以可以考虑全组合,得到这n个地点的全部非空真子集,计算满足条件的最佳组合,使每个集合中的各个地点之间的距离均不超过最大距离限度(暂定为12km),且最终得到的结果

2021-05-18 20:54:11 292

原创 创新实训十

选定多地点进行酒店推荐的算法 由于现在得不到每个地点的平均游玩时间,所以考虑其他的实现办法。 (1)要去的地点多于一个,但是酒店入住日期只有一天 首先根据根据每一个地点进行推荐,得到一个推荐顺序,然后计算出推荐重叠的酒店,对于排名比较靠前又都出现在每个地点的推荐酒店列表里的酒店,视为优质选择,优先推荐。 如果这几个地点相隔较远,那么在推荐时注明酒店与每个地点的距离,方便用户选择。 (2)要去的地点多于一个,酒店入住日期多于一天 首先根据根据每一个地点进行推荐,得到一个推荐顺序,然后计算出推荐重叠的酒店,对于

2021-05-15 19:27:59 172

原创 创新实训九

选定多地点进行酒店推荐的算法 当用户选定多个要去的地点后,如果能够得到每个地点的平均游玩时间,那么根据平均游玩时间可以得到总的游览时间,可以判断出游览这些地方大概需要几天时间,又已知用户的入住时间,那么综合两者应该推荐合适的酒店,便于用户更好的去到这些地方。 对于一组总游览时间不超过一天的地点,我们首先根据根据每一个地点进行推荐,得到一个推荐顺序,然后计算出推荐重叠的酒店,对于排名比较靠前又都出现在每个地点的推荐酒店列表里的酒店,视为优质选择,优先推荐。 如果总的游览时间多于一天,我们考虑做出更优的推荐,如

2021-05-04 20:37:20 126

原创 创新实训八

逻辑回归(LR) 我们设计的酒店推荐系统在初阶段,数据量和特征量都比较少,所以我考虑采用LR模型 LR模型的优点:可以通过模型的权重大小,解释权重的重要性;同时LR支持增量更新 拟合一个包含距离、评分、评论数和价格四个无交互效应的特征的Logistic回归模型: ln(p/(1-p) = β0 +β1 距离+β2* 评分+β3* 评论数+β4价格 ...

2021-04-21 23:17:22 223

原创 创新实训七

我阅读了一篇美团算法工程师写的文章,我的酒店推荐算法可以借鉴其中的一些做法。 一、样本的筛选 更新权重时,首先进行数据和特征的筛选。我们的目标是优先推荐客户更想要的酒店,那么做出初始推荐后,我们捕获用户的点击行为,有点击的为正样本,无点击的为负样本,同时在训练时对于购买过的样本进行一定程度的加权。 二、优化器的选择 SDG:每次迭代计算Mini-Batch的梯度,然后对参数进行更新 三、损失函数的选择 平方差函数 由于我们的酒店推荐模型可以看做一个线性模型,所以我们选择在线性模型中表现比较好的平方差函数来作

2021-04-18 21:47:05 153

原创 创新实训六

综合评价权重更新的参数优化算法 经过初始权重的设置后,当用户选择了某一地点后,会用初始权重为用户智能推荐酒店,但是由于初始权重的设置个人主观性太大,而且权重的大小对酒店的推荐顺序有很大的影响,为了更好的用户体验,我们必须根据用户的习惯来更新权重,使得做出的推荐更符合用户需求。 我目前初步的考虑是,将用初始权重得到的酒店推荐顺序作为输入,之后捕捉用户的点击习惯,根据用户的点击习惯得到一个新的酒店顺序,用这个顺序作为期望输出,用参数优化算法更新权重。常用的参数优化方法主要包括交叉验证、网格搜索、遗传算法、粒子群

2021-04-18 00:03:10 211

原创 创新实训五

进行综合评价 1、确定评价因素 目前考虑四个评价因素:距离,评分,评论数,价格 2、确定评价因素的权重向量 进行模糊综合评价时,权重的大小会对最终的评价结果产生很大的影响,不同的权重有时会得到完全不同的结果。现在先根据经验确定权重,后续可以采集用户习惯用机器学习的方法调整权重,使结果进一步接近用户的真实需求。 确定的初始权重为0.45(距离),0.3(评分),0.1(评论数),价格(0.15) 3、对每个评价因素进行量化 ...

2021-04-16 23:15:13 285

原创 创新实训四

学习模糊综合评价算法的神经网络实现

2021-04-15 23:36:09 82

原创 创新实训三

综合评价法 考虑赋予各个酒店一个综合评分,这个综合评分是基于酒店到要去地点的距离,评分高低,评论数多少,价格高低这些特征得到的。考虑采用模糊综合评价法。 模糊综合评价法 模糊综合评价法是一种基于模糊数学的综合评价方法。该综合评价法根据模糊数学的隶属度理论把定性评价转化为定量评价,即用模糊数学对受到多种因素制约的事物或对象做出一个总体的评价。它具有结果清晰,系统性强的特点,能较好地解决模糊的、难以量化的问题,适合各种非确定性问题的解决。 为了便于描述,依据模糊数学的基本概念,对模糊综合评价法中的有关术语定义如

2021-04-14 23:16:19 294

原创 创新实训二

对算法的一些思考 选定要去的地点时,进行酒店推荐,假设按照评分高低进行排序,那么不能按照绝对的评分高低进行推荐,因为实际中有些评分很高的酒店距离所选定地点比较远,若推荐这些酒店,虽然评分满足用户需求,但是距离太远显然并不是用户想看到的,所以要综合酒店的其他特征进行综合推荐。 现有的一些酒店订购软件在这方面并没有做得非常完善。比如去哪儿旅行,假设我用我现在所处地点按照评分高低进行筛选酒店,那么它也会优先给我推荐一些十分遥远的距离,直线距离甚至达到了70公里,这类酒店显然并不是我想要的。 现在考虑对酒店的特征进

2021-04-13 22:40:31 167

原创 创新实训一

创新实训一 一、我的任务 用户选定住宿时间(入住时间和离开时间),入住人数(具体人数),酒店的星级或者民宿,选定要去的景点或者商圈,然后根据这些信息推荐酒店,默认按照综合评分排序,用户也可以按照酒店到景点的距离远近、酒店的评分高低、点评数多少、价格高低来对这些酒店进行筛选,而综合评分是根据这些特征对酒店的综合评价。 推荐酒店时会比较多家酒店订购网站上的价格,显示最低价格,点击进入详情页面,可以查看到各大酒店订购网站的具体价格,用户可以在该页面直接进入选中的酒店订购网站进行预订。 二、初步设计算法 由于我的任

2021-04-12 22:15:46 239

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除