使用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) 使用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流
使用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来检查标题,我看到很多无关的和随机数据来回发送 - 我是否还需要将这些值发回服务器?
我正在尝试按照亚马逊的"观看/购买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
我有一个包含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.
使用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
鉴于> 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 ×4
hadoop ×2
r ×2
similarity ×2
algorithm ×1
apache-pig ×1
asp.net ×1
asp.net-ajax ×1
awk ×1
bash ×1
bigdata ×1
dataframe ×1
esri ×1
geospatial ×1
gis ×1
mapping ×1
optimization ×1
regex ×1
shell ×1