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

网站加入站长统计域名查询168

网站加入站长统计,域名查询168,旅游电商网站建设方案模板,产品网络营销全文链接#xff1a;https://tecdat.cn/?p37839 分析师#xff1a;Kefan Yu 在大众旅游蓬勃发展的背景下#xff0c;乡村旅游已成为推动乡村经济、社会和文化发展的关键力量。当前#xff0c;乡村旅游接待设施主要以招待所、小宾馆和农家乐等形式存在。然而#xff0c;一… 全文链接https://tecdat.cn/?p37839 分析师Kefan Yu 在大众旅游蓬勃发展的背景下乡村旅游已成为推动乡村经济、社会和文化发展的关键力量。当前乡村旅游接待设施主要以招待所、小宾馆和农家乐等形式存在。然而一方面这些设施的接待能力有限另一方面为了维护乡村独特的景观特色住宿设施也不宜完全照搬城市酒店的规模和形制点击文末“阅读原文”获取完整代码数据。 民宿作为一种利用自家闲置房屋、以家庭经营为主且能提供多种特色服务的接待设施恰好能满足上述两项需求。 本文包含Python分析Airbnb 数据洞察市场差异、价格因素与旅行价值|附数据代码和房源价格预测模型研究|附数据代码。通过对客户的这些数据的挖掘和研究旨在揭示 Airbnb 房源在时间序列变化、用户评论情感分析以及房源各方面特征可视化等方面的规律为乡村旅游接待设施的发展以及 Airbnb 平台的优化提供有价值的参考依据。同时通过建模与分析过程探索影响房源价格的关键因素进一步提升对房源价格预测的准确性为房东、租客和平台运营者提供决策支持。 Airbnb房屋数据集的房屋现状分析及价格预测 分别针对calendar、reviews和listings三张表查看文末了解数据免费获取方式进行探索性分析。 1.calendar表 时间序列分析 calendar表展示了西雅图2016年1月到2017年1月3818所房子的是否可定状态和每一天的房屋价格通过对每一天的房屋价格取均值以及对每一天房屋可定状态的计数我们可以分别得到价格的时间序列图和每日空闲房屋数量的时间序列图。 从这个图中我们可以看到民宿房屋的价格在7、8月达到了一个高峰可以想见是因为7、8月正值放假外出游玩的时候房屋的价格也相应上涨。于此同时空闲房屋的数量在1月、7月分别有所下降也就是说在这两个时间段订房人数急剧增长。由于空闲房间数量图时间序列特征并不明显我们在此仅对房屋价格进行时间序列分析和预测。由于我们要进行的ARIMA时间序列分析需要的是一个平稳的序列当我们得到的时间序列不平稳时通过做时间序列的差分直到得到一个平稳的时间序列。 这里分别采用了移动平均法和指数平均法进行平滑处理得到下图 从上图可以发现窗口为12的移动平均能较好的剔除年周期性因素而指数平均法是对周期内的数据进行了加权能在一定程度上减小月周期因素但并不能完全剔除如要完全剔除可以进一步进行差分操作。先用pandas将序列差分好然后在对差分好的序列进行ARIMA拟合。 从上面的统计检验结果可以看出经过12阶差分和1阶差分后该序列满足平稳性的要求了。 1.ARMA(0,1)模型即自相关图在滞后1阶之后缩小为0且偏自相关缩小至0则是一个阶数q1的移动平均模型 2. ARMA(7,0)模型即偏自相关图在滞后7阶之后缩小为0且自相关缩小至0则是一个阶层p3的自回归模型 3. ARMA(7,1)模型即使得自相关和偏自相关都缩小至零。则是一个混合模型。 4. ARMA(8,0)模型即偏自相关图在滞后8阶之后缩小为0且自相关缩小至0则是一个阶层p3的自回归模型 目前选择模型常用如下准则 * AIC-2 ln(L) 2 k 中文名字赤池信息量 akaike information criterion * BIC-2 ln(L) ln(n)*k 中文名字贝叶斯信息量 bayesian information criterion * HQ-2 ln(L) ln(ln(n))*k hannan-quinn criterion 以上四个模型得到的AIC、BIC、HQ数值如下    通过比较得到ARMA(8,0)各项数值都最小因此是最佳模型。 通过ARMA(8,0)进行2017年-2018年房屋价格预测得到结果如下 可以看到房屋均价基本在135-140浮动将预测数据与原数据进行对比此处未对原数据进行平稳性处理但是可以看出预测准确性还是比较好的 2.reviews表 文本处理——针对Airbnb房屋评论的情感分析 在listings、calendar和reviews这三张表中含有多个文本型属性但是对最终房屋的价格预测影响最大的还是用户对各房屋的评论内容。所以对reviews表中的comments内容通过情感分析进行量化处理并用于最终的模型建立价格预测。具体过程如下 2.1.文本一级清洗 首先查看reviews表中comments这一属性的缺失值情况在84849条数据中仅有17条评论信息是缺失的占比很小而且作为文本型数据无法进行填补故做删除缺失值处理。 删除后在review这张表中剩余84832条完整评论信息。将comments的类型转变为字符型并利用removewords这一函数去除comments中的标点符号和stopwords中的停用词通过tolower这一函数将所有的评论信息变成小写形式最后输出前五条评论内容进行查看 在利用tolower这一函数时出现了报错 经查看发现comments中的文本内容较脏乱不仅包含英文还包含中文和日文等多种语言但是在84832条评论数据中除英文以外的字符非常少而且一般形式表现为其他语言掺杂在英文中英文仍是每条评论的主体所以将除英文以外以其他语言形式存在的字符作为异常字符进行删除处理。做法是通过removerwords这一函数去除每条comments中除英文大小写和空格以外的字符表现形式是利用正则表达式[^A-Za-z0-9 _] 去除异常字符后再将comments中的内容转变为小写形式并查看前五条评论信息 从以上两次数据对比可以看出小写转换成功。 2.2.文本二级清洗——词频、词云等可视化展示 为了更方便进行可视化内容将review表中的comments内容赋给r这一变量。 a.保留词根 首先进行只保留词根(stemming)处理当同一个单词结尾不同但是却代表相同的含义的时候我们通过只保留这些单词词根的方法来去掉冗余。例如argue, argued, argues, 以及 arguing代表的是相同的含义但是被按照不同的单词来计数因此可以通过只保留词根的方法让他们用一个共同的词根argu代替。 故利用tm_map函数通过stemdocument这一功能保留r中的词根 b.创建单词频率矩阵 利用documenttermmatrix函数建立单词频率矩阵其中每一行代表每一条评论信息每一列代表对应推文中出现的一个单词矩阵中的数值为每个单词在每个观测值中出现的频率(次数)。具体过程和结果如下 由此可见frequencies中包含了84807个观测值和45881个单词。 查看第1-10行矩阵内容 查看出现至少1000次的高频词汇 部分高频词汇 我们可以发现在45881个单词当中只有504个词出现的频率不少于1000次因此我们可以去除一些低频词汇因为这些低频词汇对于模型预测没有较大的帮助且其存在会导致大量的计算进而延长模型运算的时间。 将低频词汇剔除后sparse中只包含了839个观测值。 c.画制词云 首先利用tm包中的VCorpus函数把comments的内容作为R对象、保存在内存中建立动态语料库然后再通过TermDocumentMatrix函数把comments转化为DTM矩阵形式最后利用wordcloud包中的wordcloud函数画制评论的词云图像具体过程和结果如下 词云图像 2.3.情感分析并评分 首先从CSDN网站上下载英文的正负面情感词汇的txt文件导入R中分别命名为negative消极和positive积极。并将negative和positive中的词语加上权重weight设置negative中的每一个词语的权重weight都为-1positive中的权重weight都为1这也意味着最终评分结果越大说明该条评论越积极评分越小说明该条评论越消极。然后再利用cbind函数将negative 和positive通过term这一列名相同的属性合并起来得到posneg这一带有权重的最终情感数据集。 Negative中含有1011条数据和term、weight两个变量positive中含有773条数据和term、weight两个变量posneg中含有1784条数据和term、weight两个变量。 在posneg数据集中建立pn这一空数值型属性表示每条评论文本的情感得分情况。评分过程是利用两个for循环嵌套的形式外面的循环是针对每一条评论信息进行搜索里面的循环表示为针对每一条评论信息将posneg中所有的词语搜索一遍如果词语在评论信息中pn评分则加上相应的weight值若不在pn评分则加上0。具体过程如下 由于是双层嵌套而且数据量较大在经过10个多小时的等待后最终在review表中加上了每条评论的情感分析评分值pn,结果如下 2.4.合并listings表 首先将review表中的评分以listing_id为依据对pn评分进行分类取均值并将id和av(平均评分)保存在变量av中。再利用merge函数以id为依据连接listings和av两张表得到用于最终建立模型的lr数据集。lr中包含3191条数据与最初的listings数据集相比少627条数据说明airbnb网站上的这627个房屋是没有用户对其进行过评论的。 3.listings表——可视化 利用ggplot函数对listings表中的信息进行可视化展示主要从房屋整体评分、房东可信度、房屋情况、地理位置和评论情况五个角度出发探寻房屋各方面信息之间的关系。具体过程和结果如下 3.1.房屋整体评分——主成分分析 主成分PCA分析的一般步骤如下根据变量间的相关性来推导结果。用户可以输入原始数据矩阵或者相关系数矩阵到principal()和fa()函数中进行计算在计算前请确保数据中没有缺失值。 1判断要选择的主成分数目这里不涉及因子分析。 2选择主成分这里不涉及旋转。 3解释结果。 4计算主成分得分。 接下来就对我们处理好的数据进行主成分分析对于3190个房屋我们通过princomp函数得到27个主成分接下来对这些主成分进行筛选。 下图中proportion of variance是它本身对原本所有数据的方差的解释程度你可以理解为这个成分包含了原始数据中12.38995%的信息图中的Loadings那个矩阵就是由相关系数矩阵的特征向量按列组成的比如Comp.1就是y0.103*host\_since -0.103*host\_total\_listings\_count-0.102*property\_type0.226*room\_type-0.298*accommodates-0.343*bathrooms-0.428*bedrooms-0.434*beds-0.298*amenities-0.352*guests\_included-0.156*extra\_people。 接下来根据碎石图确定主成分个数一般选择折线中最陡的作为主成分 根据上图我们可以看到在1.0以上的主成分较多而且图中并没有显示完整所有的主成分于是我们简单地将proportion of variance累计加总超过80%的作为我们需要的主成分经过计算我们保留comp.1-comp.17。 接下来我们利用predict函数计算得到各个样本主成分的数据 那么最终的指标就应该是 a Comp.1 b Comp.2 c Comp.3的形式a、b、c的系数根据方差解释度加权计算。每个主成分的方差解释度就是权重。于是最终得到的结果是0.144685474*comp10.103517783*comp20.088334388*comp30.080439282*comp40.064441851*comp50.059679916*comp60.054120375*comp70.049404508*comp80.047919824*comp90.043365062*comp100.042361952*comp110.042054807*comp120.040463786*comp130.038121588*comp140.036172379*comp150.032646371*comp160.032270655comp17。 我们可以直接用comp1-comp17作为变量组合进行后续的回归等分析也可以直接用上面的式子对房屋状况进行打分分数越高房子的评价也就越好我们对前六所房子的打分如下 3.2. 房东可信度 a.利用变量host\_verifications、host\_response\_rate和host\_is\_superhost三个变量绘制点图host\_verifications作为x轴host\_response\_rate作为y轴点的不同颜色表示为host\_is\_superhost不同的值。 从上图可以看出房东的认证方式越多平均反应速度越快可信度越高而且普遍来看大房东的平均反应速度快于二房东的平均反应速度。 b.房东入驻airbnb年份统计 以对host_since进行年份提取后的变量year作为x轴统计不同年份入住的房东人数并进行对比结果如下 从上图可以看出airbnb的房东入驻人数是在逐年上升的这说明该平台在不断的壮大发展前景和趋势很好。但是增加的幅度却在减小市场竞争压力大在一定意义上提醒着airbnb企业关注房屋资源的饱和度问题。 3.3. 地理位置——地理位置对价格的影响程度 以经度作为x轴维度作为y轴绘制点图在平面图中以点的形式表现房屋的位置信息并通过“colorprice”这一表达式以点的颜色深浅表示price的变化情况结果如下 从上图可以看出房屋主要集中在中间地带而且价格变化并不剧烈一般都在250美元以下。 3.4. 房屋情况 a.针对不同房屋类型、房间类型的频数展示 以property\_type作为x轴对3818个房屋的类型进行频数展示再用不同的颜色表示不同的room\_type房间类型对每个房屋类型中的房间类型进行划分结果如下 从上图可以看出apartment和house的房屋类型占比最大而在不同的房屋类型中房间类型的分布各不相同但entire home/apt和private room的分布最为广泛。 b.房屋类型与价格的关系 以room\_type作为x轴property\_type作为y轴price作为color展示房屋、房间的种类对房屋租赁价格的影响结果如下 虽然价格的变化并不是很明显但从上图仍可以看出不同的房间、房屋种类对房屋价格的影响程度。例如相对来说entire home/apt的房间种类的价格偏高一些Dorm这一房屋类型只包含shared room这一种房间类型而且租赁价格很低。 c.最多最少居住时间和价格 以价格作为x轴房屋的最多、最少居住天数之差作为y轴绘制柱形图探寻不同价格的房屋所允许的居住天数变化范围大小情况结果如下 从上图可以看出价格越高的房屋允许居住天数的变化范围越小价格越低的变化范围越大。这说明有些价格低的房屋可能是以居住时间的灵活性作为竞争优势来吸引用户而价格高的房屋往往是由于自身的房屋条件和质量好所以对居住时间的要求较严格。 d.房屋所含房间数量和设备数量 以amenities电视、空调等设备数量作为x轴acoommodates房屋包含的房间数量作为y轴通过绘制点图探寻两者之间的关系结果如下 从上图可以看出amenities和acoommodates之间呈线性正相关的关系房间的数量越多房屋的设备越齐全符合实际情况。 e.房屋价格的频数统计 以price作为x轴统计这3818个房屋的价格分布情况。结果如下 从上图可以看出price的分布确实以较小数值低价格为主80%以上的房屋价格都在200美元以内。 3.5.评论情况 评论平均评分和价格的关系 通过对reviews表中comment的打分我们得出用户对listings中3818个房屋的平均评分情况——av。以av为x轴price为y轴绘制点图探寻用户评分对于房屋价格的影响结果如下 从上图可以看出用户评分对价格的影响并不大影响更多的可能是用户对于同等价位房屋的选择此外在airbnb的网站上仍存在用户评分很高但是价格并不高的物美价廉的房屋。 五、数据进一步处理 主要针对reviews和listings合并后的lr数据集做进一步的处理和填补为建立最终的预测模型做准备。 1.转换 将分类属性转变为因子型 Lr的28个属性中还包含一些分类属性例如host\_is\_superhost中含有t和f两类利用factor将其转变为因子型再通过as.numeric进行数值化转换最终将分类属性量化成数字形式。由于这些分类属性中所含的类别较少一般2~3类故不需进行亚变量处理。此类变量有is\_location\_exact、host\_identity\_verified、cancellation\_policy和host\_is_superhost。 2.填补 首先因为拿到手的数据集比较脏里面不仅有明显的含有空值的数据还有通过文本显示为空的数据于是我们先将文本型的“NA”、“N/A”统一转化为NA。通过mice包中的md.pattern函数和aggr函数我们可以看到经过变量删除后的缺失值情况 可以看到缺失值大概占一个属性的15%左右这是我们可以接受的而且缺失值集中地分布在几个属性值中我们可以推测这几个属性的数据是一起缺失的具有较高的相关性经过观察我们发现这些一起缺失的属性都跟评论有关或许是因为这些房子刚刚投入Airbnb使用尚未有人居住过。于是我们先对其他属性中零星的缺失值仅缺失1-2条的数据进行简单的删除处理经过此步还有3190条数据。 接下来通过corrplot包对缺失值之间的相关性进行一个分析将lr中的数据根据是否缺失转化为0-1矩阵后在这个矩阵中仅留下含缺失值的列可视化结果如下 通过图形我们可以确切地看到所有关于reviews的数据缺失值的相关性已经高度接近1了但如果采用对所有关于reviews的属性进行补缺或许得到的完整的数据集可信度不高。经过讨论我们决定将这些有关评论的属性进行直接删除因为通过下文的文本挖掘处理我们能直接得到关于评论的一个平均分数。于是在这一步仅对bedroomsbathroomshost\_response\_rate进行缺失值的插补。 对于bedrooms和bathrooms因缺失值较少我们仅进行均值插补处理sub - which(is.na(lr$bathrooms))sub中存储了bathrooms中有缺失的行数lr1存储了bathrooms无缺失值的整个数据集的子集而lr2中存储了仅有缺失值的子集。   通过avg_sales得到的均值对lr2中的缺失值进行填补再将lr1和lr2组合起来得到补全后的数据集对bedrooms的补缺同理。 而对于host\_response\_rate因缺失值高达300余条我们采用mice包中的函数进行多重插补处理。通过mice函数利用平均值插补法生成了五个完整的数据集提取其中的第三个作为我们的最终结果。 六建模与分析过程 1.自相关分析 对最终数据集lrlistings和reviews连接后中的28个属性绘制自相关图结果如下 从上图可以看出accommodates和amenities的相关性很大number\_of\_reviews和reviews\_per\_month的相关性很大,所以在对price进行影响因素分析和预测时可能存在自相关问题。 点击标题查阅往期内容 PYTHON用户流失数据挖掘建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像 左右滑动查看更多 01 02 03 04 2.影响因素分析 采用线性回归的方式分析l中各变量对price的影响并分别选取影响程度大的变量组成新的数据集l用于对两者模型的建立和预测。 对price影响大的变量有host\_is\_superhost、longitude、property\_type、room\_type、bathrooms、bedrooms、beds、guests\_included、reviews\_per_month这九个变量。整个线性回归模型的R^2为0.5622调整后为0.5587并不是很大。此外在对price的影响自变量进行挑选过程中剔除掉了自相关性很强的变量正好解决了上述的自相关问题。 3.划分训练集和测试集 首先进行训练集和测试集的划分以73的比例将数据集listings1分为训练集train和测试集test。 4.建立模型 Price属于连续型数值变量不能够像分类型变量一样简单地通过table这一操作才评估模型的好坏。因此在评估price预测模型时我们选择用R^2和MSE来评估具体公式如下                    (MSE)                                     (R^2) 4.1.回归分析 由于price是连续型变量我们采用线性回归模型进行分析通过lm函数对测试集进行预测。 调整后的R^20,5534说明线性回归模型的拟合效果一般。 4.2.lasso分析 Lasso回归又称为套索回归是Robert Tibshirani于1996年提出的一种新的变量选择技术。Lasso是一种收缩估计方法其基本思想是在回归系数的绝对值之和小于一个常数的约束条件下使残差平方和最小化从而能够产生某些严格等于0的回归系数进一步得到可以解释的模型。R语言中有多个包可以实现Lasso回归这里使用lars包实现。 可以看到lasso回归得到的模型拟合度为0.553较低。框中部分为自变量加入模型的顺序下图为这个过程的可视化展示。从这个过程中我们发现很有意思的一点是卧室的数量其次是床的数量对于房屋的价格有着较高的影响但是房东本人的一些数据反而对房屋价格影响不大也就是说一个房屋的价格还是更多收到房屋本身的影响而不怎么受到房东个人品质等的影响不过这个结果也是情理之中的。 4.3.随机森林 考虑采用随机森林模型对price这一连续型变量进行预测。 首先确定随机森林中包含的最优决策树数量——ntree 根据上图中的结果显示在决策树的数量等于200时曲线稍微出现波动200过后趋于平缓所以选择200作为ntree的值。 建立模型并查看模型变量的重要性以及模型的R^2和MSE值 结果显示随机森林模型的R^2为0.615虽然相比线性回归模型R^2更大一些但拟合效果仍不是很好。随机森林在解决回归问题时确实没有像分类时表现的那么好可能因为它并不能给出一个连续的输出。当进行回归时随机森林不能够做出超越训练集数据范围的预测这可能导致在某些特定噪声的数据进行建模时出现过度拟合。 Python分析Airbnb 数据洞察市场差异、价格因素与旅行价值|附数据代码 接下来通过对 Airbnb 数据的深入分析旨在探讨不同城市间 Airbnb 市场的差异、影响价格的主要因素、评价数据中的趋势和季节性以及哪个城市提供更高的旅行价值。使用 Python 编程语言和相关数据分析库对大量的 Airbnb 房源和评价数据进行处理和可视化以得出有价值的结论。 随着共享经济的兴起Airbnb 作为全球知名的短租平台在旅游和住宿领域发挥着重要作用。了解不同城市的 Airbnb 市场特点、价格影响因素以及评价趋势对于旅行者、房东和平台运营者都具有重要意义。本文将通过对 Airbnb 数据的详细分析回答以下四个关键问题 不同城市的 Airbnb 市场有哪些主要差异哪些属性对价格影响最大能否在评价数据中识别出趋势或季节性哪个城市提供更好的旅行价值 数据来源与处理 一数据 数据涵盖了多个城市的 Airbnb 房源信息和用户评价。 二数据处理步骤 导入库首先导入必要的 Python 库包括 numpy、pandas、datetime、matplotlib.pyplot 和 seaborn 等用于数据处理、分析和可视化。 import numpy as npimport pandas as pdimport datetime as dtimport matplotlib.pyplot as pltimport seaborn as sns 加载数据集使用 pandas 库读取房源列表和评价数据文件设置适当的编码和内存参数以确保数据能够正确加载。 # 加载房源数据集listings  pd.read\_csv(reviews/Airbnb Data/Listings.csv, encodinglatin, low\_memoryFalse)# 加载评价数据集reviews  pd.read_csv(/ngs-reviews/Airbnb Data/Reviews.csv) 数据类型转换和内存优化检查房源数据的信息确定数据类型和内存使用情况。将某些列的数据类型转换为分类数据类型以减少内存占用。 # 查看房源数据信息listings.info()# 将特定列转换为分类数据类型cat\_cols  \[host\_is\_superhost, host\_has\_profile\_pic, host\_identity\_verified, neighbourhood, district, city, property\_type, room\_type, instant\_bookable\]listings\[cat\_cols\]  listings\[cat_cols\].astype(category)# 再次查看房源数据信息listings.info() 检查重复值和空值检查数据中是否存在重复行和空值。确保数据的完整性和准确性以便进行后续分析。 # 检查重复行duplicates  listings\[listings.duplicated()\]# 检查特定列中的空值check\_nulls  \[listing\_id, name, host\_id, host\_since, host\_location,host\_response\_time, host\_response\_rate, host\_acceptance\_rate,host\_is\_superhost, host\_total\_listings\_count,host\_has\_profile\_pic, host\_identity\_verified, neighbourhood,district, city, latitude, longitude, property\_type,room\_type, accommodates, bedrooms, amenities, price,minimum\_nights, maximum\_nights, review\_scores\_rating,review\_scores\_accuracy, review\_scores\_cleanliness,review\_scores\_checkin, review\_scores\_communication,review\_scores\_location, review\_scores\_value, instant\_bookable\]null\_data  listings\[listings\[check\_nulls\].isnull().all(axis  1)\] 日期列处理将房源数据中的 host_since 列转换为日期时间类型并添加一个新的 year_month 列用于后续的时间序列分析。 # 将 host\_since 列转换为日期时间类型listings\[host\_since\]  pd.to\_datetime(listings\[host\_since\])# 添加 year\_month 列listings\[year\_month\]  listings\[host\_since\].dt.to\_period(M) 数据合并将房源数据和评价数据按照 listing_id 进行合并以便进行综合分析。 # 合并房源和评价数据df   listings.merge(reviews, how  inner, on  listing\_id)# 添加月份列df\[month\]  pd.to\_datetime(df\[date\]).dt.monthdf.info() 问题分析与结果 一不同城市的 Airbnb 市场差异 分析方法通过对不同城市的房源按照是否可即时预订进行分组计数并绘制柱状图直观地展示不同城市之间的差异。 # 按城市分组统计即时预订房源数量并排序city\_instantbookable  listings.groupby(city)\[instant\_bookable\].count().sort\_values(ascendingFalse)print(city\_instantbookable)# 绘制柱状图plt.figure(figsize(15,8))city\_instantbookable.plot(kindbar, color#570eab)plt.title(Number of Listings per City by Instant Bookable)plt.xlabel(City)plt.ylabel(Number of Listings)plt.xticks(rotation45, haright)for i, v in enumerate(city\_instantbookable):plt.text(i, v, str(v), hacenter, vabottom)plt.show() 结果解读巴黎的即时预订房源数量最多达到 64690 个而香港的即时预订房源数量最少为 7087 个。这表明巴黎在 Airbnb 市场上的活跃度较高而香港的市场相对较小。 二影响价格的因素 分析方法首先确定与价格相关的数值型列创建新的数据框。然后计算这些列与价格列之间的相关性矩阵并对矩阵进行排序找出与价格相关性最高的属性。同时绘制热力图直观地展示各个属性与价格之间的相关性。 # 创建数值型列列表numerics  \[accommodates, bedrooms, minimum\_nights, maximum\_nights,review\_scores\_rating,review\_scores\_accuracy, review\_scores\_cleanliness, review\_scores\_checkin,review\_scores\_communication, review\_scores\_location, review\_scores\_value\]# 创建新的数据框numeric\_df  listings\[numerics  \[price\]\]# 计算相关性矩阵correlation\_matrix  numeric\_df.corr()# 按价格相关性排序price\_correlation  correlation\_matrix\[price\].sort\_values(ascendingFalse)print(price\_correlation)# 绘制热力图plt.figure(figsize(10,8))sns.heatmap(correlation\_matrix, annotTrue, cmapcoolwarm, fmt.2f)plt.title(Attributes Correlation with Price)plt.show() 结果解读从相关性矩阵可以看出评价分数中的清洁度、可容纳人数和卧室数量与价格的相关性较高。这表明这些因素对 Airbnb 房源的价格有较大的影响。 三评价数据中的趋势和季节性 分析方法首先统计每个月加入 Airbnb 的房东数量绘制时间序列图观察房东加入的趋势。然后统计每天的预订数量并按月份绘制预订数量的折线图分析预订的季节性。 # 统计每个月加入的房东数量hosts\_per\_month  df\[year\_month\].value\_counts().sort\_index()# 绘制房东加入趋势图plt.figure(figsize(10,6))hosts\_per\_month.plot(kindline, marker., color#051399)plt.title(Number of Hosts Joined Airbnb Overtime)plt.xlabel(Year-Month)plt.ylabel(Number of Hosts Joined)plt.xticks(rotation45)plt.grid(True)plt.show()# 统计每天的预订数量datewise\_bookings  df\[date\].value\_counts().sort\_values(ascendingFalse)# 按月份绘制预订数量折线图df.groupby(month).agg(month).count().to_frame().plot(kindline, figsize(15,8), linewidth2, markero, color#e69305)plt.title(Montly Trend of Airbnb Bookings)plt.xlabel(Months)plt.ylabel(No: of Bookings)plt.xticks(range(1,13))plt.show() 结果解读从房东加入趋势图可以看出2015 年和 2017 年有大量房东加入 Airbnb但在 2017 年出现了下降趋势。从预订数量折线图可以看出9 月和 10 月的预订数量较多。 四哪个城市提供更好的旅行价值 分析方法计算每个城市的平均住宿价格绘制柱状图比较不同城市的价格水平。 # 计算每个城市的平均价格avg\_price\_city  listings.groupby(city)\[price\].mean().sort\_values()print(avg\_price\_city)# 绘制平均价格柱状图plt.figure(figsize(15,8))plt.bar(avg\_price\_city.index, avg\_price_city.values)plt.title(Average Accomodation Price of Airbnb in Each City)plt.ylabel(Average Price of Accomodation)plt.xlabel(City)plt.show() 结果解读开普敦的平均住宿价格最高而罗马的平均住宿价格最低。因此罗马提供了更好的旅行价值。 评价分数分布与超级房东状态分析 首先从listings_table表中选择与评价分数相关的列和房东是否为超级房东的列创建Q3_df数据框。 然后使用plotly.graph_objects和matplotlib.pyplot库分别创建子图和直方图展示不同超级房东状态下各评价分数的百分比分布。 review\_scores\_columns  \[i for i in listings\_df.columns if review\_score in i\]print(review\_scores\_columns)Q3\_df  duckdb.sql(SELECThost\_is\_superhost,review\_scores\_rating as review\_scores\_rating,review\_scores\_accuracy,review\_scores\_cleanliness,review\_scores\_checkin,review\_scores\_communication,review\_scores\_location,review\_scores\_valueFROMlistings\_table).to\_df()# 使用 plotly 创建子图fig  make\_subplots(rowslen(review\_scores\_columns),cols2,subplot\_titles(False, True),vertical\_spacing0.05)# 使用 matplotlib 创建直方图fig, axes  plt.subplots(nrowslen(review\_scores\_columns), ncols2, figsize(10, 20)) 香港地区房源分析 通过查询listings_table表筛选出城市为香港Hong Kong的房源数据创建hong_kong_listings_df数据框。 使用geopandas库将数据转换为地理数据框并绘制香港地区的房源分布地图同时添加底图。 使用folium库创建香港地区的交互式地图展示房源位置。 duckdb.sql(SELECT\*FROMlistings\_tableWHERElower(city) like %hong%limit 2).to\_df()hong\_kong\_listings\_df  duckdb.sql(SELECT\*FROMlistings\_tableWHEREcity  Hong Kong).to\_df()# 转换为地理数据框并绘制地图gdf  gpd.GeoDataFrame(hong\_kong\_listings\_df, geometrygpd.points\_from\_xy(hong\_kong\_listings\_df.longitude, hong\_kong\_listings\_df.latitude))gdf.crs  EPSG:4326fig, ax  plt.subplots(figsize(10, 10))gdf.plot(axax, colorblue, markero, markersize10)try:ctx.add\_basemap(ax, crsgdf.crs.to\_string(), sourcectx.providers.Stamen.Terrain)except AttributeError:ctx.add\_basemap(ax, crsgdf.crs.to\_string(), sourcectx.providers.OpenStreetMap.Mapnik)ax.set\_xlim(113.8, 114.4)ax.set\_ylim(22.15, 22.6)ax.set\_title(Points over Hong Kong Map)ax.axis(off)plt.show()# 创建交互式地图map\_hk  folium.Map(location\[22.3193, 114.1694\],zoom\_start12,tileshttps://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png,attrMap data © OpenStreetData contributors)for \_, row in hong\_kong\_listings\_df.iterrows():folium.CircleMarker(location\[row\[latitude\], row\[longitude\]\],radius5,colorblue,fillTrue,fill\_colorblue,fill\_opacity0.7,).add\_to(map\_hk)map\_hk.save(HongKongMap.html)map_hk 房源价格预测模型研究|附数据代码 随着共享经济的快速发展Airbnb 作为全球知名的短租平台其房源价格的合理预测对于房东制定价格策略、租客选择合适房源以及平台的运营管理都具有重要意义。通过对 Airbnb 房源数据的深入分析构建不同的回归模型以提高对房源价格预测的准确性。 数据来源与预处理 数据来源数据来源于../data/listings_cleaned.csv文件以房源的唯一标识id作为索引列。数据预处理 删除列确定要删除的列如security_deposit、availability_365、maximum_minimum_nights、minimum_maximum_nights等通过以下代码实现删除操作 to\_drop  \[security\_deposit,availability\_365,maximum\_minimum\_nights,minimum\_maximum\_nights\]data  data.drop(to\_drop,axis1) 数据标准化使用StandardScaler对数据进行标准化处理使不同特征具有相同的尺度。例如 scaler  StandardScaler()X\_scaled  scaler.fit\_transform(X)y\_scaled  scaler.fit\_transform(y.values.reshape(-1,1)) 数据集划分将数据划分为训练集和测试集使用train_test_split函数设置随机种子为 0测试集比例为 0.25。代码如下 X\_train, X\_test, y\_train, y\_test  train\_test\_split(X\_scaled,y\_scaled, random\_state0,test\_size  0.25) 回归模型构建与评估 线性回归 使用LinearRegression构建线性回归模型并在训练集上进行训练然后在训练集和测试集上分别进行预测。通过计算r2_score评估模型性能。代码如下 linreg  LinearRegression()linreg.fit(X\_scaled,y\_scaled)y\_train\_pred  linreg.predict(X\_train)y\_test\_pred  linreg.predict(X\_test)print(\\nTraining r2:, round(r2\_score(y\_train, y\_train\_pred),4))print(Validation r2:, round(r2\_score(y\_test, y\_test\_pred),4)) 结果显示训练集和验证集的r2值分别为一定数值表明线性回归模型在一定程度上能够解释房源价格的变化。 Lasso 回归 通过LassoCV进行 Lasso 回归设置不同的alpha值范围进行交叉验证找到最佳的alpha值。 alphas  10**np.linspace(-2,4,200)lasso  LassoCV(alphasalphas,cv10).fit(X\_train,y\_train.ravel())print(Score without interactions: {:.4f}.format(lasso.score(X\_test, y\_test)))print(Best alpha value: {:.3f}.format(lasso.alpha_)) 还绘制了 LASSO 路径图展示系数随正则化程度的变化。 alphas, _, coefs  lars\_path(X\_train, y_train.ravel(), methodlasso)xx  np.sum(np.abs(coefs.T), axis1)xx / xx\[-1\]plt.figure(figsize(12,8))plt.plot(xx, coefs.T)ymin, ymax  plt.ylim()plt.vlines(xx, ymin, ymax, linestyledashed)plt.xlabel(|coef| / max|coef|)plt.ylabel(Coefficients)plt.title(LASSO Path)plt.axis(tight)plt.legend(X.columns,loc  best)plt.show() 结果表明 Lasso 回归在一定程度上能够进行特征选择提高模型的解释性。 带有多项式特征的回归 分别构建带有多项式特征的 Lasso 回归和 Ridge 回归模型。首先使用PolynomialFeatures生成多项式特征然后分别使用LassoCV和RidgeCV进行回归。 Ridge 回归 使用RidgeCV进行 Ridge 回归设置不同的alpha值范围进行交叉验证。代码如下 ridge  RidgeCV(normalizeFalse,alphasalphas,cv10).fit(X\_train, y\_train)print(R^2 Score: {:.4f}.format(ridge.score(X\_test, y\_test)))print(Best alpha value: {:.3f}.format(ridge.alpha_)) 结果显示 Ridge 回归也能够在一定程度上提高模型的性能。 带有多项式特征的回归 分别构建带有多项式特征的 Lasso 回归和 Ridge 回归模型。首先使用PolynomialFeatures生成多项式特征然后分别使用LassoCV和RidgeCV进行回归。代码如下 poly  PolynomialFeatures(degree2).fit(X\_train)X\_train\_poly  poly.transform(X\_train)X\_test\_poly  poly.transform(X\_test)alphas  10\*\*np.linspace(-2,2,100)lasso  LassoCV(alphasalphas,cv5,tol0.5).fit(X\_train\_poly, y\_train.ravel())y\_train\_pred  lasso.predict(X\_train\_poly)y\_test\_pred  lasso.predict(X\_test\_poly)print(Lasso Regression with Polynomial Features)print(\\nTraining r2:, round(r2\_score(y\_train, y\_train\_pred),4))print(Validation r2:, round(r2\_score(y\_test, y\_test\_pred),4))poly  PolynomialFeatures(degree2).fit(X\_train)X\_train\_poly  poly.transform(X\_train)X\_test\_poly  poly.transform(X\_test)alphas  10\*\*np.linspace(-2,2,100)ridge  RidgeCV(normalizeTrue,alphasalphas,cv5,).fit(X\_train\_poly, y\_train.ravel())y\_train\_pred  ridge.predict(X\_train\_poly)y\_test\_pred  ridge.predict(X\_test\_poly)print(Ridge Regression with Polynomial Features)print(\\nTraining r2:, round(r2\_score(y\_train, y\_train\_pred),4))print(Validation r2:, round(r2\_score(y\_test, y\_test\_pred),4)) 带有多项式特征的回归模型在一定程度上可以提高模型的拟合能力但也可能存在过拟合的风险。 XGBoost 使用xgb.XGBRegressor构建 XGBoost 回归模型设置目标函数为reg:squarederror学习率、最大深度等参数。代码如下 xg\_reg  xgb.XGBRegressor(objective reg:squarederror, learning\_rate  0.15, max\_depth  4, boostergbtree)xg\_reg.fit(X\_train,y\_train)y\_train\_pred  xg\_reg.predict(X\_train)y\_test\_pred  xg\_reg.predict(X\_test)print(XGBoost)print(\\nTraining r2:, round(r2\_score(y\_train, y\_train\_pred),4))print(Validation r2:, round(r2\_score(y\_test, y\_test\_pred),4))fig, ax  plt.subplots(figsize(14, 8))plot\_importance(xg\_reg, axax) XGBoost 模型在训练集和测试集上的表现相对较好通过绘制特征重要性图可以了解各个特征对房源价格的影响程度。 结论 通过对 Airbnb 房源和评价数据的分析我们得出以下结论 巴黎和纽约的 Airbnb 预订数量最多香港的预订数量最少。Airbnb 的价格受到评价分数、清洁度、可容纳人数和卧室数量等因素的影响。2015 年至 2017 年期间加入 Airbnb 的房东数量大幅增加但在 2017 年出现了下降趋势。9 月和 10 月是 Airbnb 预订的高峰期。罗马提供了更好的旅行价值因为其平均住宿价格相对较低而开普敦的平均住宿价格最高。洗衣机、空调和洗发水是最热门的房源设施。不同城市的房东位置信息中包含城市名称的比例有所不同纽约、巴黎等城市的比例较高。超级房东在评价分数方面表现相对较好不同超级房东状态下的评价分数分布存在差异。超级房东的即时预订比例相对较高。香港地区的房源分布可以通过地理数据框和交互式地图进行直观展示。 通过对多种回归模型的构建和评估我们可以得出以下结论 线性回归、Lasso 回归、Ridge 回归等传统线性模型在一定程度上能够解释 Airbnb 房源价格的变化但性能相对有限。带有多项式特征的回归模型可以提高模型的拟合能力但需要注意过拟合的风险。XGBoost 模型在训练集和测试集上的表现相对较好具有较高的预测准确性和泛化能力。 分析师 在此对Kefan Yu对本文所作的贡献表示诚挚感谢她在上海财经大学完成了信息管理与信息系统专业的学位专注于数据采集、数据清洗和深度学习领域。擅长 R 语言、Python。 数据获取 在公众号后台回复“airbnb数据”可免费获取完整数据。 本文中分析的数据、代码分享到会员群扫描下面二维码即可加群  资料获取 在公众号后台回复“领资料”可免费获取数据分析、机器学习、深度学习等学习资料。 点击文末“阅读原文” 获取全文完整代码数据资料。 本文选自《Python、R语言Lasso、Ridge岭回归、XGBoost分析Airbnb房屋数据旅游市场差异、价格预测|数据分享》。 点击标题查阅往期内容 Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析 PYTHON集成机器学习用ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化 R语言集成模型提升树boosting、随机森林、约束最小二乘法加权平均模型融合分析时间序列数据 Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析 R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化 R语言基于树的方法决策树随机森林Bagging增强树 R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测 spss modeler用决策树神经网络预测ST的股票 R语言中使用线性模型、回归决策树自动组合特征因子水平 R语言中自编基尼系数的CART回归决策树的实现 R语言用rlesvm和rpart决策树进行时间序列预测 python在Scikit-learn中用决策树和随机森林预测NBA获胜者 python中使用scikit-learn和pandas决策树进行iris鸢尾花数据分类建模和交叉验证 R语言里的非线性模型多项式回归、局部样条、平滑样条、 广义相加模型GAM分析 R语言用标准最小二乘OLS广义相加模型GAM 样条函数进行逻辑回归LOGISTIC分类 R语言ISLR工资数据进行多项式回归和样条回归分析 R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型 R语言用泊松Poisson回归、GAM样条曲线模型预测骑自行车者的数量 R语言分位数回归、GAM样条曲线、指数平滑和SARIMA对电力负荷时间序列预测 R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化 如何用R语言在机器学习中建立集成模型 R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测 在python 深度学习Keras中计算神经网络集成模型 R语言ARIMA集成模型预测时间序列分析 R语言基于Bagging分类的逻辑回归(Logistic Regression)、决策树、森林分析心脏病患者 R语言基于树的方法决策树随机森林Bagging增强树 R语言基于Bootstrap的线性回归预测置信区间估计方法 R语言使用bootstrap和增量法计算广义线性模型GLM预测置信区间 R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化 Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析 R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析 R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化 Matlab建立SVMKNN和朴素贝叶斯模型分类绘制ROC曲线 matlab使用分位数随机森林QRF回归树检测异常值
http://www.eeditor.cn/news/124446/

