一,什么是聚类?
聚类:-将一个对象的集合分割成几个类,每个类内的对象之间是相似的,但与其他类的对象是不相似的。
评判聚类好坏的标准:1,能够适用于大数据量。2,能应付不同的数据类型。3,能够发现不同类型的聚类。4,使对专业知识的要求降到最低。5,能应付脏数据。6,对于数据不同的顺序不敏感。7,能应付很多类型的数据。8,模型可解释,可使用。
二,聚类所基于的数据类型。
聚类算法通常基于“数据矩阵”和“Dissimilarity 矩阵”。
怎么样计算不同对象之间的距离?
1,数值连续的变量(体重,身高等):度量单位的选取对于聚类的结果的很重要的。例如将身高的单位从米变为尺,将体重的单位从公斤变为磅将对聚类的结果产生很大的影响。为了避免出现这种情况,我们必须将数据标准化:将数据中的单位“去掉”。
A, 计算绝对背离度。B,计算标准量度。
下面我们考虑怎样来计算两个对象之间的差异。1,欧几里得距离。2,曼哈顿距离。这两种算法有共同之处:d(i,j)>=0,d(i,i)=0, d(i,j)=d(j,i),d(i,j)=<d(i,h)+d(h,j)。3,Minkowski距离。这是上述两种算法的通式。并且对于不同的变量,我们可以给它赋于不同的weight.
2,二元数据变量:如果还是用上面的方法来计算的话,肯定会出现错误。这儿分
两种情况,对称的与非对称的。
3,Nominal变量:(例如红,黄,绿,蓝….)
4,ordinal变量(例如科长,处长,局长….)
5,ratio-scaled变量:
6,以上几种混合的变量(多数情况是这样的):
三,分割的的方法。
1, K均值算法:给定类的个数K,将n个对象分到K个类中去,使得类内对象之间的相似性最大,而类之间的相似性最小。
缺点:产生类的大小相差不会很大,对于脏数据很敏感。
改进的算法:k—medoids 方法。这儿选取一个对象叫做mediod来代替上面的中心
的作用,这样的一个medoid就标识了这个类。步骤:
1,任意选取K个对象作为medoids(O1,O2,…Oi…Ok)。
以下是循环的:
2,将余下的对象分到各个类中去(根据与medoid最相近的原则);
3,对于每个类(Oi)中,顺序选取一个Or,计算用Or代替Oi后的消耗—E(Or)。选择E最小的那个Or来代替Oi。这样K个medoids就改变了,下面就再转到2。
4,这样循环直到K个medoids固定下来。
这种算法对于脏数据和异常数据不敏感,但计算量显然要比K均值要大,一般只适合小数据量。
开源软件的特点包括哪些:
1、开源
开源软件必须在符合特定分发标准的开源许可证下发布,例如:对作为聚合软件分发的组成部分出售或赠送软件没有任何限制必须包含源代码并允许分发必须允许修改和衍生作品...
2、开放式设计
开放式设计保证了设计和规划软件的透明和开放过程。这是让社区推动软件的设计和功能路线图。这可能具有挑战性,因为获得社区共识可能是一个耗时的过程。
3、开放式开发
开放式开发是采用包容和透明的开发过程,让每个人都能平等参与。可公开访问的服务为发展活动带来了可见性。例如,开源项目通常采用一组标准,明确说明评估贡献的指标。
4、开放式社区
开放式社区可以确保软件开发社区是一个包容的环境,所有声音都能被听到,任何人都可以升任领导职位。它通过建立共同目标和建立牢固的联系来平衡开发人员和用户的需求。二、什么是开放标准?
开源的定义
先来给开源一个定义,一个软件是开源的,最基本的含义是代码是公开的,任何人都可以去查看,修改以及使用。
首先,开源代码和闭源代码非常不同。闭源代码就是普通的商业版权软件,代码是封闭的,只有作者才能看到,出了问题也只有他能修改。而开源代码,任何人都可以查看和修改。关于开源思想的诞生,有一个很有意思的故事。
Richard Stallman是有史以来最伟大的几名黑客之一,也是世界上写代码最多的人之一,他曾经买过一个商业软件,结果有一点小问题,于是他去找软件公司,问他们能不能帮忙修复一下,软件公司说不行,Richard于是说,那能不能把代码给我,我来修复一下。
公司也说不行。于是Richard Stallman很生气,创立了自由软件基金会,发布了大名鼎鼎的 GPL协议,GPL至今为止依然是最著名的开源协议。
第二点需要特别注意的是,开源不等于免费。软件代码虽然可以免费给别人,但是软件相关的服务,例如编译维护升级等,一样可以赚钱,例如Redhat就是家开源软件公司,不仅仅赚钱,而且很赚钱。
同时,很多公司有把越来越多的开发者投入到公司的开源项目中,这些软件可以有力的支撑起公司的生态,所以如果你是一个开源软件开发者,也不用担心找不到工作。
总之,开源意味着代码可以让任何人直接获取到。