小编Tra*_*vis的帖子

R中的替换功能

我在他的书的网站上读过Hadley Wickham的Advanced R. 我在R中找到了关于替换函数的问题.根据他的书给出了以下结果.

library(pryr)
x <- 1:10
address(x)
#> [1] "0x103945110"

x[2] <- 7L
address(x)
#> [1] "0x103945110"
Run Code Online (Sandbox Code Playgroud)

如果我们只是替换x的第二个元素,他认为x的地址不会改变.但是,当我这样做时,x的物理地址实际上已经改变了.那么,有谁告诉我为什么?

r

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

熊猫的输出不一致,应用了功能,参数为np.std

sklearn.preprocessing.StandardScaler用来重新缩放数据。我想用来np.std做同样的事情StandardScaler

但是,我发现一个有趣的事情,没有传入其他参数pandas.apply(fun = np.std),输出在样本std和总体std之间变化。(请参阅2问题)

我知道有一个参数叫来ddof在计算样本方差时控制除数,不更改默认参数ddof = 0,如何获得不同的输出!

1个数据集:

首先,以虹膜数据集为例。我按如下方式缩放数据的第一列。

from sklearn import datasets
import numpy as np
from sklearn.preprocessing import StandardScaler
iris = datasets.load_iris()
X_train = iris.data[:,[1]] # my X_train is the first column if iris data
sc = StandardScaler() 
sc.fit(X_train) # Using StandardScaler to scale it!
Run Code Online (Sandbox Code Playgroud)

2问题:在没有更改默认值的情况下,ddof = 0我得到了np.std的不同输出!

import pandas as pd
import sys
print("The mean and std(sample std) of X_train is :")
print(pd.DataFrame(X_train).apply([np.mean,np.std],axis …
Run Code Online (Sandbox Code Playgroud)

python numpy pandas scikit-learn

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

如何在 scipy.stats 中获取分布模式

scipy.stats库具有查找拟合分布的均值和中位数的函数,但不具有查找众数的函数。

如果我在拟合数据后有分布的参数,我如何找到mode拟合分布的参数?

python statistics distribution scipy

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

Sklearn 的课程“StratifiedShuffleSplit”

StratifiedShuffleSplit对 Sklearn类的工作原理有点困惑。

下面的代码来自 Géron 的书“Hands On Machine Learning”,第 2 章,他在那里进行了分层抽样。

from sklearn.model_selection import StratifiedShuffleSplit

split = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
for train_index, test_index in split.split(housing, housing["income_cat"]):
    strat_train_set = housing.loc[train_index]
    strat_test_set = housing.loc[test_index]
Run Code Online (Sandbox Code Playgroud)

特别是,在做什么split.split

谢谢!

python dataset scikit-learn

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

pandas 在组内排序然后聚合

我正在做搜索引擎的查询分析。用户可以在一个会话的不同时间在谷歌搜索引擎上一一搜索不同的查询。

我有多个字段的数据:session_idlog_timequeryfeature_i等。我想分组session_id,然后按 的concat顺序将几行合并为一行。这样输出数据将以时间序列的方式表示用户的行为。log_time

数据集

代码:

toy_data = pd.DataFrame({'session_id':[1,2,1,2,3,3,],
             'log_time':[4,5,6,1,2,3],
             'query':['hi','dude','pandas','groupby','sort','agg'],
             'cate_feat_0':['apple','banana']*3,
             'num_feat_0':[1,2,3,4,5,6]})
print(toy_data)
Run Code Online (Sandbox Code Playgroud)

输出:

       session_id  log_time query cate_feat_0  num_feat_0
0           1         4       hi       apple           1
1           2         5     dude      banana           2
2           1         6   pandas       apple           3
3           2         1  groupby      banana           4
4           3         2     sort       apple           5
5           3         3      agg      banana           6
Run Code Online (Sandbox Code Playgroud)

我想要的是:

## note that all list are sorted by log time …
Run Code Online (Sandbox Code Playgroud)

python sorting group-by dataframe pandas

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

从函数调用返回具有各种元素的命名列表

我有一个这样的功能:

myfunc <- function(x){

    a1 = 1
    a2 = c(2,4)
    a3 = data.frame(x = 1:10)
    ...
    an = 'str'
    res = list(a1 = a1,a2 = a2,..., an=an)
    return(res)
}

Run Code Online (Sandbox Code Playgroud)

正如我们所看到的,我返回带有命名列表的结果。但是,如果元素数量很大,我无法a_i = a_i一一键入。我使用下面的代码片段来节省一半的时间(但我仍然需要输入"元素的名称,这是浪费时间):

res_short = sapply(c('a1','a2',...,'an'),FUN = function(x){list(get(x))})
return(res_short)
Run Code Online (Sandbox Code Playgroud)

请注意,我的元素名称中可能不存在模式a1,a2,...,an,我只是使用a1, a2...an来简化。

我想我返回一个命名列表是好的,因为列表可以存储不同类型的元素。有没有其他方法可以编写我的函数返回?我想明确的节省时间的

r return function apply

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