创建类模式包括工厂方法模式,建造者模式,抽象工厂模式,单例模式,原型模式,这些都是创建类的design pattern,可以创建class的创建。
单例模式和原型模式比较简单,单例模式主要是在内存中保持一个对象,原型模式是指通过复制的方式产生新的对象。
比较容易混淆的是工厂模式,抽象工厂模式和建造者模式。 » Read more: 创建类模式比较
创建类模式包括工厂方法模式,建造者模式,抽象工厂模式,单例模式,原型模式,这些都是创建类的design pattern,可以创建class的创建。
单例模式和原型模式比较简单,单例模式主要是在内存中保持一个对象,原型模式是指通过复制的方式产生新的对象。
比较容易混淆的是工厂模式,抽象工厂模式和建造者模式。 » Read more: 创建类模式比较
将近一个月没有更新博客,主要这期间有太多的考试,数据挖掘就是其中的一门比较难的课程,由于一直不敢怎么掉以轻心,总结了好长的笔记来复习。其实在读研期间也曾考虑学习Data Mining方向,虽说不是很擅长,但是通过这门课也算是data mining入了门。
本科时候也学过这门课,那时候主要以计算为主,其中的原理有很多是云里雾里的感觉。这次的学习,使得我从数据的预处理,到关联规则,分类,聚类的算法,有了清晰的了解,并可以通过分析各个算法的优缺点,改进现有某个算法的存在的问题。
比如:
支持向量机( SVM)是 一种具有高准确率的分类方法。但是SVM 处理大型数据元组集时,速度很慢试开发一种可伸缩的算法克服以上困难。
1,先使用层次聚类的CF-tree构造出微小的聚类簇
2. 找出聚类簇的质心代表该聚类,然后使用SVM进行训练,这样可以大大减少数据元组的数量。
3. 找出超平面来划分这些微型聚类簇。
4. 加入新的聚类簇来进行SVM训练
5. 直到没有新的聚类簇加入,分类完毕
又比如:
提升的基本思想:假设你是一位患者,有某某些症状.你选择咨询多位医生,假设你根据医生先前的诊断准确率,对每位医生的诊断赋予一个权重.然后这些加权诊断的组合最为最终的诊断,这就是提升的基本思想.
提高决策归纳准确性的原因:在提升方法中,权重赋予每个训练元组.迭代的学习K个分类器序列,学习得到分类器Mi之后,更新权重,使得其后的分类器Mi+1”更关注” Mi误分类的训练元组,最终提升的分类器M*组合每个个体分类器,其中每个分类器投票的权重是其准确率的函数。可以扩充提升算法,预测连续值。
这个就是分类与聚类的结合,通过这种方式,我们克服了SVM的缺点,为我们所用!
下面贴出我从数据预处理,OLAP,到数据各种分类算法的笔记:
享元模式可以避免大量非常相似类的开销。在程序设计中,有时需要生成大量细粒度的类实例来表示数据。如果能发现这些实例数据除了几个参数外基本都是相同的。有时就能够大幅度地减少实例化的类的数量。如果能把那些参数移到类实例的外面,在方法调用时将它们传递进来,就可以通过共享大幅度地减少单个实例的数目。
桥梁模式主要解决多层继承,比如我们可以想想,人可以分为男人女人,人又有不同的行为。如果把这个两个class继承,也就意味着是男人行为A,男人行为B。女人行为A,女人行为B。
这种方式非常难以扩展,所以桥梁模式派上用场,它将表示和实现解耦,两者可以独立的变化。
其中这种模式又有一些像策略模式,又有一些像建造者模式。当我们考虑一个对象的多个变化因素可以动态变化的时候,考虑使用桥接模式
» Read more: 桥梁模式 C++实现
访问者模式,顾名思义就是使用vistor类来访问其他类的intern数据,而不改变intern的数据结构和代码。
这样可以分开数据显示和业务逻辑,使得代码更加清晰。
访问者模式的优点就是:灵活度非常高,有优秀的拓展性。
缺点就是:不依赖抽象元素,违反了依赖倒置的原则,直接依赖实现类,拓展实现类比较难。
» Read more: 访问者模式 C++实现