小编Win*_*981的帖子

矩阵的反对角线的总和

我试图沿矩阵的反对角线(次对角线,次对角线)求和元素.

所以,如果我有一个矩阵m:

m <- matrix(c(2, 3, 1, 4, 2, 5, 1, 3, 7), 3)
m

     [,1] [,2] [,3]
[1,]    2    4    1
[2,]    3    2    3
[3,]    1    5    7
Run Code Online (Sandbox Code Playgroud)

我正在寻找总和m[3, 1] + m[2, 2] + m[1, 3],即1 + 2 + 1

我无法弄清楚如何设置迭代.据我所知,没有这个功能(就像diag()其他对角线一样).

r sum matrix diagonal

14
推荐指数
2
解决办法
4629
查看次数

插入包:列车功能中的分层交叉验证

有没有办法在使用列车功能将模型拟合到大的不平衡数据集时执行分层交叉验证?我知道可以直接进行k折交叉验证,但我的类别非常不平衡.我已经看过关于这个主题的讨论,但没有真正明确的答案.

提前致谢.

cross-validation r-caret

9
推荐指数
1
解决办法
3975
查看次数

np.where不能在我的熊猫中工作

我有一个使用熊猫的np.where问题让我发疯,我似乎无法通过谷歌,文档等解决.

我希望有人有洞察力.我敢肯定它并不复杂.

我有一个df我正在检查一列中的值 - 如果该值是'n/a'(作为字符串,而不是.isnull()),将其更改为另一个值.

Full_Names_Test_2['MarketCap'] == 'n/a'

收益:

70      True
88     False
90      True
145     True
156     True
181     True
191     True
200     True
219     True
223    False
Name: MarketCap, dtype: bool
Run Code Online (Sandbox Code Playgroud)

这部分是有效的.

但是这个:

Full_Names_Test_2['NewColumn'] = np.where(Full_Names_Test_2['MarketCap'] == 'n/a', 7)
Run Code Online (Sandbox Code Playgroud)

收益:

ValueError: either both or neither of x and y should be given
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事?

python where pandas

7
推荐指数
1
解决办法
8501
查看次数

R中的Plotly Maps不渲染

我已成功为R安装了plotly库.

首先,我按照他们的R入门指南,直接从我的RStudio版本0.99.489中的几个图中复制了代码.

散点图,箱形图等的示例效果很好.

气泡和等值线图的示例没有正确绘制.地图根本不渲染.运行代码后只显示标题和图例.

代码链接如下:

https://plot.ly/r/bubble-maps/

https://plot.ly/r/choropleth-maps/

有人可以帮忙吗?

提前致谢.

编辑:

工具:

Rlot的Plotly Library 2.016

R Studio版本0.99.489

R版本3.2.2

在Windows 7 Home 64上运行

