小编Nei*_*ner的帖子

使用PBSMapping和Shapefiles帮助在R中绘制地理数据

使用R中O'Reilly的数据混搭为灵感,我想要绘制地址一小撮对盐池县的shape文件,犹他发现在这里.

我有数据框geoTable:

> geoTable
         address        Y         X EID
1    130 E 300 S 40.76271 -111.8872   1
2    875 E 900 S 40.74992 -111.8660   2
3   2200 S 700 E 40.72298 -111.8714   3
4    702 E 100 S 40.76705 -111.8707   4
5 177 East 200 S 40.76518 -111.8859   5
6    702 3rd ave 40.77264 -111.8683   6
7   2175 S 900 E 40.72372 -111.8652   7
8   803 E 2100 S 40.72556 -111.8680   8
Run Code Online (Sandbox Code Playgroud)

我已将其强制转换为eventData对象:

> addressEvents<-as.EventData(geoTable,projection=NA)
> addressEvents …
Run Code Online (Sandbox Code Playgroud)

gis mapping r esri geospatial

6
推荐指数
1
解决办法
2371
查看次数

猪的正则表达式匹配

使用apache猪和文本

hahahah.  my brother just didnt do anything wrong. He cheated on a test? no way!
Run Code Online (Sandbox Code Playgroud)

我试图匹配"我哥哥没做错什么."

理想情况下,我想要匹配任何以"我的兄弟"开头并以标点符号(句末)或EOL结尾的内容.

查看猪文档,然后按照java.util.regex.Pattern的链接,我想我应该可以使用

extrctd = FOREACH fltr GENERATE FLATTEN(EXTRACT(txt,'(my brother just .*\\p{Punct})')) as (txt:chararray);
Run Code Online (Sandbox Code Playgroud)

但这似乎匹配到行结束.有关执行此匹配的任何建议吗?我已经准备好把头发拉出来了,把头发拉出来,我的意思是转换成python流

regex hadoop apache-pig

6
推荐指数
1
解决办法
6144
查看次数

Python从asp.net AJAX应用程序获取数据

使用Python,我正在尝试阅读http://utahcritseries.com/RawResults.aspx上的值.我可以很好地阅读该页面,但是我很难更改年份组合框的值,以查看其他年份的数据.除了默认的2002年以外,我怎样才能读取数据?

年份组合框更改后,该页面似乎正在执行HTTP Post.该控件的名称是ct100 $ ContentPlaceHolder1 $ ddlSeries.我尝试使用urllib.urlencode(postdata)为此控件设置一个值,但我必须做错事 - 页面上的数据不会改变.这可以用Python完成吗?

如果可能的话,我宁愿不使用Selenium.

我一直在使用这样的代码(来自stackoverflow用户dbr)

import urllib

postdata = {'ctl00$ContentPlaceHolder1$ddlSeries': 9}

src = urllib.urlopen(
    "http://utahcritseries.com/RawResults.aspx",
    data = urllib.urlencode(postdata)
).read()

print src
Run Code Online (Sandbox Code Playgroud)

但似乎拉起了同样的2002年数据.我已经尝试使用firebug来检查标题,我看到很多无关的和随机数据来回发送 - 我是否还需要将这些值发回服务器?

python asp.net screen-scraping asp.net-ajax

5
推荐指数
1
解决办法
3287
查看次数

协作过滤:非个性化的项目到项目的相似性

我正在尝试按照亚马逊的"观看/购买X的客户也查看/购买过Y和Z"来计算物品间的相似度.我看到的所有示例和参考都是针对排名项目的计算项目相似性,用于查找用户 - 用户相似性,或者用于基于当前用户的历史来查找推荐项目.在考虑当前用户的偏好之前,我想先采用非针对性的方法.

查看Amazon.com推荐白皮书,他们使用以下逻辑进行离线项目项目相似性:

For each item in product catalog, I1 
  For each customer C who purchased I1
    For each item I2 purchased by customer C
       Record that a customer purchased I1 and I2
  For each item I2 
    Compute the similarity between I1 and I2
Run Code Online (Sandbox Code Playgroud)

如果我理解正确的话,当我们处于"I1和I2之间的计算模拟"时,我会得到一个与单个值I1(外环)一起购买的物品清单(I2).

这个计算是如何进行的?

另一个想法是,我正在过度思考并使它变得比我需要的更难 - 是否足以对与I1一起购买的I2的数量进行前n个查询?

我也很欣赏这种方法是否正确的建议.我的产品数据库随时有大约150k项目.由于我看到的大部分阅读材料都显示了用户项目相似性甚至是用户 - 用户相似性,我是否应该选择去那条路线.

我过去曾使用相似度算法,但他们总是涉及一个等级或分数.我认为这样做的唯一方法是建立一个客户产品矩阵,得分为0/1而不是购买/购买.鉴于购买历史和物品大小,这可能会变得非常大.

编辑:虽然我将python列为标记,但我更喜欢将逻辑保留在db中,最好使用Oracle PL/SQL.

