潜规则:公司招聘中不能说的秘密 ZZ

潜规则:公司招聘中不能说的秘密 ZZ

你是否试过狂轰乱炸地在网上发简历,而回应者却寥寥无几?难道真的是人才饱和了吗?或者是你不够优秀,企业在第一时间就把你给枪毙了呢?这里,会告诉你一些企业人才招聘环节中一些不为外人知道的秘密,了解了这些秘密,应该可以让你以后的应聘变得更加有成效!现在中国所有招聘网站都是以人事经理为中心,因为他们是给钱的一方,较少从求职者角度考虑,如果我们从求职者立场或者中立立场来看莫道不消魂中国招聘网站的生意模式及运作流程,将这个求职者并不知晓的事情公布出来,你就会更好清醒认识招聘网站,也更好的实际的利用人才网站求职:



一、 人才网站与企业人事经理的生意模式对求职者影响:

 人才网站的行规是企业人事经理支付600元,可以在一个月内发布一定的职位让求职者投递简历,可以搜索查看人才网站简历库的简历,还可以下载一定数量的简历主动与求职者联系。而大企业及知名公司一般都是购买1年的招聘服务。问题就出来了:如果这个职位1到2周企业招到人了,但他购买的是1个月的服务,所以企业的职位还是挂在网上,而且人才网站竞争激烈,一般都会赠送1个月服务。所以一般职位至少1个月挂在人才网站是无效的,是浪费求职者查看与投递简历时间的。



 大公司最不可靠,他们利用网络、报纸、现场等多种方式,而1年的大大banner永远挂在人才网站上,他们并不需要人,只是为了广告宣传。



 所以人才网站50%以上的职位都是过期的、无效的、不招人或招满人的,所有求职者抱怨我投了那么多简历为什么反馈率那么低,反馈率低是非常正常的。



 另外51job网站的反馈率是最低的,这也是行业秘密:因为51Job的资源80%是以报纸招聘为主,报纸招聘效率高,但网站上的职位都是在报纸上刊登过后作为免费与补充服务,所以很多HR只会看报纸上来的简历,网站来的简历基本不看,在加上51job简历投递量实在太大,那些懒惰的HR才懒得一封一封的看,只会用搜索关键字来看,如本科+3年工作经验+主管等,其他不符合条件的看都不看一眼。所以你知道为什么一直没有公司找你面试,不是你不行,而是HR都不看你发的简历。下面第二部分告诉你如何被他们搜索到。



 现在你知道网络招聘的反馈率为什么那么低了吧。不信你用自动回复邮件形式发送中国3大招聘网站职位HR的邮箱,看看有多少HR看了你的简历,一个工作论坛的网友说,他试着发了100个HR邮箱简历,可以通过自动回复的反馈率统计,可以看到50%HR不看简历就直接删除,30%根本就不打开邮件,只有20%打开邮箱,还有10%可能已经找到人的。他的分析说即使是中国前3名招聘网站以严格标准来看也只有10%职位是真正要急迫招人的。



二、既然知道一些潜规则,那我们也迎合一些这些规则,告诉你一些网络求职的小玉枕纱厨秘密



(1)采用行业招聘网站求职。因为行业招聘网站是按行业发布职位信息的,所以专业和工作经历比较对口。比如你要找物业管理类的工作,你到万行工作网www.114job.com.cn的物业管理招聘频道上去注册简历就比较好,因为那里全部都是物业管理类的企业在招聘;如果你要找外贸的工作,你就可以万行工作网的外贸招聘频道去找,肯定有大量的外贸工作机会。其它的就不在列举。在目前的情况下,几乎每个行业的人才在万行工作网上都能找到自己的频道。



(2)简历要与大公司沾边

当人事经理搜索招聘网站简历库简历时,一般会以关键字“知名企业名称+职位名称”,比如消费品行业可能喜欢可口可乐及宝洁的人,人事经理会这样搜索,例如:“可口可乐+销售经理”,系统会搜索到简历中出现以上关键字的求职者,如果你的简历里出现知名企业名称的字样,就可以被搜索到,例如:“我在xx矿泉水公司工作,成功地令竞争对手——可口可乐旗下的天与地矿泉水在当地的市场份额减少……”:“我在可口可乐的广州白云区经销商工作”等。又提高了人事经理浏览简历的机会!



(3) 经常刷新简历

当人事经理搜索简历库的简历时,符合条件的简历是按刷新的时间顺序排列,而一般只会看前面一两页。很多求职者其实并不知道刷新简历可以获得更多求职机会。因此每次登陆,最好都刷新简历,刷新以后,就能排在前面,更容易被人事经理找到!

(4) 不要只应聘最近三天的职位

一般求职者认为刚刚发布的最新的招聘信息肯定是成功率最大的,其实不然。因为很多企业人事经理没有及时的登陆刷新刊登的职位,所以求职者在搜索职位时刚刷新的职位会排在前面,这些职位应聘的人多,竞争大,相反,一些职位已经是半个月甚至两个月的,应聘的人少,成功率反而高。



(5) 让你的邮件永远在最前面

你要知道每天人事经理看求职者邮箱,他们其实是很懒的,100多页简历邮件他们最多只看前5页!你现在应该知道为什么你的求职简历永远没有回应!



   所以发邮件到企业指定的邮箱时,怎样才能让你的邮件永远排在最前面,让人事经理每次打开邮箱都首先看到你的邮件?只要在发邮件前,把电脑系统的日期改为一个将来的日期,如2008年,因为大多邮箱都是默认把邮件按日期排序,所以你的邮件起码要到2008年以后才会被排在后面! (如果你求职成功,要向我请客耶!)



(6) 新颖的邮件标题

人事经理每天收到大量的求职电子邮件,求职者一般会按企业要求把邮件题目写成:应聘xx职位,怎样才能吸引人事经理的眼球,让他先打开自己的邮件?可以在邮件题目上做文章。一天人事经理收到几百封邮件,只有标题新颖的才有机会被打开。



   例子:我的一个女性朋友发了100多封邮件求职都没有任何反应,因为应聘做文员的太多了,而我这个朋友做过空姐,我将她的邮件标题改为“空姐来广州找工作”,引起绝大部分男人事经理想入非非,结果三天之内有30多个男人事经理通知面试,3个月找不到工作的她而变成3天找到上十份工作。你现在知道邮件标题的重要性了吧。



(7) 简历最好放靓照

对于人事经理来说,每天需要浏览大量简历,如果同等的条件,一般会先通知有照片的求职者来面试,因为通过照片,人事经理对应聘者又多了几分了解。如果是美女,被通知的可能性就更大。我作为人事经理,曾经招聘一个人事主管,收到300多封简历,我找出前30份有相片的前5份,通知了最漂亮相片的2个女孩,就定下了其中的一个。对于一般职位如文职人员之类,中国人的传统还是以貌取人,你即使不漂亮,也照一个艺术照,就增多了面试机会(与其等死,还不如放手一搏),毕竟很现实的是,简历的目的就是有面试的机会,其他就要靠实力与运气了。



