小编set*_*127的帖子

Pyomo - 目标函数作为参数的平均值

我正在尝试将 Pyomo 用于 LP 问题,并且我希望目标函数是我的数据帧中特定参数的平均值(我将称之为obj_param)。

我之前是这样设置的:

model = ConcreteModel()
model.decision_var = Var(list(idx for idx in self.df.index), domain=NonNegativeReals)
model.obj = Objective(
    expr= -1 *  # because I want to maximize not minimize
          sum(model.decision_var[idx] * df.loc[idx,'obj_param'] for idx in df.index)
)
Run Code Online (Sandbox Code Playgroud)

decision_var这里计数的列(如在经典的农民问题“这种作物的亩”),并且obj_param这是“作物”的价值,所以我的目标(书面)乘以亩农作物被它的价值最大化总价值。

这在农民问题中是有道理的,但在我的案例中,我实际上试图做的是最大化每英亩的平均值。(原谅农民的比喻,这里有点紧张。)

为此,我将目标更改如下:

model.obj = Objective(
    expr= -1 *  # because I want to maximize not minimize
          sum(model.decision_var[idx] * df.loc[idx,'obj_param'] for idx in df.index) /
          sum(model.decision_var[idx] for idx in df.index)
) …
Run Code Online (Sandbox Code Playgroud)

python pyomo

5
推荐指数
0
解决办法
185
查看次数

R {wordcloud}包,比例值代表什么?

这似乎是一个简单的问题,但我似乎无法在任何地方找到答案.在R {wordcloud}包中,wordcloud函数有一个可以输入的比例值.完整文档(此处:https://cran.r-project.org/web/packages/wordcloud/wordcloud.pdf)说:"长度为2的向量,表示单词大小的范围."

我似乎无法理解这些价值观,但我找不到任何其他文件.例如,示例有scale=c(4,.5)scale=c(8,.3).这些数字是什么意思?

我稍微弄乱了不同的值,但我似乎无法弄清楚这个模式.在此先感谢任何帮助,赛斯

r word-cloud

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

pyspark - 按元素聚合(求和)向量

我有一个看起来很简单的问题,但我一直用头撞墙,但没有成功。我基本上是在尝试做与这篇文章相同的事情,只是我不关心该文章的“分组依据”方面,我只想对所有行进行求和。

解释一下链接的帖子,DataFrame 看起来像:

ID,Vec
1,[0,0,5]
2,[3,3,4]
3,[0,8,1]
....
Run Code Online (Sandbox Code Playgroud)

我想按元素对向量求和。

上面示例的所需输出将是一行:

SumOfVectors
[3,11,10]
Run Code Online (Sandbox Code Playgroud)

另一个很大的区别是我使用的是 pyspark,而不是 Scala。我试着rdd.fold()开始工作,但要么工作不一样,要么我无法弄清楚 pyspark 中的语法。

最后一个警告是,我在 ~1MM 行的数据帧和长度 ~10k 的向量上执行此操作,因此这必须相当有效。

谢谢你的帮助!根据评论,下面是一个可重复的玩具数据框。

import numpy as np
from pyspark.ml.linalg import Vectors

n_rows = 100

pdf = np.concatenate([np.array(range(n_rows)), np.random.randn(n_rows), 3*np.random.randn(n_rows)+2, 6*np.random.randn(n_rows)-2]).reshape(n_rows,-1)
dff = map(lambda x: (int(x[0]), Vectors.dense(x[1:])), pdf)

df = spark.createDataFrame(dff,schema=["ID", "Vec"])
Run Code Online (Sandbox Code Playgroud)

df.schema 应该看起来像 StructType(List(StructField(ID,LongType,true),StructField(Vec,VectorUDT,true)))

只是打印df给了我DataFrame[ID: bigint, Vec: vector]

同样重要的是,我在 Spark 2.4

$ spark-submit --version
Welcome to …
Run Code Online (Sandbox Code Playgroud)

apache-spark pyspark

4
推荐指数
3
解决办法
3580
查看次数

d3.js 旋转 svg 中的文本

我对 d3 相当陌生,但这似乎是一个相当简单的问题,我找不到答案。也许我只是错过了一些基本的东西。无论如何,非常感谢任何帮助。

我已经在 svg 中创建了圆圈,我想用文本标记它们,我已经完成了,但文本重叠,所以我想将文本旋转 45 度(技术上为 315 度)。这是我尝试此操作的代码片段:

        var texts = svg.selectAll("text")
            .data(data)
            .enter()
            .append("text")
            .attr ("x",function(d, i) { return (i * 30) + 50;})
            .attr ("y",function(d) { return 250 - (d.some_var * 50);})
            .attr("rotate", 315)
            .text(function(d){ return d.name; });
Run Code Online (Sandbox Code Playgroud)

但奇怪的是,这会旋转单词中的每个字母,而不是旋转整个单词。附有屏幕截图。

在此输入图像描述

我在这里缺少什么?感谢您的任何指示!

javascript svg d3.js

3
推荐指数
1
解决办法
1872
查看次数

将巨大的稀疏矩阵转换为 data.table 以在 R 中更快地进行子集化

我有一个大问题,还有一个更具体的问题,我希望一旦解决,就能解决更大的问题。如果有人有任何想法让我尝试,我将非常感激。

基本上我有一个巨大的稀疏矩阵(大约 300k x 150k,最初是使用 R 的 {tm} 包创建的术语文档矩阵),它使用 {slam} 包保存为简单的三元组矩阵,并且我正在运行一个循环函数遍历术语集,然后根据这些术语对其进行子集化。不幸的是,子集化过程非常慢。

在试图弄清楚如何更快地进行子集化时,我偶然发现了 data.table 包,它在我使用它运行的一些测试中表现得非常好。但是,当我尝试将稀疏矩阵转换为 data.table 时,我得到

Error in vector(typeof(x$v), nr * nc) : vector size cannot be NA
In addition: Warning message:
In nr * nc : NAs produced by integer overflow
Run Code Online (Sandbox Code Playgroud)

我明白这是因为它首先尝试将其转换为标准矩阵,从技术上讲,这是 R 的向量,并且 300k*150k 远高于.Machine$integer.max.

所以我的问题:有谁知道如何将简单的三元组矩阵转换为 data.frame 或 data.table 而不先将其转换为矩阵,从而避免整数溢出?

如果没有,是否有人a)有其他解决方法或b)对快速子集巨大稀疏矩阵和/或简单三重矩阵有任何建议?

