kmeans

个推数据可视化之人群热力图、消息下发图前端开发实践

此生再无相见时 提交于 2019-11-30 00:45:50
随着互联网在各行各业的影响不断深入,数据规模越来越大,各企业也越来越重视数据的价值。作为一家专业的数据智能公司,个推从消息推送服务起家,经过多年的持续耕耘,积累沉淀了海量数据,在数据可视化领域也开展了深入的探索和实践。 个推的数据可视化探索和应用由需求出发,从基于开源平台到结合个性化需求进行定制化开发,打造出个推实时消息推送下发图,人群分布热力图等优秀数据可视化作品。这一过程中,个推积累沉淀了大量的数据可视化组件,打磨了自己的数据可视化技术能力。其中,个推热力图正应用在智慧城市、人口空间规划、公共服务等领域,为其提供强大的数据支撑。 个推消息下发图 个推打造的湖滨商圈区域人口热力图 本文就和大家分享一下个推的数据可视化实践、遇到的问题及解决思路,希望大家能从中有所受益。 一、数据可视化的构成 数据可视化由四类可视化元素构成:背景信息、标尺、坐标系、视觉暗示。 1.1 背景信息 背景信息就是标题、度量单位、注释等附加类的信息。主要是为了帮助大屏受众更好地理解相关背景信息,即5W信息:何人(who)、何事(what)、何时(when)、何地(where)、为何(why)。 1.2 标尺 标尺主要用来衡量不同方向和维度上的数据大小,常用的有数字标尺、分类标尺、时间标尺等,类似我们熟悉的刻度。 1.3 坐标系 坐标系有一个结构化的空间,还有指定图形和颜色画在哪里的规则,用于编码数据的时候

KMeans均值算法

余生颓废 提交于 2019-11-29 11:24:43
K均值聚类算法 算法思想 k-means聚类算法 : 随机选取K个对象作为初始的聚类中心; 计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心; 根据分配结果更新聚类中心。均值,顾名思义,对类中的所有样本点求均值,即为新的中心点; 循环2,3两步,终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。 代码实现 样本点存储样例(数据之间以\t分隔) 因为这里测试样本点很少,所以设置当每个点所属类不再变化时即结束循环,此时得到最终聚类结果,如果样本数较多可设置迭代轮数来控制 才开始学python,还不熟练,参照着一些代码,在上面进行了修改,最后的实现如下: # yyf date:19/09/05 import numpy as np import matplotlib . pyplot as plt # 读取数据 def readfile ( filename ) : data = np . loadtxt ( filename , delimiter = '\t' ) return data # 选取k个初始中心 def initCenterp ( data , k ) : m = np . shape ( data ) [ 0 ] centerpoints = np . zeros ( (

kmeans 对表达量进行聚类

∥☆過路亽.° 提交于 2019-11-29 06:19:27
代码如下 df = pd.read_csv("../kmeans/gene.fpkm.csv",header=None) print df.head() #去掉第一行 tdf = df.drop(index=[0]) #去掉第一列 mdf = tdf.drop([0],axis=1) #获取第一列作为行的名称 rownames=tdf[0] #获取第一行作为列的名称 gene=df.loc[0][1:] #修改原始数据库的行列名 mdf.rename(index=rownames, columns=gene, inplace=True) from sklearn.cluster import KMeans seed = 9 # 设置随机数 clf = KMeans(n_clusters=3, random_state=seed) # 聚类 clf.fit(mdf) mdf['label'] = clf.labels_ # 对原数据表进行类别标记 c = mdf['label'].value_counts() 来自为知笔记(Wiz) 来源: https://www.cnblogs.com/raisok/p/11458777.html

招聘公司提前批算法工程师面经

﹥>﹥吖頭↗ 提交于 2019-11-28 21:50:48
解优人才网记者风精分享:招聘公司提前批算法工程师面经 一面: 自我介绍实验室是做什么的?电力系统,跟机器学习没有关系。。怎么自学机器学习的?CS229、小蓝书、西瓜书、葫芦书balabala挑一个比赛介绍一下?C++用了多久?熟悉吗?虚函数和纯虚函数有什么区别?const function(const) const,这三个位置的const有什么区别?第三个忘了。。。C++学的太渣SVM熟悉吗?能推导为什么SVM这么有效?核函数能把特征映射到高维空间核函数有哪些?线性核、高斯核、拉普拉斯核balabala一般怎么选核函数?特征比较少的话倾向用高斯核核函数映射到高维空间,那么计算量会不会显著增大?不会,核心计算还是在低维空间算内积SVM跟AdaBoost有什么联系?想了半天,答了都用于分类问题。。。面试官提示,SVM仅取决于支持向量,那么AdaBoost呢?AdaBoost更关注之前被分错的样本,所以它们的共同点在于都不是一视同仁的看待所有样本。 手撕代码: 写一个函数计算AUC 二面(hr面): 前一轮的面试感觉怎么样?是对量化这一块比较感兴趣吗?有过一段时间的实习在学校实验室是做哪个方向的?电力市场春招时有去面什么公司吗?没有,那个时候太菜了,虽然现在也很菜。。觉得笔试题难吗?正常吧在哪里参加的高考?电气工程是电院的吗?女朋友是上交的吗?爸妈有让你去深圳工作吗?没有

Kmeans