(8)求职信“骂”对方公司往往会带来意想不到的效果

一般人认为在求职信中称赞对方公司会引起好感,其实不然。如果先指出这家公司的缺点,往往会引起关注,语不惊人死不休呢,我作为人事经理,我只会对指出我们缺点的求职者有好感,对恭维我们公司的求职者一般会放在一边。即使你不知道对方公司缺点,你随便写一些永远不会错的:“我认为贵司创新不够,市场表现过于常规化;我以消费者心态观察贵司,发现贵司客户服务还有许多待改进的地方;我发现贵司品牌形象还有可能做的更好……”如闻其详,可面谈。可勾引相关公司面试。只要有面试机会,其他再说。(简历有机会面试目的是一切,手段是无所谓的)。



(9)自己要学会让简历与职位匹配

2个观念都是有效的:一是不要太在乎对方职位要求的描述,很多职位描述只是写写,连经理都不知道要招什么样的人,如果你看到对方职位要求本科,你是专科就不敢投递简历,那就失去机会了。如果你看到对方要求有5年经验,你只有3年经验,你也不敢投,那完全没有必要。因为人事经理们对职位的描述只是例行公事随便谢谢而已,你千万不要当真!



另外一个匹配观念就是他的职位如何描述,你就改变你的简历换一个说法匹配,如他说要求领佳节又重阳导能力强,你的简历也说具有领佳节又重阳导才能,他要沟通能力一流,你的简历也说我最擅长沟通。你的简历表面匹配度最高,也可以多增加机会。你可将简历改成为他职位描述完全量身定做的简历。



其实求职者有更多的面试机会,不但可以增加成功求职机会,还可以增加自己的信心,工资越叫越高还可以积累面试经验。很多优秀的求职者网上发了很多简历没有回应,以为自己不行没有竞争力,只好自动降价,实为可惜! 特别是中国最大的招聘网站51job的简历投递反馈率是同行业最低的,因为它主要资源80%投入报纸,报纸招聘完甚至录取完毕后将职位入库,只是将职位作为一个摆设放到网站。



要知道现在网络求职的成功率一般2个月是发1000份简历,有8份面试,2份成功,一个是你不想去的,另一个可能是你相对满意的。所以网络求职的朋友千万不要对自己失去信心。

Posted in 职场就业 | 1 Comment

顶级游戏设计大师谈如何成为一名游戏设计师

顶级游戏设计大师谈如何成为一名游戏设计师

作者:chris crawford   来源:互联网  ithao123整理 2007-05-13

摘要

IT人

  你们应该对自己的事业道路有个最初的规划,你想接受更专门的训练,还是想要更全面的教育?专门的训练能给你某些特别的技能,让你能一毕业就进入工作。但教育能给你一个更全面的素质培养,却不一定能马上看到好处,不过长期来看能给你带来更多的优势。

翻译:wavow
   作者:chris crawford
————————————————————————————————————————
作者简介:Chris Crawford是计算机游戏设计界的元老,至今已经设计、发布了14款值得称道的游戏。
————————————————————————————————————————
   阿,我年轻的朋友们,你们想成为游戏设计师,所以来问我有何好建议?我会给你们我最好的建议,但我猜想你们可能会听不进去。你们可能更愿意听那些说你们爱听的话的人所提供的建议。但这对我来说无所谓,我所能做的就是说些实事,并希望能进入某些人的耳朵里。

   首先,你们应该对自己的事业道路有个最初的规划,你想接受更专门的训练,还是想要更全面的教育?专门的训练能给你某些特别的技能,让你能一毕业就进入工作。但教育能给你一个更全面的素质培养,却不一定能马上看到好处,不过长期来看能给你带来更多的优势。这是个简单不过的选择:速成的路还是战略规划后的路。如果你非常急于求成,那就立马去那些专门学校,他们会教你最新最炫的电脑技术。精力充沛是年轻人的优势,但耐性决不是年轻人的特长,所以我完全能理解你们几乎不能忍受去学习那些看似无关的副科。当我还是你们年纪的时候,我总是对那些大学里的其他课程感到不耐烦。但现在,我对我当初的鲁莽想法感到羞愧,并真心的感谢当初教导我的师长。

   速成的路却是能立刻见效的路。如果你进了一家专门教授电脑游戏制作的学校,或者在正规大学主修电脑游戏设计。在此,你会学到很多关于电脑游戏设计最新的技术。毕业后,你很可能马上就能在正规的游戏公司找到一份工作,而这一切你可以在23岁之前搞定。

   请打住。在这里有一点需要指出。生产游戏和设计游戏是完全不同的。你所获得的第一份工作肯定是份渺小的工作,比如给一个无关紧要的npc画动画,而这个npc做的事情只是在背景上漫无目的的闲晃;或者写一段代码,这段代码的用处就是当用户按下exit的时候,显示“你确定要退出么?”。如果你很擅长做这些小事情,那不出几年就可能会让你画些更复杂的动画或写一段更重要的代码。然后再过几年,你就可能坐上某个更重要的位子,处理些更重要的事情。

   但请你别指望这些。根本的问题在于:有成百上千甚至上百万的学生,就像你们一样的学生,正做着同样的梦,想要进游戏业的梦。考虑一下供求曲线吧,如果职员的供应量十倍甚至百倍于员工的需求量,那么价格曲线将向下倾斜。你们必定将得到可怜的工资,并得不到任何的尊敬。你们当然可以抱怨,但得到的回答不仅简单也很实在:如果你不喜欢,你可以选择离开阿,门外有上百个像你一样的年轻人想要得到你的工作。

   事实上,这就是当前正在发生的事情。有可能的话你们可以去每年三月或四月在圣何塞举行的“游戏开发者大会”看看,你们并不需要真的去参加什么讨论会,只需要在圣何塞的会议中心转转,看看身边走过的人。你会发现两个惊人的事实:第一,每个人都穿着黑色衣服;第二,他们的平均年龄在25至30之间。

   我不知道为什么他们都穿着黑色,这可能是每个人都需要遵守的规则。但我能告诉你们,为什么他们都这么年轻:因为每个人都会在工作几年之后离开这个行业。游戏业就像是个奇怪的巨大建筑物,这个建筑物只有一个入口,却有很多个出口。成千上万个年轻人拥挤在入口处,争先恐后互相推挤着想要进门。只有很少一部分能顺利进入。但对于任何一个进入者来说,总会有另一个人离开——这才能让这个行业保持平衡。这个行业内的人有多么的年轻,就意味着被挤出去的人有多么的快。很少有人能撑到30岁。

   如果你想得再深些,那就会发现另一个事实:假设你是老板,既然有这么多小家伙想要为你做游戏,那你自然可以花一毛钱就雇一群人,像奴隶一样驱使他们,直到他们筋疲力尽,然后再找些替代者。你只需雇佣一些管理人员,能保证这些小家伙都努力工作就行。这个系统运转得非常完美。

   唯一的问题是,你是否打算成为他们中的一员呢?我希望不是。不过,要是你真狂热到打算削尖脑袋往游戏业里钻,那么就继续前进!我这个老笨蛋说再多也是无益。你自己去花时间看清这些吧。

   但在这里我还有另一个方案可以告诉你们。首先,你应该获得一个正规的教育,决不是什么 ** 式的培训。去一所正规的大学,学习任何专业除了游戏制作。几乎所有专业都可以:生物学、物理学(我当初就是念的这个)、艺术、文学、历史、心理学、语言学。你只需保证自己获得了常规教育,并尽量选修一些专业以外的课程,当然,你应该选修一下计算机。

