Sunday, June 26, 2011

无聊的日子你是怎么过的

手机不格,qb看多了

这几天,一直处在一个人,没有网络,没有电视,没有书籍的状态,唯一的可以交互的东西是手机。自然带来了这个问题,如何打发时间,或者不无聊的消耗时间,甚或有效利用时间。

6.21日-现在,我都处于上述状态,其中头两天找房子的时候待在同学那里,有网络,有人聊天,过得很快。然而房子一旦敲定,无聊就来了,一个人呆在新的空荡荡的屋子里不知道干啥,电脑留给老爸了,房东买的电视还每到,我只好发呆。

23号,去超市买一些东西,但是发现自己对居家的东东实在是不了解,就买了个烧水壶回来,后来去市场购了垃圾桶,拖把,等用品,顺便把周围的环境观察了下,晚上去三哥那里看了球赛,顺便住下了。

24号,back,无聊,去百家居逛,转了很久,买了个垫子。回来打扫卫生,这次估计是我迄今唯一一次觉得打扫卫生很happy的一次,真tmd充实。再有就是看电子书,逛逛sns,没劲。

25号,该买的买了,该打扫的打扫了,我到底还能干啥?这时候我才发现,平常的快餐生活害了自己,现在我可以静下心去看greader的每一篇觉得有意义的内容,而不是按A,我也能把以前看一半的电子书捡起来了。而我发现,这时候看比起以前,看的更用心,体会的更深。

其实,倘若平常也能静下心去做每一件事情,那么你永远不会无聊。用心的买东西,用心逛街,用心的看书,用心对待一切。

Sunday, June 5, 2011

构建可搜索的基于Web的Google图表

Poynter看到的关于Google Chart Tools的介绍 How to make searchable, Web-based Google charts。参考该文章,也试用了下Google Chart Tools

  大量的数据可视化需要有专业的知识或者需要话费大量时间精力以及资源,而google的The Google Visualization API(web)使得此工作变得简单,不管你是designer, developer, Web producer 还是hobbyist。

  废话不多说,直接上例子,为了体验实验,我自己构造了例子,而没有采用原文的实例。

  1. 首先打开Google Visualization API homepage,选择Bar Chart


  2. 在下面的图中,点击Google Visualization API playground的字样。


  3. 然后打开一个新的页面,左侧为API或者code的列表,右侧为当前API或者code的代码,而下面为对应的bar chart,修改code,点击 run code,bar chart会有相应的变化。


  4. 原始的代码如下 [javascript]function drawVisualization() {
    // Create and populate the data table.
    var data = new google.visualization.DataTable();
    var raw_data = [['Austria', 1336060, 1538156, 1576579, 1600652, 1968113, 1901067],
    ['Bulgaria', 400361, 366849, 440514, 434552, 393032, 517206],
    ['Denmark', 1001582, 1119450, 993360, 1004163, 979198, 916965],
    ['Greece', 997974, 941795, 930593, 897127, 1080887, 1056036]];

    var years = [2003, 2004, 2005, 2006, 2007, 2008];

    data.addColumn('string', 'Year');
    for (var i = 0; i < raw_data.length; ++i) {
    data.addColumn('number', raw_data[i][0]);
    }

    data.addRows(years.length);

    for (var j = 0; j < years.length; ++j) {
    data.setValue(j, 0, years[j].toString());
    }
    for (var i = 0; i < raw_data.length; ++i) {
    for (var j = 1; j < raw_data[i].length; ++j) {
    data.setValue(j-1, i+1, raw_data[i][j]);
    }
    }

    // Create and draw the visualization.
    new google.visualization.BarChart(document.getElementById('visualization')).
    draw(data,
    {title:"Yearly Coffee Consumption by Country",
    width:600, height:400,
    vAxis: {title: "Year"},
    hAxis: {title: "Cups"}}
    );
    }[/javascript]


  5. 通常情况下,需要修改这几个参数即可。

    1. 第4行var raw_data的内容

    2. 第9行var years的内容

    3. 第11行和第32行对应的Y轴的坐标名称

    4. 第33行的X轴的坐标名称

    5. 第30行的chart的名称

    6. 其他详细参数设置可以参考文档的Configuration Options部分




  6. 我的修改之后的代码和charts分别如下所示:[javascript]function drawVisualization() {
    // Create and populate the data table.
    var data = new google.visualization.DataTable();
    var raw_data = [['econsh', 40000, 55381],
    ['mushi', 20000, 43816],
    ['wods', 30000, 5816]];

    var years =['article num', 'time'];

    data.addColumn('string', 'properties');
    for (var i = 0; i < raw_data.length; ++i) {
    data.addColumn('number', raw_data[i][0]);
    }

    data.addRows(years.length);

    for (var j = 0; j < years.length; ++j) {
    data.setValue(j, 0, years[j].toString());
    }
    for (var i = 0; i < raw_data.length; ++i) {
    for (var j = 1; j < raw_data[i].length; ++j) {
    data.setValue(j-1, i+1, raw_data[i][j]);
    }
    }

    // Create and draw the visualization.
    new google.visualization.BarChart(document.getElementById('visualization')).
    draw(data,
    {title:"SBBSert statictics",
    width:600, height:400,
    vAxis: {title: "properties"},
    hAxis: {title: "nums"}}
    );
    }[/javascript]


  7. 对应图片如下

注意:这个bar chart貌似不支持中文,有了中文的话,就不能正常工作,已经反馈给google

Wednesday, June 1, 2011

Machine Learning Demos

这是Basilio Noris博士的杰作,主要针对现有的机器学习的分类、距离、回归等算法的现有source code并不是很好使用以及理解,实现了一个交互式的GUI,把一些库和例子结合起来,对这些算法进行了更好的可视化和比较,该GUI支持Windows,Linux,以及Mac。用户可以根据自己的机器选择安装进行体验。详细的使用和介绍参考这里Machine Learning Demos

界面如下:



实现的方法如下:



















ClassificationRegressionDynamical SystemsClusteringProjections
Support Vector Machine (SVM) (C, nu, Pegasos)
Relevance Vector Machine (RVM)
Gaussian Mixture Models (GMM)
Multi-Layer Perceptron + BackPropagation
Gentle AdaBoost + Naive Bayes
Approximate K-Nearest Neighbors (KNN)
Support Vector Regression (SVR)
Relevance Vector Regression (RVR)
Gaussian Mixture Regression (GMR)
MLP + BackProp
Approximate KNN
Sparse Optimized Gaussian Processes (SOGP)
Locally Weighed Projection Regression (LWPR)
GMM+GMR
LWPR
SVR
SEDS
SOGP (Slow!)
MLP
KNN
K-Means
Soft K-Means
Kernel K-Means
GMM
One Class SVM
Principal Component Analysis (PCA)
Kernel PCA
Independent Component Analysis (ICA)
Linear Discriminant Analysis (LDA)
Fisher Linear Discriminant
EigenFaces to 2D (using PCA)