python algorithm recommendation-engine similarity collaborative-filtering

5
推荐指数
2
解决办法
4401
查看次数

尝试遍历数据框并引用多个字段

我有一个包含Address,City,State,Zip实体的数据框.从那里开始,我正在尝试使用Yahoo API对每个地址进行地理编码.

我使用R Tutorial将这个代码放在O'Reilly的Data Mashups代码中.原始示例采用街道地址向量并使用硬编码城市.我正在尝试制作一个支持多个城市的动态示例.

代码的缩写版本是:

    geocodeAddresses<-function(myStreets)
    }
  appid<-'<put your appid here>'
          baseURL<-"http://local.yahooapis.com/MapsService/V1/geocode?appid="
          myGeoTable<-data.frame(address=character(),lat=numeric(),long=numeric(),EID=numeric())
          for (myStreet in myStreets){  
            requestUrl<-paste(baseURL, appid, "&street=", URLencode(myStreet$address),"&city=",URLencode(myStreet$city),"&state=",URLencode(myStreet$state),sep="")
            xmlResult<-xmlTreeParse(requestUrl,isURL=TRUE,addAttributeNamespaces=TRUE)
            geoResult<-xmlResult$doc$children$ResultSet$children$Result
            lat<-xmlValue(geoResult[['Latitude']])
            long<-xmlValue(geoResult[['Longitude']])
            myGeoTable<-rbind(myGeoTable,data.frame(address=myStreet,Y=lat,X=long,EID=NA))
          }
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试引用myStreet $ City和myStreet $ Address时,我收到错误

$ operator is invalid for atomic vectors
Run Code Online (Sandbox Code Playgroud)

除了遍历数据框myStreets之外,我不知道如何为每一行只调用一次Yahoo API,并为每个成员存储long/lat.

r dataframe

4
推荐指数
1
解决办法
1万
查看次数

转换python协同过滤代码以使用Map Reduce

使用Python,我计算跨项目的余弦相似度.

给定代表购买的事件数据(用户,项目),我有一个由我的用户"购买"的所有项目的列表.

鉴于此输入数据

(user,item)
X,1
X,2
Y,1
Y,2
Z,2
Z,3
Run Code Online (Sandbox Code Playgroud)

我构建了一个python字典

{1: ['X','Y'], 2 : ['X','Y','Z'], 3 : ['Z']}
Run Code Online (Sandbox Code Playgroud)

从那本字典中,我生成了一个买入/未买入的矩阵,还有另一个字典(bnb).

{1 : [1,1,0], 2 : [1,1,1], 3 : [0,0,1]} 
Run Code Online (Sandbox Code Playgroud)

从那里,我通过计算(1,1,0)和(1,1,1)之间的余弦来计算(1,2)之间的相似性,得到0.816496

我是这样做的:

items=[1,2,3]
for item in items:
  for sub in items:
    if sub >= item:    #as to not calculate similarity on the inverse
      sim = coSim( bnb[item], bnb[sub] )
Run Code Online (Sandbox Code Playgroud)

我认为蛮力方法正在扼杀我,它只会随着数据变大而运行得更慢.使用我可靠的笔记本电脑,这个计算在处理8500个用户和3500个项目时运行了几个小时.

我正试图计算我的dict中所有项目的相似度,这比我想要的时间更长.我认为这是MapReduce的一个很好的候选者,但我在键/值对方面遇到了"思考"问题.

或者,问题是我的方法,而不一定是Map Reduce的候选人吗?

python optimization hadoop similarity collaborative-filtering

4
推荐指数
1
解决办法
1861
查看次数

Pythonic方法将文件内容发送到管道并在一个步骤中计算#行

鉴于> 4gb文件myfile.gz,我需要将它zcat到一个管道供Teradata的fastload使用.我还需要计算文件中的行数.理想情况下,我只想在文件中进行一次传递.我使用awk将整行($ 0)输出到stdout,并通过使用awk的END子句,将行数(awk的NR变量)写入另一个文件描述符(outfile).

我已经设法使用awk这样做,但我想知道是否存在更多的pythonic方式.

#!/usr/bin/env python
from subprocess import Popen, PIPE
from os import path

the_file = "/path/to/file/myfile.gz"

outfile = "/tmp/%s.count" % path.basename(the_file)
cmd = ["-c",'zcat %s | awk \'{print $0} END {print NR > "%s"} \' ' % (the_file, outfile)]
zcat_proc = Popen(cmd, stdout = PIPE, shell=True)
Run Code Online (Sandbox Code Playgroud)

稍后通过调用teradata的fastload来读取管道

"/dev/fd/" + str(zcat_proc.stdout.fileno())
Run Code Online (Sandbox Code Playgroud)

这有效,但我想知道是否有可能跳过awk并更好地利用python.我也对其他方法持开放态度.我有多个大文件,我需要以这种方式处理.

python bash shell awk bigdata

4
推荐指数
1
解决办法
1588
查看次数