同时,你应该开始试验制作游戏了。不要被时髦流行的图像技术所扰——这不能给你的游戏设计提供任何帮助。你应该专注于游戏的内涵:游戏的体系和架构。如何用很少的元素就能使整个游戏运转?别幻想能做出像商业游戏那么好的产品——我要大声告诉你,这些游戏要依*很多人的力量才能完成。你此时所能做的这些小玩意同那些比较起来,只能用“可怜”两个字形容。要是把制作游戏比作造汽车,此时你根本不用管车子的外表涂层和喷漆,你应该专注于如何让活塞协作运转、如何控制阀门的正常闭合、搞清楚汽化器是个什么东西。你要制造的是个小卡丁车,而不是一辆劳斯莱斯。所有这些都是个试验的过程,别幻想你的这些小玩意会有商业用途,你要做的就是造好一个就扔掉一个——为了增加创造力,你要杀掉你自己的“孩子”。如果你沉迷于这些作品而不愿放弃,那你将永远也不会拥有一个真正游戏设计师所应有的创造力。

   继续不断的为增加你的创造力而努力。到目前为止,你的作品根本无法和一个经验老到的游戏设计师相抗衡,所以增加自己的能力是你此时唯一该做的。电影the matrix都看过吧,没经过训练的neo无论如何也不是agent smith的对手。学任何你能学到的东西。毕业前要把你学校图书馆所有的书架都翻一遍,在这些灰尘的覆盖下指不定隐藏着什么有趣的东西。

   当你出了学校,不要马上就进入游戏业。在一个正规公司找一份像样的工作,并挣些钱。更主要的是不断学习,你要学很多关于团队协作的方式,也要学会如何在众人面前寻找自己的位置。你应该学会何时何地站起来对你的老板说话——虽然这种机会不常有。还有,你应该学会如何同周围有经验的内行打交道。

   继续在你业余时间制作游戏,尽可能多的制作各种不同类型的“小卡丁车”,并试图了解各种类型卡丁车的性能,诸如操纵性、速度以及其他要素。当你做了六个或十个这种产品,你可能会想到继续亲自着手进行更大的项目。很好,去找些志同道合的朋友,他们会帮助你完成你的计划,我确信这将是个令人印象深刻的成果。完成之后,向全世界展示你的小宝贝吧。现在,你就可以把她作为你简历的一部分去申请游戏业中的职位了。如果你的那些产品确实好,你将能得到一个真正的游戏设计师职位,而不是去当那些小喽罗。此时你可能仍然只是其他游戏设计师的助手,但你已经处在了正确的位置上,如果你能努力出色的完成工作,你肯定会在游戏业中拥有前途。
   我知道这些并不是你们想听的内容。你们想要的是所谓的速成药,比如学习这个,然后学习那个,接下来就能确保得到一份高收入的工作、拥有巨大的办公室、用着最先进的电脑设备、做的是富有创造性的事情。没错,每个人都会这么想的,但没有人会得到这些。那些向你描述这些故事的人不过是些骗子,他们脑子里想的只是你口袋里的钱。一个令人悲伤的事实是:游戏先驱们主导世界的日子已经过去了,现在的游戏业是一个产业,没人会突然被发掘然后一夜之间成为巨星,对任何想入门的人来说,在你面前的必定是一条漫长的路。

   你们拥有激情和精力,想要让不可能变为可能。但你们是否对这条漫长的路做好了准备?或者说,你们是否打算在真正的准备完成前就冲进去?

   祝你们好运,孩子们,我相信你们会成功。

分类: 游戏开发 界面设计 组件技术 艺术设计

上一篇 人们为什么玩游戏-选自《游戏设计原理与实践》

下一篇 汤姆·霍尔的快速成为游戏开发者的秘诀

Posted in 职场就业 | Leave a comment

亲身经历:投诉中移动 邂逅信产部

ugmbbc发布于 2008-03-18 16:35:03| 10921 次阅读 字体: 打印预览

作为cnBeta的负责人,一直以来我都在处理有关网友遭受运营商不公正待遇的文章,到现在算算也有上百篇,很欣慰地看到在我们的帮助下,一些事情得到了圆满解决,但电信消费者维权并不是一个简单的名词,它时刻可能在我们身边发生,今天就向大家讲讲发生在我自己身上的真实案例--事情的结束就在两个小时前.
大家都知道cnBeta“第一次代表大会”的事情,其实别看cnBeta走到现在将近5年了,但组成这一网站的人们却大部分都没有互相见过,于是我们抽了一个时间约在上海碰个头,这是背景.

本人的运营商是中国移动浙江省绍兴分公司的动感地带品牌,选择它是因为包月的短信配额比较多,因为工作需要,就在移动网站上加开了200MB的GPRS/EDGE包月套餐,这个号码在浙江使用两年了,一直没有问题.

3月16日,我从浙江赶赴上海,当汽车到达浙江上海边界(海宁-嘉善)时意外发现这个号码的GPRS信号突然完全消失,这个号码曾经漫游到厦薄雾浓云愁永昼门,北京,沈阳等城市均无问题,当时以为是边界的信号问题也没有多在意,结果进入上海市区后熟悉的"G"和"E“标志依然没有出现.

故障申报

于是在14:43:25拨打了绍兴移动0575-10086,请注意,这个时候移动收取了长途费用0.91元.

首先移动客服承认该套餐是可以全国漫游的,并直接重置了本号码的GPRS的服务,要求5分钟后重新启动手机,照办后依然无效.

15:21:57拨出第二个故障申报,这次话务帮我接到了分管数据业务的坐席上,这次被要求等待15分钟后重新启动手机,10086长途费1.19元,结果这次也是无功而返.

猫叔(Catfish),老A(Aoouch)这时都已经到达,与他们接上面的时候发现他们的GPRS数据漫游业务均属正常,因此排除了上海移动网络问题的可能性.结果在上海的数十个小时里本人均无法通过手机连接到互联网(当然,晚上CB全体开肠胃扩大会议去了,也就把这事暂时搁一边了).

时间到了3月17日,GPRS信号一直没有在手机上出现,上午10:30:52再次拨打了10086询问情况,被收1.05元,这个时候知道故障申报已经真的没有什么必要.

最为搞笑的是一回到浙江界,EDGE信号如约出现,手机损坏的可能性也被最终排除...接下来的事情自然是投诉.

我要投诉

3月17日晚22:59分,回到台州后拨打0575-10086,直接转人工后直接对话务说:我需要投诉.对话突然变得非常紧张,话务小姐训练有素,记录投诉运指如飞,期间有很明显的对话录音操作,我就把以上的经历说了一下,并提出四点要求:

