杭州 网站建设公司金山网站建设公司

张小明 2026/1/19 17:40:34
杭州 网站建设公司,金山网站建设公司,做视频用的网站,通用网址查询网站1 前言 #x1f525;这两年开始毕业设计和毕业答辩的要求和难度不断提升#xff0c;传统的毕设题目缺少创新和亮点#xff0c;往往达不到毕业答辩的要求#xff0c;这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。并且很难找到完整的毕设参考学习资料。 …1 前言这两年开始毕业设计和毕业答辩的要求和难度不断提升传统的毕设题目缺少创新和亮点往往达不到毕业答辩的要求这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。并且很难找到完整的毕设参考学习资料。为了大家能够顺利以及最少的精力通过毕设学长分享优质毕业设计项目提供大家参考学习今天要分享的是基于大数据招聘岗位数据分析与可视化系统学长这里给一个题目综合评分(每项满分5分)难度系数3分工作量3分创新点5分选题指导, 项目分享见文末1 课题背景首先通过爬虫采集链家网上所有二手房的房源数据并对采集到的数据进行清洗然后对清洗后的数据进行可视化分析探索隐藏在大量数据背后的规律最后采用一个聚类算法对所有二手房数据进行聚类分析并根据聚类分析的结果将这些房源大致分类以对所有数据的概括总结。通过上述分析我们可以了解到目前市面上二手房各项基本特征及房源分布情况帮助我们进行购房决策。2 实现效果整体数据文件词云各区域二手房房源数量折线图二手房房屋用途水平柱状图二手房基本信息可视化分析各区域二手房平均单价柱状图各区域二手房单价和总价箱线图二手房单价最高Top20二手房单价和总价热力图二手房单价热力图二手房总价小于200万的分布图二手房建筑面积分析二手房建筑面积分布区间柱状图二手房房屋属性可视化分析二手房房屋户型占比情况从二手房房屋户型饼状图中可以看出2室1厅与2室2厅作为标准配置一共占比接近一半。其中3室2厅和3室1厅的房源也占比不少其他房屋户型的房源占比就比较少了。二手房房屋装修情况二手房房屋朝向分布情况二手房建筑类型占比情况3 数据采集该部分通过网络爬虫程序抓取链家网上所有二手房的数据收集原始数据作为整个数据分析的基石。链家网网站结构分析链家网二手房主页界面如下图主页上面红色方框位置显示目前二手房在售房源的各区域位置名称中间红色方框位置显示了房源的总数量下面红色方框显示了二手房房源信息缩略图该红色方框区域包含了二手房房源页面的URL地址标签。图2下面红色方框显示了二手房主页上房源的页数。链家网二手房主页截图上半部分二手房房源信息页面如下图。我们需要采集的目标数据就在该页面包括基本信息、房屋属性和交易属性三大类。各类信息包括的数据项如下1基本信息小区名称、所在区域、总价、单价。2房屋属性房屋户型、所在楼层、建筑面积、户型结构、套内面积、建筑类型、房屋朝向、建筑结构、装修情况、梯户比例、配备电梯、产权年限。3交易属性挂牌时间、交易权属、上次交易、房屋用途、房屋年限、产权所属、抵押信息、房本备件。网络爬虫程序关键问题说明1问题1链家网二手房主页最多只显示100页的房源数据所以在收集二手房房源信息页面URL地址时会收集不全导致最后只能采集到部分数据。解决措施将所有二手房数据分区域地进行爬取100页最多能够显示3000套房该区域房源少于3000套时可以直接爬取如果该区域房源超过3000套可以再分成更小的区域。2问题2爬虫程序如果运行过快会在采集到两、三千条数据时触发链家网的反爬虫机制所有的请求会被重定向到链家的人机鉴定页面从而会导致后面的爬取失败。解决措施①为程序中每次http请求构造header并且每次变换http请求header信息头中USER_AGENTS数据项的值让请求信息看起来像是从不同浏览器发出的访问请求。②爬虫程序每处理完一次http请求和响应后随机睡眠1-3秒每请求2500次后程序睡眠20分钟控制程序的请求速度。4 数据清洗对于爬虫程序采集得到的数据并不能直接分析需要先去掉一些“脏”数据修正一些错误数据统一所有数据字段的格式将这些零散的数据规整成统一的结构化数据。原始数据主要需要清洗的部分主要需要清洗的数据部分如下1将杂乱的记录的数据项对齐2清洗一些数据项格式3缺失值处理3.2.3 数据清洗结果数据清洗前原始数据如下图清洗后的数据如下图可以看出清洗后数据已经规整了许多。5 数据聚类分析该阶段采用聚类算法中的k-means算法对所有二手房数据进行聚类分析根据聚类的结果和经验将这些房源大致分类已达到对数据概括总结的目的。在聚类过程中我们选择了面积、总价和单价这三个数值型变量作为样本点的聚类属性。k-means算法原理基本原理k-Means算法是一种使用最普遍的聚类算法它是一种无监督学习算法目的是将相似的对象归到同一个簇中。簇内的对象越相似聚类的效果就越好。该算法不适合处理离散型属性但对于连续型属性具有较好的聚类效果。聚类效果判定标准使各个样本点与所在簇的质心的误差平方和达到最小这是评价k-means算法最后聚类效果的评价标准。算法实现步骤1选定k值2创建k个点作为k个簇的起始质心。3分别计算剩下的元素到k个簇的质心的距离将这些元素分别划归到距离最小的簇。4根据聚类结果重新计算k个簇各自的新的质心即取簇中全部元素各自维度下的算术平均值。5将全部元素按照新的质心重新聚类。6重复第5步直到聚类结果不再变化。7最后输出聚类结果。算法缺点虽然K-Means算法原理简单但是有自身的缺陷1聚类的簇数k值需在聚类前给出但在很多时候中k值的选定是十分难以估计的很多情况我们聚类前并不清楚给出的数据集应当分成多少类才最恰当。2k-means需要人为地确定初始质心不一样的初始质心可能会得出差别很大的聚类结果无法保证k-means算法收敛于全局最优解。3对离群点敏感。4结果不稳定受输入顺序影响。5时间复杂度高O(nkt)其中n是对象总数k是簇数t是迭代次数。算法实现关键问题说明K值的选定说明根据聚类原则组内差距要小组间差距要大。我们先算出不同k值下各个SSE(Sum ofsquarederrors)值然后绘制出折线图来比较从中选定最优解。从图中我们可以看出k值到达5以后SSE变化趋于平缓所以我们选定5作为k值。初始的K个质心选定说明初始的k个质心选定是采用的随机法。从各列数值最大值和最小值中间按正太分布随机选取k个质心。关于离群点离群点就是远离整体的非常异常、非常特殊的数据点。因为k-means算法对离群点十分敏感所以在聚类之前应该将这些“极大”、“极小”之类的离群数据都去掉否则会对于聚类的结果有影响。离群点的判定标准是根据前面数据可视化分析过程的散点图和箱线图进行判定。根据散点图和箱线图需要去除离散值的范围如下1单价基本都在100000以内没有特别的异常值。2总价基本都集中在3000以内这里我们需要去除3000外的异常值。3建筑面积基本都集中在500以内这里我们需要去除500外的异常值。数据的标准化因为总价的单位为万元单价的单位为元/平米建筑面积的单位为平米所以数据点计算出欧几里德距离的单位是没有意义的。同时总价都是3000以内的数建筑面积都是500以内的数但单价基本都是20000以上的数在计算距离时单价起到的作用就比总价大总价和单价的作用都远大于建筑面积这样聚类出来的结果是有问题的。这样的情况下我们需要将数据标准化即将数据按比例缩放使之都落入一个特定区间内。去除数据的单位限制将其转化为无量纲的纯数值便于不同单位或量级的指标能够进行计算和比较。我们将单价、总价和面积都映射到500因为面积本身就都在500以内不要特别处理。单价在计算距离时需要先乘以映射比例0.005总价需要乘以映射比例0.16。进行数据标准化前和进行数据标准化后的聚类效果对比如下图32、图33是没有数据标准化前的聚类效果散点图图34、图35是数据标准化后的聚类效果散点图。数据标准化前的单价与建筑面积聚类效果散点图聚类结果分析聚类结果如下1聚类结果统计信息如下2聚类后的单价与建筑面积散点图和总价与建筑面积散点图。3聚类结果分组0、1、2、3、4的区域分布图如下实例。聚类结果分组0的区域分布图如下6 部分核心代码# -*- coding: utf-8 -*- Created on Tue Feb 23 10:09:15 2016 K-means cluster author: liudiwei importnumpyasnpclassKMeansClassifier():this is a k-means classifierdef__init__(self,k3,initCentrandom,max_iter5000):构造函数初始化相关属性self._kk self._initCentinitCent#初始中心self._max_itermax_iter#最大迭代#一个m*2的二维矩阵矩阵第一列存储样本点所属的族的索引值#第二列存储该点与所属族的质心的平方误差self._clusterAssmentNone#样本点聚类结结构矩阵self._labelsNoneself._sseNone#SSESum of squared errors平方误差和def_calEDist(self,arrA,arrB): 功能欧拉距离距离计算 输入两个一维数组 arrA_temparrA.copy()arrB_temparrB.copy()arrA_temp[0]arrA_temp[0]*0.16arrA_temp[1]arrA_temp[1]*0.005arrB_temp[0]arrB_temp[0]*0.16arrB_temp[1]arrB_temp[1]*0.005returnnp.math.sqrt(sum(np.power(arrA_temp-arrB_temp,2)))def_calMDist(self,arrA,arrB): 功能曼哈顿距离距离计算 输入两个一维数组 returnsum(np.abs(arrA-arrB))def_randCent(self,data_X,k): 功能随机选取k个质心 输出centroids #返回一个m*n的质心矩阵 ndata_X.shape[1]-3#获取特征值的维数(要删除一个用于标记的id列和经纬度值)centroidsnp.empty((k,n))#使用numpy生成一个k*n的矩阵用于存储质心forjinrange(n):minJmin(data_X[:,j1])rangeJmax(data_X[:,j1]-minJ)#使用flatten拉平嵌套列表(nested list)centroids[:,j](minJrangeJ*np.random.rand(k,1)).flatten()returncentroidsdeffit(self,data_X): 输入一个m*n维的矩阵 ifnotisinstance(data_X,np.ndarray)or\isinstance(data_X,np.matrixlib.defmatrix.matrix):try:data_Xnp.asarray(data_X)except:raiseTypeError(numpy.ndarray resuired for data_X)mdata_X.shape[0]#获取样本的个数#一个m*2的二维矩阵矩阵第一列存储样本点所属的族的编号#第二列存储该点与所属族的质心的平方误差self._clusterAssmentnp.zeros((m,2))#创建k个点作为起始质心ifself._initCentrandom:self._centroidsself._randCent(data_X,self._k)clusterChangedTrue#循环最大迭代次数for_inrange(self._max_iter):#使用_主要是因为后面没有用到这个值clusterChangedFalseforiinrange(m):#将每个样本点分配到离它最近的质心所属的族minDistnp.inf#首先将minDist置为一个无穷大的数minIndex-1#将最近质心的下标置为-1forjinrange(self._k):#次迭代用于寻找元素最近的质心arrAself._centroids[j,:]arrBdata_X[i,1:4]distJIself._calEDist(arrA,arrB)#计算距离ifdistJIminDist:minDistdistJI minIndexjifself._clusterAssment[i,0]!minIndexorself._clusterAssment[i,1]minDist**2:clusterChangedTrueself._clusterAssment[i,:]minIndex,minDist**2ifnotclusterChanged:#若所有样本点所属的族都不改变,则已收敛,结束迭代breakforiinrange(self._k):#更新质心将每个族中的点的均值作为质心index_allself._clusterAssment[:,0]#取出样本所属簇的编号valuenp.nonzero(index_alli)#取出所有属于第i个簇的索引值ptsInClustdata_X[value[0]]#取出属于第i个簇的所有样本点self._centroids[i,:]np.mean(ptsInClust[:,1:4],axis0)#计算均值,赋予新的质心self._labelsself._clusterAssment[:,0]self._ssesum(self._clusterAssment[:,1])defpredict(self,X):#根据聚类结果预测新输入数据所属的族#类型检查ifnotisinstance(X,np.ndarray):try:Xnp.asarray(X)except:raiseTypeError(numpy.ndarray required for X)mX.shape[0]#m代表样本数量predsnp.empty((m,))foriinrange(m):#将每个样本点分配到离它最近的质心所属的族minDistnp.infforjinrange(self._k):distJIself._calEDist(self._centroids[j,:],X[i,:])ifdistJIminDist:minDistdistJI preds[i]jreturnpredsclassbiKMeansClassifier():this is a binary k-means classifierdef__init__(self,k3):self._kk self._centroidsNoneself._clusterAssmentNoneself._labelsNoneself._sseNonedef_calEDist(self,arrA,arrB): 功能欧拉距离距离计算 输入两个一维数组 returnnp.math.sqrt(sum(np.power(arrA-arrB,2)))deffit(self,X):mX.shape[0]self._clusterAssmentnp.zeros((m,2))centroid0np.mean(X,axis0).tolist()centList[centroid0]forjinrange(m):#计算每个样本点与质心之间初始的平方误差self._clusterAssment[j,1]self._calEDist(np.asarray(centroid0),\ X[j,:])**2while(len(centList)self._k):lowestSSEnp.inf#尝试划分每一族,选取使得误差最小的那个族进行划分foriinrange(len(centList)):index_allself._clusterAssment[:,0]#取出样本所属簇的索引值valuenp.nonzero(index_alli)#取出所有属于第i个簇的索引值ptsInCurrClusterX[value[0],:]#取出属于第i个簇的所有样本点clfKMeansClassifier(k2)clf.fit(ptsInCurrCluster)#划分该族后所得到的质心、分配结果及误差矩阵centroidMat,splitClustAssclf._centroids,clf._clusterAssment sseSplitsum(splitClustAss[:,1])index_allself._clusterAssment[:,0]valuenp.nonzero(index_alli)sseNotSplitsum(self._clusterAssment[value[0],1])if(sseSplitsseNotSplit)lowestSSE:bestCentToSpliti bestNewCentscentroidMat bestClustAsssplitClustAss.copy()lowestSSEsseSplitsseNotSplit#该族被划分成两个子族后,其中一个子族的索引变为原族的索引#另一个子族的索引变为len(centList),然后存入centListbestClustAss[np.nonzero(bestClustAss[:,0]1)[0],0]len(centList)bestClustAss[np.nonzero(bestClustAss[:,0]0)[0],0]bestCentToSplit centList[bestCentToSplit]bestNewCents[0,:].tolist()centList.append(bestNewCents[1,:].tolist())self._clusterAssment[np.nonzero(self._clusterAssment[:,0]\ bestCentToSplit)[0],:]bestClustAss self._labelsself._clusterAssment[:,0]self._ssesum(self._clusterAssment[:,1])self._centroidsnp.asarray(centList)defpredict(self,X):#根据聚类结果预测新输入数据所属的族#类型检查ifnotisinstance(X,np.ndarray):try:Xnp.asarray(X)except:raiseTypeError(numpy.ndarray required for X)mX.shape[0]#m代表样本数量predsnp.empty((m,))foriinrange(m):#将每个样本点分配到离它最近的质心所属的族minDistnp.infforjinrange(self._k):distJIself._calEDist(self._centroids[j,:],X[i,:])ifdistJIminDist:minDistdistJI preds[i]jreturnpreds 项目分享:大家可自取用于参考学习获取方式见文末!
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