为Plotly Bubble Map尝试了一组代码(直接从他们的用户指南/代码示例复制:

library(plotly)
df <- read.csv('https://raw.githubusercontent.com/plotly/datasets/master/2014_us_cities.csv')
df$hover <- paste(df$name, "Population", df$pop/1e6, " million")

df$q <- with(df, cut(pop, quantile(pop)))
levels(df$q) <- paste(c("1st", "2nd", "3rd", "4th", "5th"), "Quantile")
df$q <- as.ordered(df$q)

g <- list(
  scope = 'usa',
  projection = list(type = 'albers usa'),
  showland = TRUE,
  landcolor = toRGB("gray85"),
  subunitwidth = 1,
  countrywidth = 1,
  subunitcolor = toRGB("white"),
  countrycolor = …
Run Code Online (Sandbox Code Playgroud)

r plotly

6
推荐指数
2
解决办法
3962
查看次数

查找Pandas Dataframe中值的索引

我有一个不应该那么困难的问题,但这让我很难过.必须有一个简单的方法来做到这一点.我有一个来自数据框的系列,如下所示:

               value

2001-01-04     0.134
2001-01-05      Nan
2001-01-06      Nan
2001-01-07     0.032
2001-01-08      Nan
2001-01-09     0.113
2001-01-10      Nan
2001-01-11      Nan
2001-01-12     0.112
2001-01-13      Nan
2001-01-14      Nan
2001-01-15     0.136
2001-01-16      Nan
2001-01-17      Nan
Run Code Online (Sandbox Code Playgroud)

从下到上迭代,我需要在下一个最早日期小于0.100的最早日期找到大于0.100的值的索引.

所以在上面的系列中,我想找到值为0.113的索引,即2001-01-09.下一个早期值低于0.100(2001-01-07为0.031).后两个值大于0.100,但我希望最小值的索引> 0.100,小于阈值,从下到上迭代.

我能想到的唯一方法是反转系列,迭代到第一个(最后一个)值,检查它是否> 0.100,然后再次迭代到下一个早期值,并检查它是否小于0.100.如果不是我做完了.如果它> 0.100我必须再次迭代并测试前面的数字.

当然有一种非混乱的方法来做到这一点我没有看到这避免了所有这种逐步迭代.

在此先感谢您的帮助.

iteration pandas

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

Python 替换数据帧字符串中的整个值而不是子字符串

如果整个字符串等于另一个字符串,我试图替换数据框中的字符串。我不想替换子字符串。

所以:

如果我有 df:

 Index  Name       Age
   0     Joe        8
   1     Mary       10
   2     Marybeth   11
Run Code Online (Sandbox Code Playgroud)

当整个字符串与“Amy”匹配“Mary”时,我想替换“Mary”,所以我得到

 Index  Name       Age
   0     Joe        8
   1     Amy        10
   2     Marybeth   11
Run Code Online (Sandbox Code Playgroud)

我正在执行以下操作:

df['Name'] = df['Name'].apply(lambda x: x.replace('Mary','Amy'))
Run Code Online (Sandbox Code Playgroud)

我从搜索中得到的理解是,replacesetregex=False的默认值replace 应该在数据框中查找整个值是“Mary”。相反,我得到这个结果:

 Index  Name       Age
   0     Joe        8
   1     Amy        10
   2     Amybeth   11
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

python regex replace pandas

6
推荐指数
2
解决办法
3164
查看次数

使用 NA 为稀疏矩阵和 XGBOOST 准备数据

我有一个由因子变量、数值变量和目标列组成的大型数据集,我正在尝试将其正确输入到 xgboost 中,目的是制作 xgb.Matrix 并训练模型。

我对将数据帧放入 xgb.DMAtrix 对象的正确处理感到困惑。具体来说,我在因子和数值变量中都有 NA,并且我想在创建 xgb.Matrix 之前从我的数据帧创建一个稀疏.model.matrix。NA 的正确处理确实让我很困惑。

我有以下示例数据帧,df由一个二元分类变量、两个连续变量和一个目标组成。分类变量和一个连续变量具有 NA

'data.frame':   10 obs. of  4 variables:
 $ v1    : Factor w/ 2 levels "0","1": 1 2 2 1 NA 2 1 1 NA 2
 $ v2    : num  3.2 5.4 8.3 NA 7.1 8.2 9.4 NA 9.9 4.2
 $ v3    : num  22.1 44.1 57 64.2 33.1 56.9 71.2 33.9 89.3 97.2
 $ target: Factor w/ 2 levels "0","1": 1 1 2 2 1 …
Run Code Online (Sandbox Code Playgroud)

r matrix na xgboost

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

计算熊猫的累计复合收益

我有一系列的每日百分比回报率returns

                   Returns
Date
2003-03-03         0.0332
2003-03-04         0.0216
2003-03-05         0.0134
...
2010-12-29         0.0134
2010-12-30         0.0133
2010-12-31        -0.0297
Run Code Online (Sandbox Code Playgroud)

我可以由初始值的值设置为1,并使用计算的返回索引 cumprod()

ret_index = (1 + returns).cumprod()

ret_index[0] = 1
Run Code Online (Sandbox Code Playgroud)

这给了我这样的东西:

Date
2003-03-03         1.0000
2003-03-04         1.0123
2003-03-05         1.1334
...
2010-12-29         2.3344
2010-12-30         2.3544
2010-12-31         2.3643
Run Code Online (Sandbox Code Playgroud)

所以,我的累计复配比例的回报为全系列约236%。

我的问题:我想计算系列(2003、2004 ... 2010)中每年的累计复合百分比回报。

我能想到的唯一方法是遍历我的初始系列,按年分割,将第一个元素设置为1,然后计算每年的回报。我认为使用datetime(索引是Datetimeindex)和重采样有任何更简单的方法。

有人可以帮忙吗?

python dataframe pandas

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

Scikit Learn roc_auc_score 和 ROC 图的正确输入

我正在尝试确定roc_auc_score验证集上的拟合模型。

我看到有关函数输入的一些相互矛盾的信息。

文档说:

“y_score 形状为 (n_samples,) 或 (n_samples, n_classes) 的类似数组目标分数。在二元和多标签情况下,这些可以是概率估计或非阈值决策值(由某些分类器上的 Decision_function 返回)。在多类情况下,这些必须是总和为 1 的概率估计。二元情况需要一个形状 (n_samples,),并且分数必须是具有更大标签的类的分数。多类和多标签情况需要一个形状 (n_samples) , n_classes)。在多类情况下,类分数的顺序必须对应于标签的顺序(如果提供),否则对应于 y_true 中标签的数字或字典顺序。

不确定这到底需要什么:1)针对测试集中实际 y 值的预测概率或 2)针对测试集中实际 y 值的类预测

我一直在搜索,在二元分类情况(我的兴趣)中,有些人使用预测概率,而另一些人使用实际预测(0 或 1)。换句话说:

适配型号:

model.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)

使用以下任一方法:

y_preds = model.predict(X_test)
Run Code Online (Sandbox Code Playgroud)

或者:

y_probas = model.predict_proba(X_test)
Run Code Online (Sandbox Code Playgroud)

我发现:

roc_auc_score(y_test, y_preds)
Run Code Online (Sandbox Code Playgroud)

和:

roc_auc_score(y_test, y_probas[:,1]) # probabilites for the 1 class
Run Code Online (Sandbox Code Playgroud)

产生截然不同的结果。

哪一个是正确的?

我还发现,要实际绘制 ROC 曲线,我需要使用概率。

任何指导表示赞赏。

python roc scikit-learn auc

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

美汤根据部分属性值查找标签

我正在尝试根据属性值的一部分来识别 html 文档中的标签。

例如,如果我有一个 Beautifulsoup 对象:

import bs4 as BeautifulSoup

r = requests.get("http:/My_Page")

soup = BeautifulSoup(r.text, "html.parser")
Run Code Online (Sandbox Code Playgroud)

我想要tr具有id其值格式如下的属性的标签:“news_4343_23255_xxx”。我对任何tr标签感兴趣,只要它有“新闻”作为id属性值的前 4 个字符。

我知道我可以搜索如下:

trs = soup.find_all("tr",attrs={"id":True})
Run Code Online (Sandbox Code Playgroud)

这给了我所有tr带有id属性的标签。

如何根据子字符串进行搜索?

python beautifulsoup

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