1.责成技术部门迅速解决我这一号码出省后GPRS/EDGE信号消失的问题.
2.退还本人在上海期间漫游+长途拨打0575-10086的所有费用.
3.由于EDGE业务失效,在省际漫游期间可用网络来完成的业务不得不利用漫游电话来拨打,但目前我这个号码由于采用了漫游的包时优惠,因此要求撤销所有位于上海的优惠记录,重新计算优惠时间.
4.要求客服部门做出合理解释并道歉.

10分钟以后,一个10086的电话打来,女声,非常模糊地报了一个坐席号(怀疑是不是故意的,因为接下来的几个电话在报工号的时候语速都很快,且都不太清晰),了解了一下情况,并答应48小时内给答复.

习惯性说“No

挂完电话暗自好笑,根据大量cnBeta访客朋友们的宝贵经验,移动到了明天除了赖账是不会给出任何解决方案的.因此我做了一系列准备,果然...

今天14:18分,一个中年女声的10086电话打来,同样模糊报工号,随后态度强硬:

“您已经回到浙江了,网络也恢复正常,因此这边我们也不能帮您分析故障状况,也不确定是网络问题,至于您提出的几点赔偿要求我们都是无法满足的”.

我淡淡地回了一句:谢谢您,我会向信产部反映情况的.

邂逅信产部

信产部即将离我们而去,这个唯一能获得CB网友一致好评的国家部级部门将会以重组的方式消失,也许它还会继续帮网民说话,也许...谁知道呢?但至少到今天,信产部还是存在的.

其实按照流程,我应该先向浙江省通信管理局投诉,但鉴于信产部在网友们心中的形象,我不得不把投诉变成了一场实验,事实证明,信产部的确能帮我们普通人说话!

早在昨晚就已经写好了投诉稿件,需要做的就是先拨打010-12300说明问题,一位北京大妈(抱歉,事实)用很社会主义的语气接了电话.

我把这两天来发生的事情叙述了一下,大妈如数在电脑中记录,并叫我去信产部的网站上投一份投诉状,我写的投诉状全文如下(可供投诉的各位参考,注意,投诉必须是完全实名的):


我是中国移动通信浙江省绍兴分公司的动感地带客户,号码为13735395xxx,该号码办有200MB每月的GPRS数据包月套餐,3月15日出差到上海,离开浙江后发现该号码的GPRS数据信号消失.在沪期间三次拨打0575-10086电话联系技术部门仍未解决.由于网络服务品质出现问题,导致本人在沪期间通信成本增加(可以用网络完成的工作被迫全部用漫游电话),移动还收取了拨打0575-10086电话的漫游和长途费用.随后17日返回浙江,进入浙江界内后发现信号立即恢复,已可以确认并非本人设备之问题.当晚22:00许返家遂拨打0575-10086投诉中国移动,也被收取了长途费用.

本人投诉条件如下:
1.责成技术部门迅速解决我这一号码出省后GPRS/EDGE信号消失的问题.
2.退还本人在上海期间漫游+长途拨打0575-10086的所有费用.
3.由于EDGE业务失效,在省际漫游期间可用网络来完成的业务不得不利用漫游电话来拨打,但目前我这个帐户由于采用了漫游的包时优惠,因此要求撤销所有位于上海的优惠记录,重新计算优惠时间.
4.要求客服部门做出合理解释并道歉.

18日14:18分,中国移动答复称无法确定是网络问题,没有对本人的通信服务质量情况作进一步检查和修复,也不会退还本人合理的所有所要求的费用,且态度傲慢.

特请信息产业部的工作人员调查此事,以维护电信消费者权益.



28分钟的180度大转弯如果奥林匹克有“说反话”项目的话,中国移动庞大的话务团队可能可以组团去拿金牌.

14:46分,不到半小时,信产部药效发作,10086再次来电,中国移动表演了态度180度大转弯,难度系数3.8.

客服例行公事,模糊报工号,此后马上开始致歉:针对您有关漫游GPRS的投诉,我代表中国移动致歉云云.下面是条件部分,完全满足上述四个要求,答应彻查GPRS漫游问题,撤销优惠记录,并补偿20元在沪期间面向10086的长途通话费(以服务监督奖的形式),3日内到账.

我问道:如果下次我到上海依然出现这一问题,该如何处理?(我知道,这个移动的漫游服务品质问题相当蹊跷,可能连他们自己都搞不明白),客服显得左右为难,说他们会尽力查找问题所在.

我说,那我一定会再打10086,呵呵.


一直是审稿,译稿发稿,几乎是第一次给大家写稿,以上维权经历是2个小时之前完成的,希望对大家有用.其实cnBeta的朋友们肯定都有类似的经历,其实维权对您来说真的不是什么很复杂的事情.从大家的维权记录上来看,信产部面对运营商的管制相当严厉,只要您提供了真实的,足够的信息给监管部门,运营商方面将承受相当大的压力,今天能在半个小时内解决问题,可以看出信产部的效率.

最后,让我们大家一起送送信产部,再把希望寄托在未来的工业信息部上,希望他们能够继续履行为纳税人服务的职责,它不是一个人在战斗...^_^

http://www.cnbeta.com/articles/51474.htm?f=tw

Posted in 所见所闻 | Leave a comment

动态聚类方法C-均值算法 的 C++ 实现

一:说明

动态聚类方法是模式识别中一种普遍采用的方法,它具有以下3个要点:

    1:选定某种距离度量作为样本间的相似性度量

    2:确定某个评价聚类结果质量的准则函数

    3:给定某个初始分类,然后用迭代算法找出使准则函数取极值的最好的聚类结果

本文给出了 C-均值算法 的 C++  实现。

(算法描述参见  边肇祺  张学工等  << 模式识别 >> P237 清华大学出版社)

二:源码

2.1  头文件

#pragma once

#include <list>

#include <vector>

using namespace std;

#define DATANUM 19

#define MAXDIST 333333

struct CData

{

    int x1;

    int x2;

};

class CCMean

{

public:

    CCMean(CData *pdata);

    ~CCMean(void);

    void init(); 

    void work(int InitClassNum);

private:

    // calculate the mean of class i:

    void CalcuMean( int i );

    // calculate the ERROR of class i:

    void CalcuJc(int i);

    void CalcuJe();

    // step 1 of C-Mean algorithm

    void InitDeploy();

    // step 4 and 5 of C-Mean algorithm

    // da is now in class i,

    // return ture when moving da from class to class k

    // return false when we do not move da

    bool MoveItoK( const CData& da, int i, int &k );

    // calculate the distance of to data:

    int  dist( const CData& mean, const CData& da);

    // print result:

    void OutPut();

    // iClassNum is the initial class number, in text book, iClassNum <==> C

    int iClassNum;

    // pointer to data array:

    CData *pData;

    // store the mean of all classes. just ueses 0 to iClassNum - 1;

    // in text book is: m1, m2, m3, m4, ... , mc.

    CData mean[DATANUM];

    // store the ERROR of each class, just ueses 0 to iClassNum - 1;