相关文章:

  • 做多语言网站不会翻译怎么办wordpress模版头部文件
  • 石家庄做网站排名淘宝指数查询
  • 邢台手机网站建设网站搬家到Wordpress
  • 网站建设 技术软件开发工程师岗位说明
  • 自己做一网站wordpress上传视频教程
  • 网站公众平台建设方案wordpress4.95中文版
  • 帝国cms添加网站地图制作图片的ai
  • 做网站北京系统开发方案设计(模板) 免费下载
  • 查询网站怎么做专注外贸建站
  • 中国建设银行官网站大同深圳高端企业网站建设公司
  • 昆明好的网站开发公司精品网站建设费用 干净磐石网络
  • 做电商网站的设计思路有什么望城区城市建设投资集团门户网站
  • 深圳网站建设公司企业php网站建设案例教程视频教程
  • 网站扁平化设计理念wordpress上站工具
  • 高校网站建设滞后微信点餐小程序怎么制作
  • 广州南沙建设交通网站六安火车站网站
  • 深圳市罗湖网站建设品牌标志
  • 免费的网站登录模板下载做网站流程图
  • 建立网站需要什么软件网站说服力-营销型网站策划
  • 维护公司网站建设企业网站建设的类型主要有
  • 合肥网站建设求职简历注册公司多少钱流程及费用
  • 网站数据模版品牌策划 品牌年度服务
  • 用wp做网站备案做国外家具贸易的网站
  • 网站首页怎么做全屏swf好业宝微商城
  • 公司官方网站建设制作网站软件
  • 韩国风格网站php源码东莞短视频推广是什么
  • 网站建设安全技术方面wordpress安全登录插件下载
  • 河南省鹤壁市住房和城乡建设局网站吉林建设厅官方网站
  • linux创建网站ac域名网站
  • 网站建设工作室wp主题模板平面设计软件下载安装