时间秒杀一切 提交于 2019-11-28 15:15:11
聚类算法 主要的应用场景:可以使用聚类算法,按照相似性,以及结构性的概念,来对数据进行组织 重要的应用:对数据进行无监督的预分类,面对一个复杂的分类问题,可以使用聚类算法,首先对手上的数据进行预分类,对聚类算法得出的每一类,应用一个不同的分类模型,最后把这些模型的结果组合起来得到最后一个组合的分类模型 聚类算法分为 ​ 分割型聚类:把给定的数据点分割到不同的类中 ​ 层次聚类:把数据分层,得到一个树状的结构,这个结构动态的显示了类别与类别之间的嵌套关系 聚类算法的作用:进行数据压缩 Hard-Kmeans Hard kmeans 分为 kmeans 和 k-medoids kmeans的缺点: 聚类中心不一定属于数据集 使用了 L2 距离,就是平方了,很容易被噪声影响 对于kmeans算法的优化, k-medoids 算法,改进之处 限制聚类中心一定要来自数据集 使用 L1 距离 不过k-medoids算法因为中心一定要来自于数据集,所以更新质心的算法复杂度是O(n^2) kmeans的扩展:soft-kmeans Soft-Kmeans Hard-Kmeans 本质上就是求 取那几个中心点 可以使得这个簇中的点到属于它的中心点之和最小, 损失函数: 换一种视角来看这个损失函数 👇 其实损失函数可以更换一种方式表达 就是给每一个样本点到质心的距离一个加权

聚类

安稳与你 提交于 2019-11-28 05:32:26
kmeans是一种无监督的聚类问题,在使用前一般要进行数据标准化, 一般都是使用欧式距离来进行区分,主要是通过迭代质心的位置 来进行分类,直到数据点不发生类别变化就停止, 一次分类别,一次变换质心,就这样不断的迭代下去 优势:使用方便 劣势:1.K值难确定 2. 复杂度与样本数量呈线性关系 3.很难发现形状任意的簇 4.容易受初始点的影响 python中使用 sklearn.cluster 模块,使用的时候需要指定参数 第一步:导入数据,提取数据中的变量保存为X import pandas as pd beer = pd.read_csv('data.txt', sep=' ') X = beer[["calories","sodium","alcohol","cost"]] 第二步:进行kmans聚类分析 from sklearn.cluster import KMeans km = KMeans(n_clusters=3).fit(X) #聚成三蔟 km2 = KMeans(n_clusters=2).fit(X) #聚成两蔟 beer['cluster'] = km.labels_ #返回聚类的标签结果 beer['cluster2'] = km2.labels_ beer.sort_values('cluster') #根据'cluster'进行排序 第三步

使用kmeans聚类观察京东物流优化挑战赛的数据

自古美人都是妖i 提交于 2019-11-27 18:56:10
% 经纬度转换 load('lon_lat.mat') mstruct = defaultm('mercator'); mstruct.geoid = [6378137, 0.0818191908426215]; mstruct.origin = [0,0,0]; [x,y] = projfwd(mstruct,lon_lat(:,2) ,lon_lat(:,1)); % 将配送站设置为中为原点 x = x - x(1); x(1) = []; y = y - y(1); y(1) = []; % 求每个客户点的方位角 cos_alpha = x./sqrt(x.^2+y.^2); sin_alpha = y./sqrt(x.^2+y.^2); cos_sin = [cos_alpha, sin_alpha]; # 观察在新的坐标系下的分布 在新的坐标系下,映射每个客户点的坐标 load('Data/information.mat','Request_info','Distance','Time') Timewindow = Request_info(:,4:5); Timewindow(1001:1100,:) = 960; dis = Distance(:,1); dis(1) = []; dis_time = Time(:,1); dis_time(1) = []; dis

python3实现Kmeans++算法

我怕爱的太早我们不能终老 提交于 2019-11-27 03:28:30
零:环境 python 3.6.5 JetBrains PyCharm 2018.1.4 x64 一:KMeans算法大致思路   KMeans算法是机器学习中的一种无监督聚类算法,是针对 不具有 类型 的数据进行 分类 的一种算法   形象的来说可以说成是给定一组点data,给定要分类的簇数k,来求中心点和对应的簇的集合   中心点所在的簇中的其他点都是距离该中心点 最近 的点,因而才在一个簇里   具体步骤   1、首先在点集中随机寻找k个点来当作中心点   2、然后初始化k个集合,用于存放对应的簇的对象   3、开始KMeans算法的一轮。计算第i个点到k个中心点的距离[l1,l2,l3,……,ln],然后记录下距离最短的中心点,并将该点加入到对应的簇集合中   4、全部点都计算完之后开始计算每个簇内的所有点的中心点,即取各个维度上的平均值的点作为新的中心点   5、计算所有新旧中心点的距离的平方的和,看是否为0,不为0则继续循环或递归   6、重复第3,4,5步骤,直到循环或递归跳出   可以看出步骤还是非常简单明了的   关于第5步为什么是0,因为当簇的分类趋于稳定的时候,各个簇之间应当没有数据的摆动。什么是数据的摆动呢?就是簇中的某个数上一次归属于簇A,这回归属于簇B,反复变化的情况即为摆动。   对于KMeans算法来说是不存在的,因为新的中心点是簇内点集的中心点