    // the sum of jc[0] to jc[iClassNum - 1] will be je defined following jc;

    int jc[DATANUM];

    //the sum of jc[0] to jc[iClassNum - 1]

    int je;

    // pcla[i] pointer class i which store in LIST

    list< CData >* pcla[DATANUM];

};
//2.2  实现文件

#include "assert.h"

#include "cmean.h"

CCMean::CCMean(CData *pdata)

{

    pData = pdata;

    for(int i = 0; i < DATANUM; i ++ )

    {

       pcla[i] = new list< CData >;

       assert( pcla[i] != 0 );

    }

    je = 0;

}

CCMean::~CCMean()

{

    for(int i = 0; i < DATANUM; i ++ )

       delete pcla[i];

}

void CCMean::init()

{

    for(int i = 0; i < DATANUM; i ++ )

    {

       pcla[i]->clear();

       mean[i].x1 = 0;

       mean[i].x2 = 0;

    }

    je = 0;

}

void CCMean::CalcuMean(int ii)

{

    int sum1 = 0, sum2 = 0;

    int si = (int)pcla[ii]->size();

    list< CData >::iterator iter = pcla[ii]->begin();

    for(int i = 0; i < si; i ++ )

    {

       sum1 += iter->x1;

       sum2 += iter->x2;

       iter++;

    }

    mean[ii].x1 = sum1 / si;

    mean[ii].x2 = sum2 / si;

}

void CCMean::CalcuJe()

{

    for( int i = 0; i < iClassNum ; i ++ )

    {

       CalcuJc( i );

       je += jc[i];

    }         

}

void CCMean::CalcuJc( int index )

{

    list< CData >::iterator iter = pcla[index]->begin();

    int si = (int)pcla[index]->size();

    jc[index] = 0;

    for( int i = 0; i < si; i ++)

    {

       jc[index] += dist( mean[index], *iter );

       iter ++;

    }

}

int CCMean::dist(const CData& mean, const CData& da)

{

    return (mean.x1 - da.x1)*(mean.x1 - da.x1) + (mean.x2 - da.x2)*(mean.x2 - da.x2);

}

void CCMean::InitDeploy()

{

    CData *ptem = pData;

    for( int i = 0; i < iClassNum; i ++ )

    {

       // choose the first iClassNum data as our initial class-center:

       mean[i] = *ptem;

       pcla[i]->push_back( *ptem );

       ptem++;

    }

    // put other data to our initial classes:

    for( i = iClassNum; i < DATANUM; i ++ )

    {

       int mindis = MAXDIST;

       int pos = 0;

       // get the least distance between pData[i] and m1, m2, m3 ....

       for( int j = 0; j < iClassNum; j ++ )

       {

           int curdis = dist( pData[i], mean[j] );

           if( curdis < mindis )

           {

              mindis = curdis;

              pos = j;

           }

       }

       // add pData to class (pos):

       pcla[pos]->push_back( pData[i] );

    }

    for( i = 0; i < iClassNum ; i ++ )

       CalcuMean( i );

    CalcuJe();

}

bool CCMean::MoveItoK( const CData &da, int i , int& k )

{

    // now da is in class i,if da is moved to another class, return true, else return false

    int Pk = MAXDIST;

    int Pj = 0;

    int temk = 0;

    for( int j = 0; j < iClassNum; j ++ )

    {

       int si = (int)pcla[j]->size();

       if( j == i )

           Pj = dist( mean[j], da ) * si/(si - 1);

       else

           Pj = dist( mean[j], da ) * si/(si + 1);

       if( Pj < Pk ) 

       {

           Pk = Pj;

           temk = j;

       }

       else if ( Pj == Pk  && j == i )

       {

           // when Pj == Pk && j == i, we do not move (da) from class i to class j

           temk = i;

       }

    }

    if( i == temk )

       return false; // we do NOT move da;

    k = temk;

    // add da to class k:

    pcla[k]->push_back( da );

    // delete da from class i, first find the positon of da in class i:

    list< CData >::iterator iter = pcla[i]->begin();

    while( iter != pcla[i]->end() )

    {

       if( iter->x1 == da.x1 && iter->x2 == da.x2 )

           break;

       iter++;

    }

    // now delete da from class i:

    pcla[i]->erase( iter );

    // we have move da from class i to class k;

    return true;

}

void CCMean::OutPut()

{

    for( int i = 0; i < iClassNum ; i ++ )

    {

       printf("class %d:\n", i );

       list< CData >::iterator iter = pcla[i]->begin();

       int j = 1;

       while( iter != pcla[i]->end() )

       {

           printf( "(%d,  %d)       ", iter->x1, iter->x2 );

           iter ++;

           if( j++ % 5 == 0)

              printf("\n");

       }

       printf("\n");

    }

}

void CCMean::work(int InitClassNum)

{

    iClassNum = InitClassNum;

    // step 1 of C-Mean algorithm

    InitDeploy();

   

    int counter = 0;

Again:

    //OutPut();

    // step 2 of C-Mean algorithm: choose one sample y (here is da) from collection

    for( int i = 0; i < iClassNum ; i ++ )

    {

       // step 3 of C-Mean algorithm:

       int si = (int)pcla[i]->size();

       if( si == 1 )

           continue;

       // step 4 of C-Mean algorithm:

       list< CData >::iterator iter = pcla[i]->begin();

       for(int j = 0; j < (int)pcla[i]->size(); j++)

       {

           int k = 0;

           CData da = *iter;

           iter ++;

           // step 5 of C-Mean algorithm:

           if( MoveItoK( da , i, k ) == true )

           {

              // step 6 of C-Mean algorithm:

              int OldJe = je;

              je -= jc[i];

              je -= jc[k];

              CalcuMean( i );

              CalcuMean( k );

              CalcuJc( i );

              CalcuJc( k );

              je += jc[i];

              je += jc[k];

              if( OldJe > je )

              {

                  counter = 0;

                    goto Again;

              }

           }

           counter++;

           // step 7 of C-Mean algorithm:

           if( counter == DATANUM )

              goto end;

       }

    }

end:

    printf(" current Je is: %d\n", je );

    OutPut();

}

2.3  测试文件

#include "CMean.h"

#include "process.h"

CData yy[DATANUM] =

{

     {0,0},{0,1},{1,0},{1,1},{1,2},{2,1},{2,2},{2,3}

    ,{6,6},{6,7},{6,8},{7,6},{7,7},{7,8},{7,9},{8,7}

    ,{8,8},{8,9},{9,8}

};

int main(int argc, char* argv[])

{

    CCMean cmean( yy );

    cmean.work(2);

    system("pause");

    return 0;

}
 

Posted in 程序算法 | 1 Comment

模式识别c均值算法的实现(C++)

模式识别c均值算法的实现(C++实现)    
一、实验目的:

通过c均值算法的具体实现,掌握算法的思想,理解动态聚类方法

二、实验原理:

看教程吧!

三、实验内容:

写程序实现c均值算法,并用表中的三维数据进行测试,下面给出了每种测试的类别数目和初始值。