济南网站制作做暧昧的小视频网站2

Chromedriver下载地址管理平台集成VoxCPM-1.5-TTS-WEB-UI语音播报功能 在自动化测试工具链日益成熟的今天,一个看似不起眼但高频使用的组件——ChromeDriver的版本管理,正悄然影响着无数开发与测试人员的工作效率。每当Chrome浏览器更新,配套…

张小明 2026/1/17 17:34:05 网站建设

写代码做网站网站制作公司业务员

7个实战技巧:彻底解决PHP邮件发送难题 【免费下载链接】swiftmailer Comprehensive mailing tools for PHP 项目地址: https://gitcode.com/gh_mirrors/sw/swiftmailer 还在为邮件发送失败、中文乱码、服务器限制而烦恼吗?SwiftMailer作为PHP生态…

张小明 2026/1/17 17:34:04 网站建设

淘宝网站备案办一个网站要多少钱

第一章:Open-AutoGLM文件处理核心技术概述Open-AutoGLM 是一个面向自动化文档理解与生成的开源框架,其核心能力在于高效解析、结构化提取以及语义增强处理各类格式文件。该系统通过模块化设计整合了多种前沿自然语言处理技术,支持 PDF、DOCX、…

张小明 2026/1/17 17:34:05 网站建设

电子商务网站怎么做素材包华龙网重庆新闻

现代光学基础经典教材PDF资源 【免费下载链接】现代光学基础钟锡华2003年北大版PDF下载 现代光学基础(钟锡华,2003年,北大版)PDF 下载 项目地址: https://gitcode.com/open-source-toolkit/6c39f 探索光学世界的入门宝典&a…

张小明 2026/1/17 17:34:08 网站建设

2k屏幕的网站怎么做网站建设制作价格

从零开始训练大模型?这个脚本帮你自动下载600模型权重和数据集 在今天,想要动手训练一个大模型,听起来像是只有大厂才能玩得起的游戏。动辄上百GB的显存、复杂的分布式配置、成千上万行的训练脚本……还没开始,就已经被劝退。但如…

张小明 2026/1/17 17:34:08 网站建设

内蒙古网站建设信息奉贤免费网站建设

anything-llm镜像能否处理CAD图纸说明文档? 在智能制造与数字化设计快速演进的今天,工程师每天面对的是成百上千页的技术文档、图纸和规范。一个常见的痛点是:如何从一份长达50页的机械零件CAD说明书PDF中,快速找到“主轴孔径公差…

张小明 2026/1/17 17:34:09 网站建设