o(╯□╰)o

刚注册了一个看起来蛮难的Praktikum,因为其他的都觉得太复杂或者不感兴趣,现在的Praktikum真是不太靠谱,再要选到像上学期那么轻松简单的RP又要好则难上加难。只有自求多福了。。。还有个Seminar,这学期的这都是些啥。。。换成Wp后,我可以乱说乱写了,因为反正已经乱了,也好~

Posted in 龙王小庙 | 2 篇回應

(@﹏@)~

我现在有点头晕。。。原来的SkyDrive相册连不过来。有高手指点下吗?
这个WordPress又是个围脖吧?SNS都那么多了,还要去凑个一窝蜂的热闹,作孽哦~~
不过不改它也难继续啦,可怜的娃。

Posted in 龙王小庙 | 1条评论

Hello world!

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

Posted in 龙王小庙 | 1条评论

决策树算法之一 分类回归树(C&RT)

Orz Bichler的讲义,转一点资料自己看吧,新年处女作给这门囧课了。。。
 

分类回归树  classification and regression tree(C&RT) 

优点
(1)可自动忽略对目标变量没有贡献的属性变量,也为判断属性变量的重要性,减少变量数据提供参考;
(2)在面对诸如存在缺失值、变量数多等问题时C&RT 显得非常稳健(robust);
(3)估计模型通常不用花费很长的训练时间;
  (4) 推理过程完全依据属性变量的取值特点(与 C5.0不同,C&RT的输出字段既可以是数值型,也可以是分类型)
(5)比其他模型更易于理解——从模型中得到的规则能得到非常直观的解释,决策推理过程可以表示成   IF…THEN的形式
(6)目标是定类变量为分类树,若目标变量是定距变量,则为回归树;
(7)通过检测输入字段,通过度量各个划分产生的异质性的减小程度,找到最佳的一个划分。
(8)非常灵活,可以允许有部分错分成本,还可指定先验概率分布,可使用自动的成本复杂性剪枝来得到归纳性更强的树。

决策树生长的核心是确定决策树的分枝准则。
一、 如何从众多的属性变量中选择一个当前的最佳分支变量;
也就是选择能使异质性下降最快的变量。
异质性的度量:GINI、TWOING、least squared deviation。
前两种主要针对分类型变量,LSD针对连续性变量。

代理划分、加权划分、先验概率

二、 如何从分支变量的众多取值中找到一个当前的最佳分割点(分割阈值)。
(1) 分割阈值:
A、数值型变量——对记录的值从小到大排序,计算每个值作为临界点产生的子节点的异质性统计量。能够使异质性减小程度最大的临界值便是最佳的划分点。
B、分类型变量——列出划分为两个子集的所有可能组合,计算每种组合下生成子节点的异质性。同样,找到使异质性减小程度最大的组合作为最佳划分点。
  
三、 决策树停止生长的条件
满足以下一个即停止生长。
(1) 节点达到完全纯性;
(2) 数树的深度达到用户指定的深度;
(3) 节点中样本的个数少于用户指定的个数;
(4) 异质性指标下降的最大幅度小于用户指定的幅度。

剪枝:完整的决策树对训练样本特征的描述可能“过于精确”(受噪声数据的影响),缺少了一般代表性而无法较好的用对新数据做分类预测,出现 ”过度拟合“。
——移去对树的精度影响不大的划分。使用 成本复杂度方法,即同时度量错分风险和树的复杂程度,使二者越小越好。
剪枝方式:
A、 预修剪(prepruning):停止生长策略
B、后修剪(postpruning):在允许决策树得到最充分生长的基础上,再根据一定的规则,自下而上逐层进行剪枝。
预测:
回归树——预测值为叶节点目标变量的加权均值
分类树——某叶节点预测的分类值应是造成错判损失最小的分类值。

四、 模型评价:
减少在冒险因素或损失因素方面的不确定性。
不仅包括不同模型的比较,而且还要对模型产生结果的商业价值进行比较。
模型评价的角度
-风险(risk)
-收益(gain)
-利润(profits)

 

http://blog.sina.com.cn/s/blog_4b62a6270100g8pj.html

Posted in 他山之玉 | 2 篇回應

神经网络为2D空间点分类