的结果与(3)中的结果进行比较,并解释差别,包括迭代次数的差别。

样本(3个维X20个样本)
 
1
 -7.82
 -4.58
 -3.97
 
2
 -6.68
 3.16
 2.71
 
3
 4.36
 -2.19
 2.09
 
4
 6.72
 0.88
 2.80
 
5
 -8.64
 3.06
 3.50
 
6
 -6.87
 0.57
 -5.45
 
7
 4.47
 -2.62
 5.76
 
8
 6.73
 -2.01
 4.18
 
9
 -7.71
 2.34
 -6.33
 
10
 -6.91
 -0.49
 -5.68
 
11
 6.18
 2.81
 5.82
 
12
 6.72
 -0.93
 -4.04
 
13
 -6.25
 -0.26
 0.56
 
14
 -6.94
 -1.22
 1.13
 
15
 8.09
 0.20
 2.25
 
16
 6.18
 0.17
 -4.15
 
17
 -5.19
 4.24
 4.04
 
18
 -6.38
 -1.74
 1.43
 
19
 4.08
 1.30
 5.33
 
20
 6.27
 0.93
 -2.78
 

四、实验代码:

头函数:

#pragma once

#include <list>

#include <vector>

#include <iostream.h>

using namespace std;

#define DATANUM 20

#define MAXDIST 333333

struct CData

{

    double x1;

    double x2;

       double x3;

};

class CCMean

{

public:

    CCMean(CData *pdata);

       CCMean(CData *pdata,CData *pmean);

    ~CCMean(void);

    void init(); 

    void work(int InitClassNum);

private:

    void CalcuMean( int i );//计算第i类的均值

    void CalcuJc(int i);//计算第i类的误差

    void CalcuJe();//计算总误差

    void InitDeploy();//初始化分类

       //将第i类样本移动到第k类中,如果返回true这,总误差变小,否则不移动

    bool MoveItoK( const CData& da, int i, int &k );

       //计算某个样本与某类重心的平方差

    double  dist( const CData& mean, const CData& da);

    void OutPut();//打印输出结果

    int iClassNum;//定义类别数

    CData *pData;//指针指向样本数据地址

       CData *pMean;//指针指向初始化分类重心数据地址

      

       //存储分类样本重心,最多的分类为总样本个数

    CData mean[DATANUM];

    double jc[DATANUM];//各样本的误差君方根

    double je; //总误差

    // 指针指向已经分类的样本地址

    list< CData >* pcla[DATANUM];

};

实现函数:

#include "assert.h"

#include "cmean.h"

CCMean::CCMean(CData *pdata)

{

    pData = pdata;

    for(int i = 0; i < DATANUM; i ++ )

    {

       pcla[i] = new list< CData >;

       assert( pcla[i] != 0 );

    }

    je = 0.0;

}

CCMean::CCMean(CData *pdata,CData *pmean)

{

    pData = pdata;

       pMean = pmean;

    for(int i = 0; i < DATANUM; i ++ )

    {

       pcla[i] = new list< CData >;

       assert( pcla[i] != 0 );

    }

    je = 0.0;

}

CCMean::~CCMean()

{

    for(int i = 0; i < DATANUM; i ++ )

       delete pcla[i];

}

void CCMean::init()

{

    for(int i = 0; i < DATANUM; i ++ )

    {

       pcla[i]->clear();

       mean[i].x1 = 0.0;

       mean[i].x2 = 0.0;

          mean[i].x3 = 0.0;

    }

    je = 0.0;

}

void CCMean::CalcuMean(int ii)

{

    double sum1 = 0.0, sum2 = 0.0,sum3 = 0.0;

    int si = (int)pcla[ii]->size();

    list< CData >::iterator iter = pcla[ii]->begin();

    for(int i = 0; i < si; i ++ )

    {

       sum1 += iter->x1;

       sum2 += iter->x2;

          sum3 += iter->x3;

       iter++;

    }

    mean[ii].x1 = (double)sum1 / si;

    mean[ii].x2 = (double)sum2 / si;

       mean[ii].x3 = (double)sum3 / si;

}

void CCMean::CalcuJe()

{

    for( int i = 0; i < iClassNum ; i ++ )

    {

       CalcuJc( i );

       je += jc[i];

    }         

}

void CCMean::CalcuJc( int index )

{

    list< CData >::iterator iter = pcla[index]->begin();

    int si = (int)pcla[index]->size();

    jc[index] = 0;

    for( int i = 0; i < si; i ++)

    {

       jc[index] += dist( mean[index], *iter );

       iter ++;

    }

}

double CCMean::dist(const CData& mean, const CData& da)

{

    return (mean.x1 - da.x1)*(mean.x1 - da.x1) + (mean.x2 - da.x2)*(mean.x2 - da.x2) + (mean.x3 - da.x3)*(mean.x3 - da.x3);

}

void CCMean::InitDeploy()

{

       CData *pmean = pMean;

       for( int ii = 0; ii < iClassNum; ii ++ )

    {

       mean[ii] = *pmean;//初始化类别重心数组

       pmean++;

    }

//            //如果是没有给定初始化的分类重心,可以加上下面的这段代码

//    CData *ptem = pData;

//    for( int i = 0; i < iClassNum; i ++ )

//    {

//       mean[i] = *ptem;

//       pcla[i]->push_back( *ptem );

//       ptem++;

//    }

    for( int i = 0; i < DATANUM; i ++ )

    {

       double mindis = MAXDIST;

       int pos = 0;

          //计算各样本与各类别重心的的最短距离

       for( int j = 0; j < iClassNum; j ++ )

       {

           double curdis = dist( pData[i], mean[j] );

           if( curdis < mindis )

           {

              mindis = curdis;

              pos = j;

           }

       }

       // 将pData加入到pos类别中

       pcla[pos]->push_back( pData[i] );

    }

    for( int j = 0; j < iClassNum ; j ++ )

       CalcuMean( j );

    CalcuJe();

}

bool CCMean::MoveItoK( const CData &da, int i , int& k )

{

    double Pk = MAXDIST;

    double Pj = 0.0;

    int temk = 0;

    for( int j = 0; j < iClassNum; j ++ )

    {

       int si = (int)pcla[j]->size();

       if( j == i )

           Pj = dist( mean[j], da ) * si/(si - 1);

       else

           Pj = dist( mean[j], da ) * si/(si + 1);

       if( Pj < Pk ) 

       {

           Pk = Pj;

           temk = j;

       }

       else if ( Pj == Pk  && j == i )

       {

           // 当 Pj == Pk && j == i, 移动

           temk = i;

       }

    }

    if( i == temk )

       return false; // 不移动

    k = temk;

    // 将da加到第k类

    pcla[k]->push_back( da );

    //从第i类中删除da,但是首先从链表中找到他的位置

    list< CData >::iterator iter = pcla[i]->begin();

    while( iter != pcla[i]->end() )

    {

       if( iter->x1 == da.x1 && iter->x2 == da.x2 && iter->x3 == da.x3 )

           break;

       iter++;

    }

    pcla[i]->erase( iter );

    return true;

}