下面是一个可重复的例子。在我的机器上,对前 10 行中每一行进行子集化的循环大约需要 3 秒。一旦我们开始循环数十万行,很快就会变得令人望而却步。先谢谢您的帮助:

require(slam)
STM <- simple_triplet_matrix(i = as.integer(runif(10000000,1,300000)), 
                  j = as.integer(runif(10000000,1,150000)),
                  v = rep(rnorm(10), 1000000),
                  nrow = 300000,
                  ncol = 150000)

start …
Run Code Online (Sandbox Code Playgroud)

r dataframe tm data.table

2
推荐指数
1
解决办法
2627
查看次数

在所有不符合条件的行上过滤熊猫数据框

这似乎很简单,但我似乎无法弄清楚。我知道如何将熊猫数据框过滤到满足条件的所有行,但是当我想要相反时,我总是收到奇怪的错误。

这是例子。(上下文:一个简单的棋盘游戏,棋子在网格上,我们试图给它一个坐标并返回所有相邻的棋子,但不在该实际坐标上返回棋子)

import pandas as pd
import numpy as np

df = pd.DataFrame([[5,7, 'wolf'],
              [5,6,'cow'],
              [8, 2, 'rabbit'],
              [5, 3, 'rabbit'],
              [3, 2, 'cow'],
              [7, 5, 'rabbit']],
              columns = ['lat', 'long', 'type'])

coords = [5,7] #the coordinate I'm testing, a wolf

view = df[((coords[0] - 1) <= df['lat']) & (df['lat'] <= (coords[0] + 1)) \
    & ((coords[1] - 1) <= df['long']) & (df['long'] <= (coords[1] + 1))]

view = view[not ((coords[0] == view['lat']) & (coords[1] == view['long'])) ] 

print(view)
Run Code Online (Sandbox Code Playgroud)

我认为 …

python pandas

2
推荐指数
1
解决办法
4365
查看次数

替换或删除python中的特定unicode字符

似乎有很多关于在其他语言中这样做的帖子,但我似乎无法弄清楚如何在Python(我使用2.7).

为了清楚起见,我希望将字符串保持为unicode,只需要替换某些特定字符即可.

例如:

thisToken = u'tandh\u2013bm'
print(thisToken)
Run Code Online (Sandbox Code Playgroud)

在中间打印带有m-dash的单词.我只想删除m-dash.(但使用索引,因为我希望能够在找到这些特定字符的任何地方执行此操作.)

我尝试使用replace你喜欢的任何其他角色:

newToke = thisToken.replace('\u2013','')
print(newToke)
Run Code Online (Sandbox Code Playgroud)

但它只是不起作用.任何帮助深表感谢.赛斯

python unicode python-2.7

2
推荐指数
1
解决办法
6219
查看次数