之前因为忘记把float型的class名四舍五入取整,而是直接取整,所以结果不对。
本来不想追究了,没想到还有人感兴趣。
机器学习函数库依然用的OpenCV。
 
  1 //////////////////////////////////////////////////////////////////////////
  2 // File Name: ann_point_test.cpp                                           //
  3 // Author:      Ruoruo(du@in.tum.de)                                     //
  4 //////////////////////////////////////////////////////////////////////////
  5 #include "stdafx.h"
  6 #include "cv.h"
  7 #include "highgui.h"
  8 #include <ml.h>
  9 #include <time.h>
 10 #include <ctype.h>
 11 #include <vector>
 12 #include <math.h> 
 13 #include <iostream>
 14 using namespace std;
 15 
 16 static CvScalar colors[] = 
 17     {
 18         {{0,0,255}},
 19         {{0,128,255}},
 20         {{0,255,255}},
 21         {{0,255,0}},
 22         //{{255,128,0}},
 23         //{{255,255,0}},
 24         {{255,0,0}},
 25         {{255,0,255}}
 26     };
 27 
 28 int main( int argc, char** argv )
 29 {
 30     vector<float> point;
 31     vector<float> result;
 32 
 33     float p[20= { 0.40.4,
 34                          0.50.5
 35                          2.22.3,
 36                          2.32.2,
 37                          4.34.2,
 38                          4.24.1,
 39                          4.30.3,
 40                          4.40.4,
 41                          0.34.0,
 42                          0.44.1  };
 43     float res[10= { 1,1,2,2,3,3,4,4,5,5 };
 44     int i;
 45     for(i=0; i<10; i++)
 46     {
 47         point.push_back(p[i]);
 48         if(i<5) result.push_back(res[i]);
 49     }
 50 
 51     CvMat* input = cvCreateMat( 102, CV_32FC1 );
 52     cvInitMatHeader( input, 102, CV_32FC1, p );
 53     CvMat* output = cvCreateMat( 101, CV_32FC1 );
 54     cvInitMatHeader( output, 101, CV_32FC1, res );
 55     IplImage* img = cvCreateImage(cvSize(450450), IPL_DEPTH_8U, 3);
 56     img->origin = 1;
 57     for(i= 0; i<10; i++)
 58     {
 59         cvCircle(img, cvPoint((int)(p[i*2]*100), (int)(p[i*2+1]* 100)), 5, colors[(int)res[i]%8], 1, CV_AA, 0);
 60     }
 61     
 62     int layer_num[3= { 231 };
 63     CvMat* layer_size = cvCreateMatHeader( 13, CV_32S );
 64     cvInitMatHeader( layer_size, 13, CV_32S, layer_num );
 65     CvANN_MLP ann;
 66     ann.create( layer_size, CvANN_MLP::SIGMOID_SYM, 11 );
 67     CvANN_MLP_TrainParams params;
 68     params.term_crit = cvTermCriteria( CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 300000.0001 );
 69     params.train_method = 0;
 70     params.bp_dw_scale = 0.1;
 71     params.bp_moment_scale = 0.1;
 72     cout<<"begin training"<<endl;
 73     ann.train( input, output, 00params );
 74     cout<<"end training"<<endl;
 75 
 76     //begin to test
 77     float testp[10= {  0.40.3
 78                                2.52.4,
 79                                4.14.3,
 80                                4.40.5,
 81                                0.54.2  };
 82     CvMat* test_point = cvCreateMat( 12, CV_32FC1 );    
 83     CvMat* test_result = cvCreateMat( 11, CV_32FC1 );
 84     CvFont font;
 85     double hScale=0.5;
 86     double vScale=0.5;
 87     int lineWidth=1;
 88     cvInitFont(&font, CV_FONT_HERSHEY_COMPLEX|CV_FONT_ITALIC, hScale,vScale,0,lineWidth);
 89 
 90     for(i= 0; i<5; i++)
 91     {
 92         cvSetReal2D( test_point, 00, testp[2*i] );
 93         cvSetReal2D( test_point, 01, testp[2*i+1] );
 94         ann.predict(test_point, test_result);
 95         cout<<cvRound(cvmGet(test_result,0,0))<<endl;
 96 
 97         cvCircle( img, cvPoint((int)(testp[i*2]*100), (int)(testp[i*2+1]* 100)), 0, colors[cvRound(cvmGet(test_result,0,0))%8], 10, CV_AA, 0 );
 98 
 99         char buffer[10];
100         _itoa(i+1,buffer,10);
101         string point_id(buffer);
102         cvPutText(img, point_id.c_str(), cvPoint(testp[2*i]*100,testp[2*i+1]*100), &font, cvScalar(255,255,255));
103 
104         cout<<i<<""<<"("<<testp[i*2]<<""<<testp[i*2+1]<<")"<<"\t"<<cvmGet(test_result,0,0)<<endl;
105     }
106 
107     cvNamedWindow( "Coordinates" , 1 ); 
108     cvShowImage( "Coordinates" ,img);
109 
110     cvWaitKey( 0 );
111 
112     cvDestroyWindow("Coordinates");
113     cvReleaseImage(&img);
114 
115     return 0;
116 }

 

小圆圈为10个训练点,实点为5个测试点,不同颜色代表不同分类。

Posted in 锦绣年华 | 5 篇回應

C++批量修改文件名

从驴子上拖cd,最恼火就是乱七八糟的文件名和专门存放文件名的文本文件闹分裂。
索性写个程序,从txt读取文件名列表,然后修改文件夹下所有文件的文件名。
小程序仅限mp3文件。
 
 1 #include "stdafx.h"
 2 #include <afx.h>
 3 #include <iostream>
 4 #include <fstream> 
 5 #include <string>
 6 using namespace std;
 7 
 8 int RenameFromTXT(string InputFolderPath, string InputTXTName)
 9 {    
10     int result=-1;
11     CString cstr, CNewName;
12     string str, OldName, NewName;
13     CFileFind finder;   
14     CString FolderPath = InputFolderPath.c_str();
15     bool ifFind = finder.FindFile(FolderPath + "*.mp3"); 
16 
17     if(ifFind == false){
18         cout<<"Folder not found!"<<endl;
19         return -1;
20     }
21 
22     ifstream inputNewName(InputTXTName.c_str());
23     if(!inputNewName){
24         cout<<"TXT-file not found!"<<endl;
25         return -1;
26     }
27 
28     while(ifFind)   
29     {   
30         ifFind = finder.FindNextFile();  
31         cstr = finder.GetFilePath();
32         USES_CONVERSION;
33         OldName = W2A(cstr);
34         cout<<"old path: "<<OldName.c_str()<<endl;
35         getline(inputNewName, str);
36         cout<<"new name: "<<str.c_str()<<endl;
37         cstr = FolderPath + str.c_str();       
38         CNewName = cstr + ".mp3";
39         NewName = W2A(CNewName);
40         cout<<"new path: "<<NewName<<endl;
41         result = rename(OldName.c_str(), NewName.c_str());
42         if( result == 0)
43             cout<<"File successfully renamed!"<<endl;
44         else{
45             cout<<"Error renaming file: Permission denied"<<endl;
46             cout<<"The new filename may contain \ / : ? \" < > |"<<endl;
47             return -1;
48         }
49         cout<<endl;
50         result=-1;
51     }
52     finder.Close();
53     inputNewName.close();
54     return 0;
55 }
56 
57 int main(int argc, char **argv)
58 {    
59     string input1 = "D:\\Musik\\V.A.-.[Eurovision.Song.Contest.Moscow.2009.(2CD).(2009)].专辑.(MP3)\\";
60     string input2 = "D:\\Musik\\NewNameList.txt";
61     RenameFromTXT(input1, input2);
62 
63     system("pause");
64     return 0;
65 }

main中调用时,只要输入待改文件名的文件夹路径,和存放新名字的文本文件路径和名字就行。 

其中NewNameList.txt内容格式如下:

101. Susanna Georgi — Le Teva Decisio (Get A Life) [Andorra]
102. Kejsi Tola — Carry Me In Your Dreams [Albania]
103. Inga & Anush — Jan Jan [Armenia]
104. AySel & Arash — Always [Azerbaijan]
105. Regina — Bistra Voda [Bosnia & Herzagovina]
106. Copycat — Copycat [Belgium]
107. Krasimir Avramov — Illusion [Bulgaria]
108. Petr Elfimov — Eyes That Never Lie [Belarus]
109. Lovebugs — Highest Heights, The [Switzerland]
110. Christina Metaxa — Firefly [Cyprus]
111. Gipsy.cz — Aven Romale [Czech Republic]
112. Alex Swings Oscar Sings! — Miss Kiss Kiss Bang [Germany]
113. Brinck — Believe Again [Denmark]
114. Urban Symphony — Randajad [Estonia]
115. Soraya — La Noche Es Para Mi (The Night Is For Me) [Spain]
116. Waldo’s People — Lose Control [Finland]
117. Patricia Kaas — Et S’il Falliat Le Faire [France]
118. Jade Ewen — It’s My Time [United Kingdom]
119. Sakis Rouvas — This Is Our Night [Greece]
120. Igor Cukrov feat. Andrea — Lijepa Tena (Beautiful Tena) [Croatia]
121. Zoli Adok — Dance With Me [Hungary]
201. Sinead Mulvey & Black Daisy — Et Cetera [Ireland]
202. Noa & Mira Awad — There Must Be Another Way [Israel]
203. Yohanna — Is It True [Iceland]
204. Sasha Son — Love [Lithuania]
205. Intars Busulis — Probka [Latvia]
206. Nelly Ciobanu — Hora Din Moldova (Dancing Moldova) [Moldova]
207. Andrea Demirovic — Just Get Out Of My Life[Montenegro]
208. Next Time — Neshto Shto Ke Ostane [FYR Macedonia]
209. Chiara — What If We [Malta]
210. Toppers — Shine [Netherlandsnew wave Eurovision 2009 mix]
211. Alexander Rybak — Fairytale [Norway]
212. Lidia Kopania — I Don’t Wanna Leave [Poland]
213. Flor-De-Lis — Todas As Ruas Do Amor [Portugal]
214. Elena — Balkan Girls, The [Romania]
215. Marko Kon & Milaan — Cipela [Serbia]
216. Anastasia Prikhodko — Mamo [Russia]
217. Malena Ernman — La Voix [Sweden]
218. Nela Pociskova & Kamil Mikulcik — Let’ Tmou [Slovakia]
219. Quartissimo — Love Symphony [Slovenia]
220. Hadise — Dum Tek Tek [Turkey]
221. Svetlana Loboda — Be My Valentine! (Anti-crisis Girl) [Ukraine]

 

一秒钟全改了,很爽Smiley mit geöffnetem Mund

Posted in 锦绣年华 | 13 篇回應

神游记

最近变得有点唯心。
 
原因是张纪中要新拍《西游记》,说了句《西游记》扬道抑佛的话,迅速被新浪河蟹了。然而缠绕我多年的问题来了,西游记里又是太上老君又是如来佛祖,是道是佛从未搞清,只当是牛鬼蛇神一锅乱,现如今老大不小了,却是忍不住想要弄明白。慕名看了篇号称中国古典文学普及研究会《西游记》文化研究委员会会长写的长篇博文,于是我就五雷轰顶风中凌乱了。
 
不是说这位佛道儒的专家说得有多雷人,而是这些观点对我原有认知的冲击力相当之大。这篇东西很长,大概意思是:《西游记》是很严肃的作品,不是老版电视剧那种给小孩子看的神话;它自身有很完整的思想体系,而这个系统就是道家思想;它的作者原本不是吴承恩,而是丘处机,不过或许可能是后人对某道人的思想文字整编,究竟是不是丘处机不能够确定,但一定不是吴承恩,换作者名字的事是五四运动的时候干出来的;唐僧看似取经,实则却求不到佛,因为第一次他求到的是假佛,尔后见到真佛却不自知;猴子代表了人心,当它意识到“我”的存在,也就是“心”字加上“吾”字,便是“悟”,悟空的师父点化了他,让他有了觉悟;人一旦有了觉悟,按道家说法,去除恶念便能到达十万八千里,心绪变化七十二般,这些都能解释通了;唐僧师徒实则也代表了人的五脏,众多妖怪也是器官内脏喜怒哀乐之类,其中地名也与人体严格对应,整部《西游记》都是在人体内转悠,其实也就是脑子里YY的产物,是借着玄奘取经来大书特书的道家教科书。
 
居然是这样,居然我还觉得挺对,我是不是被洗脑了?
 
于是被马哲洗过的脑,开始有点慌张了。什么“本我”“自我”“超我”,这样的词汇都一齐出现,我是谁,谁是我。姬无命是怎么被秀才弄死的。
 
“我生从何来,死往何处,我为何要出现在这个世界上,我的出现对这个世界来说意味着什么,是世界选择了我,还是我选择了世界。我和宇宙有必然的联系吗?宇宙是否有尽头,时间是否有长短,过去的时间在哪里消失了,未来的时间又在何处停止,我在这一刻提出的问题,还是你刚才听到的问题吗?”
 
其实想想,这个世界虽然是客观存在的,可是对于每个人来说,却各不相同。就像盲人摸象,每个人的世界都只能是他自己经历过理解过的独特的世界;就算两个人共同经历过一件事,他们的所见所想所记所忽略遗忘也会完全不同。总觉得“主观意识”这个词还是不能等同于“觉悟”的。人之所以有着不同的世界,是因为外界环境影响和个人自身觉悟不同。这话说了怎么和没说一样。然而现在真的在想,觉悟这个东西确实太重要了,没有它或者不重视,人过得懵懵懂懂。
 
不懂哲学,表述混乱,观点模糊,不成文字。
Posted in 清夜絮语 | 3 篇回應