void CCMean::OutPut()

{

    for( int i = 0; i < iClassNum ; i ++ )

    {

              cout<<"类别: "<<i<<endl;

              cout<<"重心点为: ("<<mean[i].x1<<","<<mean[i].x2<<","<<mean[i].x3<<")"<<endl;

       list< CData >::iterator iter = pcla[i]->begin();

       int j = 1;

       while( iter != pcla[i]->end() )

       {

                 cout<<"("<<iter->x1<<","<<iter->x2<<","<<iter->x3<<")   "<<endl;

           iter ++;

           if( j++ % 5 == 0)

             cout<<endl;

       }

      cout<<endl;

    }

}

void CCMean::work(int InitClassNum)

{

    iClassNum = InitClassNum;

    InitDeploy();

    int count = 0;//计算迭代次数

    int counter = 0;//用来判断迭代是否停止

Again:

    for( int i = 0; i < iClassNum ; i ++ )

    {

       int si = (int)pcla[i]->size();

       if( si == 1 )

           continue;

         

       list< CData >::iterator iter = pcla[i]->begin();

       for(int j = 0; j < (int)pcla[i]->size(); j++)

       {

                 int k = 0;

                 CData da = *iter;

           iter ++;

           if( MoveItoK( da , i, k ) == true )

           {

              double OldJe = je;

              je -= jc[i];

              je -= jc[k];

              CalcuMean( i );

              CalcuMean( k );

              CalcuJc( i );

              CalcuJc( k );

              je += jc[i];

              je += jc[k];

              if( OldJe > je )

              {        

                           count++;

                  counter = 0;

                  goto Again;

              }

           }

           counter++;

           if( counter == DATANUM )

              goto end;

              }

       }

end:

       cout<<" 最后总误差 Je 为: "<<je<<endl;

       cout<<"迭代次数是:"<<count<<endl;

    OutPut();

}

测试主函数:

#include "cmean.h"

#include "process.h"

CData yy[DATANUM] =

{

     {-7.82,-4.58,-3.97},{-6.68,3.16,2.71},{4.36,-2.19,2.09},{6.72,0.88,2.80},{-8.64,3.06,3.50},

        {-6.87,0.57,-5.45},{4.47,-2.62,5.76},{6.73,-2.01,4.18},{-7.71,2.34,-6.33},{-6.91,-0.49,-5.68},

        {6.18,2.81,5.82},{6.72,-0.93,-4.04},{-6.25,-0.26,0.56},{-6.94,-1.22,1.13},{8.09,0.20,2.25},

        {6.18,0.17,-4.15},{-5.19,4.24,4.04},{-6.38,-1.74,1.43},{4.08,1.30,5.33},{6.27,0.93,-2.78}

};

CData m11[2] = {{1,1,1},{-1,1,-1}};

CData m12[2] = {{0,0,0},{1,1,-1}};

CData m21[3] = {{0,0,0},{-1,1,-1},{-1,0,2}};

CData m22[3] = {{-0.1,0,0.1},{0,-0.1,0.1},{-0.1,-0.1,0.1}};

CData m31[4] = {{-0.1,0,0.1},{0,-0.1,0.1},{-0.1,-0.1,0.1},{0.2,1,0}};

int main(int argc, char* argv[])

{

       cout<<"测试1:"<<endl;

    CCMean cmean11( yy,m11 );

    cmean11.work(2);

       cout<<"测试2:"<<endl;

       CCMean cmean12( yy,m12 );

    cmean12.work(2);

       cout<<"测试3:"<<endl;

       CCMean cmean21( yy,m21 );

    cmean21.work(3);

       cout<<"测试4:"<<endl;

       CCMean cmean22( yy,m22 );

    cmean22.work(3);

       system("pause");

    return 0;

}

五、实验结果:

测试1:

 最后总误差 Je 为: 409.498

迭代次数是:0

类别: 0

重心点为: (5.98,-0.146,1.726)

(4.36,-2.19,2.09)

(6.72,0.88,2. 8)

(4.47,-2.62,5.76)

(6.73,-2.01,4.1 8)

(6.18,2.81,5.82)

(6.72,-0.93,-4.04)

(8.09,0.2,2.25)

(6.18,0.17,-4.15)

(4.08,1.3,5.33)

(6.27,0.93,-2.7 8)

类别: 1

重心点为: (-6.939,0.508,-0.806)

(-7.82,-4.58,-3.97)

(-6.68,3.16,2.71)

(-8.64,3.06,3.5)

(-6.87,0.57,-5.45)

(-7.71,2.34,-6.33)

(-6.91,-0.49,-5.6 8)

(-6.25,-0.26,0.56)

(-6.94,-1.22,1.13)

(-5.19,4.24,4.04)

(-6.38,-1.74,1.43)

测试2:

 最后总误差 Je 为: 409.498

迭代次数是:4

类别: 0

重心点为: (-6.939,0.508,-0.806)

(-7.82,-4.58,-3.97)

(-6.68,3.16,2.71)

(-8.64,3.06,3.5)

(-6.87,0.57,-5.45)

(-7.71,2.34,-6.33)

(-6.91,-0.49,-5.6 8)

(-6.25,-0.26,0.56)

(-6.94,-1.22,1.13)

(-5.19,4.24,4.04)

(-6.38,-1.74,1.43)

类别: 1

重心点为: (5.98,-0.146,1.726)

(6.72,0.88,2. 8)

(6.18,2.81,5.82)

(6.72,-0.93,-4.04)

(8.09,0.2,2.25)

(6.18,0.17,-4.15)

(6.27,0.93,-2.7 8)

(4.36,-2.19,2.09)

(4.47,-2.62,5.76)

(6.73,-2.01,4.1 8)

(4.08,1.3,5.33)

测试3:

 最后总误差 Je 为: 263.062

迭代次数是:3

类别: 0

重心点为: (5.98,-0.146,1.726)

(4.36,-2.19,2.09)

(6.72,0.88,2. 8)

(6.73,-2.01,4.1 8)

(6.72,-0.93,-4.04)

(8.09,0.2,2.25)

(6.18,0.17,-4.15)

(6.27,0.93,-2.7 8)

(4.47,-2.62,5.76)

(6.18,2.81,5.82)

(4.08,1.3,5.33)

类别: 1

重心点为: (-7.3275,-0.54,-5.3575)

(-7.82,-4.58,-3.97)

(-6.87,0.57,-5.45)

(-7.71,2.34,-6.33)

(-6.91,-0.49,-5.6 8)

类别: 2

重心点为: (-6.68,1.20667,2.22833)

(-6.68,3.16,2.71)

(-8.64,3.06,3.5)

(-6.25,-0.26,0.56)

(-6.94,-1.22,1.13)

(-5.19,4.24,4.04)

(-6.38,-1.74,1.43)

测试4:

 最后总误差 Je 为: 295.01

迭代次数是:2

类别: 0

重心点为: (-6.83667,3.48667,3.41667)

(-6.68,3.16,2.71)

(-8.64,3.06,3.5)

(-5.19,4.24,4.04)

类别: 1

