算是留条后路吧...anyway学门新语言总比学门新的课程简单一些。
1. 循环
Python 君貌似不是很喜欢操纵下标(不是C),循环比较直接:
for i in forset:
而不是for index in range(len(forset)): i=forset(index)
While和R的用法基本一直。也可以直接break跳出。
算是留条后路吧...anyway学门新语言总比学门新的课程简单一些。
1. 循环
Python 君貌似不是很喜欢操纵下标(不是C),循环比较直接:
for i in forset:
而不是for index in range(len(forset)): i=forset(index)
While和R的用法基本一直。也可以直接break跳出。
读paper易,做model不易,且读且珍惜。下面仅为个人半夜胡言乱语,轻拍~
最近扫paper的数量没什么下降,但是深入读全文的paper越来越少。一个原因大概是很多working paper 研究的问题我不怎么关心?毕竟不是读书的时候需要读很多paper来应对coursework presentation和literature review...
说说一些感受这样。看paper首先是看标题,有没有特定的关键字;有的话再去看下一步摘要,有没有有意思的地方,无论是建模方面还是结论。摘要有意思的话就标记出来,待扫完目录后去打印个别全文细细咀嚼。感觉现在扫working paper的功力越来越纯熟了,一个小时完成上述工序扫个十篇左右这样。
但是比较哀伤的是我发现大部分选出来的paper还都能读懂,尤其是实证的paper,清一水的不是DID就是RE或者RDD,最多来个IV。读起来更有意思的地方怕是背景描述这块,有很多历史人文地域常识可以了解。我想说那个ATE不是不重要啦,但这货真的不稳定(随时间迁移),做一个时间节点上的估计有多大的概率会历史重演呢?而且很多时候是需要多个因素共同作用的,就跟个化学实验似的,控制的除了原材料还有温度湿度气压等等,实验室里面这些客观条件可控,但经济发展中不可控的甚至不可观测的客观因素实在是太多了。计量更多的框架还停留于单因素分析上(当然单因素已然分析不易),是不是有点落后于时代的诉求呢?唉可能还是要期待数学工具、统计理念对于关系数据处理的更深理解吧。现在的network model还是孱弱了一点。
默默的再补充一个实践中在大数据(big volumn big dimensions)客户数据建模中的体会。很多的时候我们会倾向于找客户的原始特征,所谓的demographical variables,性别啊年龄啊收入啊。但是除了facebook这样真人社交网站,谁会告诉网站自己是男是女年方几何呢?然后为了找这些”珍贵的”数据,要不就是通过现有的数据来猜,比如买女士用品的八成是女性;要么就是通过调查来获取一部分人的真实社会属性。然后呢?扔到模型里面回归去...
我想说,若是前一种,何必绕着弯子从可观测的数据生生的去猜不可观测的数据,然后再用猜出来的数据去预测其他东西?直接用可观测的数据好了。本来就是社会属性->特定可观测行为->预测未来行为这样的路径(比如我知道啊买尿布啤酒组合的八成是新晋爸爸,但是我只要知道你买了尿布啤酒日后就也需要婴儿车日后消费潜力巨大就足够了嘛,我干嘛一定要去知道你是男性已婚已育?看看你买的尿布牌子我大概也知道你家的消费层次和接下来的品牌层次偏好了,何必去苦苦的猜你的收入?),有点像经济学里的“显示偏好原理”,或者有向的贝叶斯网络这样(给定上层节点信息,上上层节点信息无用),何必这么折腾...若是后一种,还需要去费时费力不讨好的调查?又不是以前数据尤其是观察维度稀缺的时代了。每次见到刚被象牙塔教育好的遵循123456黄金律步骤出来的建模者,我都忍不住先深深的吸一口气冷气然后苦口婆心的讲一下为什么这些东西其实不那么重要...
都是被现有的实证paper毒害的,动不动就是入户调查数据。哎,人家是做田野实验的需要手工搜集数据各种来之不易,和你们玩大数据的到处都是蛛丝马迹不一样啊!干嘛只会比着葫芦画瓢,明显使劲的方向不怎么对嘛。学界没数据啊所以没办法,业界一堆数据还愁数据搜集?随随便便做个随机试验前后数据爱取多少取多少...喵,尤其是做预测模型的,其实可以不用那么折腾呀。读paper易,却也是取其精华弃其糟粕,玩的灵活才开心嘛。
再啰嗦一句好了,学计算机和数据挖掘出身的只学怎么在现有数据基础上建模,不学基本的数据搜集实验设计这些统计理念,所以不会往这边想;学统计的又被一群没玩过大数据的长江前浪所禁锢,框架就在那里,你见或不见。估计等现在这一辈成熟了下一辈人就真的是站在巨人的肩膀上了。
出于某些原因,最近申请了一个虚拟服务器(虽然有现成的R服务器,但是没有sudo总是各种不爽...),然后开始自己折腾linux...(向着码农方向前进,前进,前...)以下为小白笔记,抄在这里防止自己日后翻回来重新折腾一遍。高手请无视~
服务器是公司C3云上的一片,我选的ubuntu 12.04开始折腾。由于是远程server,所以只能shell操作 T_T 看不到ubuntu华丽丽的界面了。
装R倒是不麻烦,把镜像加一下就好了。编辑/etc/apt/sources.list,然后加上这句(看了一下我的ubuntu是precise版本的)。不加这句的后果就是...装了个上个世纪版本的R?
sudo vi /etc/apt/sources.list deb http://cran.cnr.berkeley.edu/bin/linux/ubuntu precise/ #文件里加上这一行
然后就直接安...
sudo apt-get update sudo apt-get install r-base
然后就开始折腾RODBC,给teradata跪了,安个teradata ODBC Driver死活不成功,最后请教同事决定投保RJDBC的怀抱。
JDBC基于Java,自然需要装JDK。网上搜了一下,貌似有个open jdk可用。
sudo apt-get install openjdk-7-jdk sudo update-alternatives --config java #如果已经有多个jre,记得选一个...
然后保险起见,配一下java的路径。
sudo R CMD javareconf
如果看到下面这一段,那么就OK了。
JAVA_HOME : /usr/lib/jvm/java-7-openjdk-amd64/jre Java library path: $(JAVA_HOME)/lib/amd64/server JNI cpp flags : -I$(JAVA_HOME)/../include JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -ljvm Updating Java configuration in /usr/lib/R Done.
然后就可以开始装R里面的那堆包了。R很神奇,必须sudo R之后install.packages()
才有用...可怜我折腾了半天一直报错。
然后发现sudo的问题之后,顺利的装上了RJDBC.
sudo R
install.packages("rJava")
install.packages("RJDBC")
然后就是Teradata JDBC Driver了。这厮比ODBC好装的多...基本就是解压...然后就没有然后了。
都弄好了之后,就可以在R里面测试着玩了。
library(RJDBC)
jdbc.drv <- JDBC("com.teradata.jdbc.TeraDriver", c("/home/user_name/terajdbc4.jar", "/home/user_name/tdgssconfig.jar"))
jdbc.conn <- dbConnect(jdbc.drv, "jdbc:teradata://xxxx", "xxx", "xxxx")
然后就是JDBC的一些相关函数了。
dbSendQuery(jdbc.conn ,"CREATE TABLE XXX AS XXXX WITH DATA;") #只执行不返回结果 dbGetQuery(jdbc.conn ,"sel 1 from xxx") #执行且返回data.frame(fetch完毕的)
然后就可以开始各种蹂躏了。
只是让我不爽的是,折腾了许久也没搞定发email...sendmail、mail什么的都不管用,莫非我SMTP没有配?继续google去了。
-----------------4.3更新----------------
原来C3和LDAP是直接集成的,所以别人的帐号也可以登入我的server。之后,一句命令可以加入sudo组:
sudo adduser username sudo
----------------4.4更新----------------
今天在同事的帮助下搞定了Rstudio Server版,瞬间爽翻了...
以前是ubuntu 12.04下有个东西装不上: libssl0.9.8。因为默认装好了1.0版本的。但是Rstudio现在的版本必须调用0.9.8版本...于是强行装旧版:
sudo wget http://mirrors.kernel.org/ubuntu/pool/universe/o/openssl098/libssl0.9.8_0.9.8o-7ubuntu3.1_amd64.deb sudo gdebi libssl0.9.8_0.9.8o-7ubuntu3.1_amd64.deb
然后再去装一下Rstudio Server版就好了。
sudo gdebi rstudio-server-0.98.501-amd64.deb
然后为了调RJDBC,配置一下环境变量:
sudo vi /etc/profile
加入这么两行
export JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64/jre" export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
然后刷新一下。
source /etc/profile
这样就搞定啦。Rstudio监听在服务器的8787端口。可以直接/server:8787 登入。
我实在是忍不住要抱怨了,哪有这样的半成品就给我们用的?RJDBC连TD是没有问题,可以读数据,但是dbWriteTable()写不回去!
dbWriteTable(jdbc.conn, name = "testdf", value =test_df) Error in .verify.JDBC.result(s, "Unable to execute JDBC prepared statement ", : Unable to execute JDBC prepared statement INSERT INTO testdf VALUES(?,?) ([Teradata Database] [TeraJDBC 14.10.00.26] [Error 3932] [SQLState 25000] Only an ET or null statement is legal after a DDL Statement.)
亲爱的同事写了一个很方便用的r函数来解决这个问题,大家猛戳 -> github
今天园主的kindle抽风了,除了连上电脑以外,一律无法唤醒(没变砖)。首先猜测电源键坏了,然后上网搜...有人云需要80元去电脑城修,呜啊!这个pw才入手不到一年啊!果断先拆机看看什么情况(好吧,这已经是我第三个kindle了,前两个的尸体都被我拆过,然后彻底的寿终正寝了)。我心里边拆边默念,这一定是我拆的最后一个kindle...
Pw比以前的kindle好拆,前面的壳纯属装饰,硬粘上去的,用瑞士军刀最薄的刀片撬开一角就好了。然后一圈螺丝拧下来,嗯,顺利地脱掉后盖。咦,怎么没问题啊,没有零件掉下来啊,怎么触电源触板还是不能唤醒。正当我打算拆电池的时候,又开始网上搜,这次居然搜到了kindle paperwhite的唤醒套。咦,这货居然可以有唤醒套?然后果断去拿ipad唤醒皮套试试。依然无效。
垂头丧气的,继续搜。有人再秀如何DIY皮套,看了一眼原理大概是磁铁感应。还是不死心的去测试,发现ipad的皮套可以唤醒ipad,应该是有磁性啊。难道是不够强?于是满屋子开始找磁铁。一开始想找个废耳机的磁铁,后来睁眼一看,这不是还有几个冰箱贴嘛!果断拿过来试试。一、二、三!绕了一圈,kindle居然亮了!然后电源键恢复如初!
这是什么原理....想不通也懒得再去想了,大家类似的情况可以先找个冰箱贴试试。大概是白天kindle和ipad、笔记本、耳机之类裸奔混在一起,有磁性干扰,触发了什么机制?后面强磁铁干扰回去就好了?噗。