R/python分享
“每个人在学习之前总是难免会贪别人的便利,伸手获得帮助,而不是先思考;这种学习方式是不可取的”。当自己成为别人询问的对象时,我才慢慢的意识到这个问题的严重性,一方面对于自己而言这种行为容易滋生依赖性,从大大降低自己学习的能力,另一方面对别人而言也是不尊重的,因为某种程度你把别人当成一个工具来用,并没有促进相互思考; 好啦上面是牢骚,总之,建议大学学习前多吧google使用起来,好了下面这些是我学习以来比较好的资料,分享给大家~~
-
magicdata丨数据竞赛交流 :QQ群:114676111(重点:进群验证说明:缺失值处理方法)
-
群主旨:数据科学竞赛学习交流,禁止超常灌水! 不欢迎水军
-
本群创建于2010/6/16: 本群主用R与python作为研究,希望先学python的可转兄弟群【python-实战队 429104064】
-
我们数据分析/挖掘领域打造自己最牛B的水平 不欢迎水军
-
既然主旨是学习交流,大家应该毫无保留的进行思想碰撞;可以是特定模型的讨论,可以细节的讨论,比如决策树、神经网络,比如缺失值处理,比如大规模数据本地及服务器解决方案;学无止境,不休不止
定制R 启动环境 (链接URL)
虽然这篇文章主要讲了自定义R启动环境,但其实隐含着其他问题的解决方案。比如以下情况
-
Rccp 包/REmap包不能安装?提示什么C:不是内部或外部命令啥的
-
R的co-nsole上写好了脚本复制出来都是“ +”号,很烦,怎么解决
-
R版本升级了,旧版本里面的包不能用了怎么办
定制启动环境可以让你设置R的选项、指定工作目录、加载常用的包、加载用户自己写的函数、设置CRAN下载网址以及其它操作;首先说上面一段的三个问题的第一个问题,Rccp、REmap不能安装,可能原因:你的路径中存在空格,空格~ ~例如program files,什么都不说,兼容性问题怎么解决 方案:
- 自定义本地库
-
R中执行:.libPaths(),查看路径 第一步执行结果一般为"C:/Programfiles/R-3.3.0/library",
- 找到路径下面etc文件夹里面有个有个叫 Rprofile.site的文件,将里面的属性进行修改
- .libPaths(“C:/my_R_library”)为添加自定义本地库路径
- options(prompt=“>”)这个可以把开始console的界面“>”定义成你喜欢的符号,比如,改成’Kiss me’
-
options(continue=“ +”) 修改换行符,如加号改成options(continue=" “)空格
今天累了先写到这咯,开始学习了 ~
——————–更新线——–20160526—————————————————
今天的主角是python快速学习:
大概用了一周半的时间,我已经会写模块,类,递归,含迭代的递归,DFS搜索 为什么这么快?:
我的方法是,找到学习大纲快速扫描两边,粗略的看两遍有个印象 找练习或者项目做,习题不会做: 快速学习(i 1)i—把问题带到工具中去搜,OK介绍一个目录
<<《think python 2e》 这个绝对是入门最快的大纲~Python我就看了一周半写了很多代码,包括爬虫,包括灵活使用递归啥的 OK上链接 http://codingpy.com/books/thinkpython2/07-iteration.html
那么光看是不会进步的,学的也慢,试着找项目做,或者找题目做咯 OK题目上: http://blog.sina.com.cn/s/blog_40c3ce860101dc84.html 试着给大家解读几,后续会加入博客中 如:找出给定范围内的所有质数:下面是代码答案~~
答案:
m = 0
j = 2
while j <</span> i :
if i % j == 0 :
m = 1
return m
else :
j=j+1
return m
def printall_pri(i,ma_x):
while i < ma_x :
k = pri_check(i)
if k==0:
print(i)
i=i+1
执行 printall_pri(1,1000)
今天累了先写到这咯,开始学习了 ~
——————–更新线——–20160527—————————————————
写程序在1,2,…,9(保持这个顺序)之间可任意放 或-或都不放使其结果等于100,输出所有可能的放法。例如:
1+2+3–4+5+6+78+9 = 100。
这题可能比较难搞—主要两个步骤
- 生成表达式:1-9嘛,中间有8个空格,这个奏是概率论里面乘法原理了,其实也是贝叶斯分母部分啦 8个空格,插入符号(“+ ”,“-”,“”)中一个符号,最后那个符号是空格,就是不插的意思:就 是说,8个步骤完成一个表达式,每个步骤有三种选择,OK,答案就是3**8种结果
- 第二部,那就是那结果算出来咯,透露下,可以用堆栈→中缀表达式转前或者后缀表达式然后算出来, 嘿嘿
OK先解答第一步(某大神帮助~)
op = ( ' + ', ' - ', ' ')
star = '1'
result = []
def calc(cur, i):
for j in op:
tmp = cur + j + string_exp[i]
if i == len(string_exp) - 1:
result.append(tmp)
else:
calc(tmp, i 1)
calc( '1', 1)
—白话解释中—
说一个错误的遍历便于理解 首先calc函数执行了for 表达式 所以三个符号都要作用于list 但是有个IF截住了for继续跑 所以第一次变成了 1 + 2 + 3 + 4当到4的时候i加了1变成了5,if起不了作用了,外层的for开始起作用 “1 + 2 + 3 + 4”这个有三个选择 “ + ”,“-”,“ ” 所以接下来打印了
1 + 2 + 3 + 4 + 5
1 + 2 + 3 + 4 - 5
1 + 2 + 3 + 4 5
然而每次递归等于把for重新执行了一遍,所以上面的解释是错的 calc 开始执行 for起作用 三个符号等待分配 1 (or - or *)—先存着 if 开始判断,OK位置不对 递归 i 从新调用calc,因为调用了for 所以 1?2 后面同样用三个选择 为什么用? 因为虽然打印程序跑的过程看似是号,实际上因为if作为内部,级别优先所以先跑了,然后继续了 第二部,但是实际上for的作用是还会执行迭代的,这样每一步三个选择这样的过程就OK了
好吧。。。3点了,我困了。。。。下次继续
——————–更新线——–20160527—————————————————
R爬虫和Rjson(数据结构 )注意事项
经常遇到的一个问题,抓取网页数据或者读取JSON的时候,前面步骤都走的OK,但是发现存储数据最后结构太复杂了!!!!list中有list。。。。,怎么办?这里面存在两个问题:
- 一者是对流程熟悉,数据抓取OR读取的时候缺乏足够事先测试,导致后续数据处理难度加大
- 二者则是对数据结构不熟悉,尽管前面的步骤做的不好,但是并非每有方法解决,数据存储结构虽然复杂,多层嵌套,但是其结构还是规则的,只不过是怎么转换的问题
library(rjson)
UrlBike <- "http://web.juhe.cn:8080/bike/state/sz?state=时代广场&key=2f328421171e3a3d2692587fb223b53f"
JsonBike <- paste(readLines(UrlBike , encoding = 'UTF-8' ), collapse = "")
BikeInfo <- fromJSON(JsonBike)
-
获取倒二层list KK(数据存储主list,result的第一个元素)
-
读取list KK中的list,也就是最底层的list,把底层list转成矩阵Mi
-
通过cbind把所有的矩阵合并,Ok最后的结果就是你要的矩阵了(要变成data.frame,轻轻一转就OK)
下面这段代码针对当前例子,看代码
gg2 = as.matrix( BikeInfo $result [[ 1 ]]$ '2' ,byrow = FALSE)
gg3 = as.matrix( BikeInfo $result [[ 1 ]]$ '3' ,byrow = FALSE)
gg = cbind(gg1 ,gg2 ,gg3)
final = t(gg) #转置
当然最后JSON数据可能并不止这么多,因此,我可能用下面这个方法更具有普遍性
mymatrix = do.call('cbind',mymatrix_list )
final = t(mymatrix) #转置