重心点为: (5.98,-0.146,1.726)

(4.36,-2.19,2.09)

(6.72,0.88,2. 8)

(4.47,-2.62,5.76)

(6.73,-2.01,4.1 8)

(6.18,2.81,5.82)

(6.72,-0.93,-4.04)

(8.09,0.2,2.25)

(6.18,0.17,-4.15)

(4.08,1.3,5.33)

(6.27,0.93,-2.7 8)

类别: 2

重心点为: (-6.98286,-0.768571,-2.61571)

(-7.82,-4.58,-3.97)

(-6.91,-0.49,-5.6 8)

(-6.25,-0.26,0.56)

(-6.94,-1.22,1.13)

(-6.38,-1.74,1.43)

(-6.87,0.57,-5.45)

(-7.71,2.34,-6.33)

请按任意键继续. . .

结果分析:初始的类别重心选择越与实际的的重心接近,则迭代次数越少,划分的类别越多则迭代的次数也越少,当分成N类,则迭代次数是零。

Posted in 程序算法 | Leave a comment

我了解的研究生提前毕业的事,交流一下

标 题: 我了解的研究生提前毕业的事,交流一下
发信站: BBS 鼓浪听涛站 (Wed Mar 12 22:32:21 200 8) , 站内

前几天才看到研究生院上关于研究生提前毕业的申请通知,因为我在研一时学分就修完了,论文也发表了。研二这年,基本都在上班了,毕业论文也构思中了。所以我想我的条件符合,想去办一下。。
想想又可以免一年的学费,还可以签约公司拿正式工资。。

具体落实时才发现:
1.到学院里去咨询,竟然说这么多年都没有这个先例,,也不知道具体是怎么办的。主要还是要学分够,毕业论文准备充分,好像只能提前半年。具体的让我问学校。
2.我到研究生院培养办,,才知道,提前毕业并不能免一年学费,学费不管不久都是33000,只是考虑学生没钱,才分三年交。。是这样理解的。。而决定权基本地导师与学院里批。。。
3.我还没问导师,但感觉他会同意,但又没免学费,又只能提前半年。。。难怪没人提前。。

昨晚还听同学说,他内人研二时去考公务员,中了国家级别的第二!!可是想提前毕业时,他们学院却不能批,,理由竟然是因为没有先例。。晕。。。。

当然以上是我自己去问出来的,,也没有遇到提前毕业过的前辈,希望大家有这方面的消息可以交流一下,,

Posted in 研究学习 | Leave a comment

我的支持向量机实验报告提供下载(uci libsvm)

有网友反应旧的下载地址错误,在此更新,谢谢!请到 http://ioio.yo2.cn/archives/626820 下载.

利用放假时间把支持向量机实验报告作业提交了.利用台湾林智仁的libsvm对机器学习网上的数据进行了支持向量机实验.
网上有些写libsvm简介与教程的文章,但很少与实际数据实验相结合.所以这次我把这个实验报告放出来下载也希望大家跟我一样能更具体地了解支持向量机与libsvm的"好".文件中有每一步的实验数据与相关分析,中英文注释,完整软件包.感觉还是写得蛮详细的,希望对初学者有所帮助.
哈哈想知道她有多好,用了才知道.
实验内容:应用SVM支持向量机对机器学习网上的某一数据库做实例应用.
数据选择:威斯康星州(美国州名)医院的乳癌数据.breast-cancer-wisconsin
实验工具:LIBSVM(Version 2.84, April 2007)
下载地址:svmreportbykey41.rar

Posted in 研究学习 | 7 Comments

纪念考研两周年,祝福学弟学妹们

Posted in 纪念记事 | Leave a comment

年底了,小偷公司提醒各位兄弟要注意安全

年底了,各位兄弟要注意安全。
    星期一,我上车,除了坐车的1块钱什么都没带。从起点站坐到终点站,自我感觉一路平静。但是在终点站下车时,发现裤子里多了张纸条:“一个大人出门一个子都不带,丢不丢人呀。--小偷公司敬上”
    星期二,我揣了个破钱包,里面装了1毛钱。到了终点站后,发现钱还在,钱包里被塞了张纸条:“我们不是乞丐,请不要侮辱我们的职业,。--小偷公司敬上”
    星期三,我还是揣破钱包,里面装了100块假瑞脑消金兽钞。到了终点站后,发现钱仍然还在,钱包里被塞了张纸条:“私藏大面值假瑞脑消金兽钞是违法行为,请自觉去相关部门上交。--小偷公司敬上”
    星期四,我拿了个信封,里面装了叠过期的海峡人才报。到了终点站后,发现信封还在,拿出报纸一看,报纸被换成了最新的海峡人才报,外带1张纸条:“现在是咨询时代,及时更新信息,才能把握机会,赢得成功!--小偷公司敬上”      
    星期五,我在衣兜里放了个玩具手机。到了终点站后,手机仍在,多了张纸条:“请不要开此玩笑影响我公司正常工作。--小偷公司敬上”
    星期六,我拿了把玩具手莫道不消魂枪插在腰上。到了终点站后,发现枪不见了,裤腰里被塞了张纸条:“最讨厌你们这些抢劫的,一点技术含量都没有!没收作案工具!--小偷公司敬上”
    星期日,我正准备上车,结果人太多没挤上去。正等下一班车的时候,我一摸口袋,发现多了20块钱,还有张纸条:“大哥,干我们这一行的整天风吹日晒的也不容易,敬上20块钱,您想去哪打车去吧,请您别再整我们了!--小偷公司敬上”

-----到年底了,治安不好,出门注意:
1、 如一定要携带单肩笔记本电脑包,请在背包正面写上"同城速递"
2、 如需携带中型手提旅行袋,请写上"管道疏通"
3、如需携带大型拉杆行李箱,请写上"专业保洁"
4、如需携带大量纸箱,请写上"商务快餐"
5、钱包要写"消毒面纸"
6、胸前MP3上裹上一层纸,上书"速效救心丸"
7、身上如携带更贵重的东西,最好抱个小鸡,写上"小心禽流感"
8、 如果是大袋值钱的,请用黑色晒图纸袋子包裹,且写上:XX公司施工图纸建筑结构水电各10套
9、如携美女同行请在其脑门上贴一“人妖”

Posted in 影音娱乐 | Leave a comment

PJblog的RSS导入wordpress的注意点

之前一直在导入yo2.cn时出现问题,终于解决了,列几个转wordpress注意点:
1.把原RSS文件设成全部导出,即在feed.asp中却除top 10.
2.把导出的RSS(或xml,后缀没关系)文件中清除" 3.把文件中表空格的html代码"&n b s p;"全部替换成空格" ",半角,这个以后写博得养成好习惯了.不要乱加空格.
4.上两步的查找替换,如果文件较大,可以粘贴到word里进行,但是粘回记事本保存时一定要注意设置保存类型为"所有文件",编码为"UTF-8"!!!

有以上几步基本没问题了!!如RSS太大,可以网上搜索yo2的RSS切分小工具.再上传.OK!

Posted in 创意设计 | Leave a comment