通常,当数据帧经历reset_index()
新列时,会为其分配名称index
或level_i
根据级别.
是否可以为新列指定名称?
当 cbar 开启时,seaborn 热图中的单元格是矩形的。我可以改变我的轴的 figsize,但我想知道是否有更简单的方法来保持单元格的正方形。
假设我有函数,f
它接受一些变量并返回相同类型的变量.为简单起见,我们说
def f(x):
return x/2+1
Run Code Online (Sandbox Code Playgroud)
我有兴趣f
一遍又一遍地申请自己.有点像f(f(f(...(f(x))...)))
.
我可以这样做
s = f(x)
for i in range(100):
s = f(s)
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有一种更简单,更简洁的方式来做同样的事情.我不想避免for
循环(就像对自己的挑战).是否有某种使用方法map
或类似功能来实现这一目标?
我subplot2grid
用来制作如下的子图:
为了使刻度足够大以便发布,我需要增加轴之间的垂直和水平间距.
通常,我会使用类似的东西subplot_adjust(hspace = 0.5)
,但这似乎不适用subplot2grid
.
有人可以推荐一个解决方案吗?
这是我用来绘制事物和创建轴的代码:
import matplotlib.pyplot as plt
ax1 = plt.subplot2grid((2,2),(0,0), colspan = 2)
ax2 = plt.subplot2grid((2,2),(1,0), colspan = 1)
ax3 = plt.subplot2grid((2,2),(1,1), colspan = 1)
df.plot( ax = ax1)
plt.show()
Run Code Online (Sandbox Code Playgroud) 创建某个图需要大量工作,因此我想通过创建一个f()
返回图形的函数来自动执行此操作。
我想调用这个函数,以便我可以把结果放在一个子图中。无论如何我可以做到这一点吗?下面是一些解释我的意思的伪代码
figure_of_interest = f()
fig,ax = plt.subplots(nrows = 4,cols = 1)
ax[1].replace_with(figure_of_interest)
Run Code Online (Sandbox Code Playgroud) 我有兴趣使用套索解决我遇到的问题。 这是该算法的链接。我知道R有一个很好的实现,但是很好奇python是否有类似的东西。
我认为sklearn.linear_model.MultiTaskLasso
可能有点相似,但不确定。谁能对此有所启发?
我正在尝试TransformedTargetRegressor
在模型管道中使用并在其GridSearchCV
上运行。
这是一个最小的工作示例:
from sklearn.datasets import make_regression
from sklearn.ensemble import RandomForestRegressor
from sklearn.pipeline import Pipeline
from sklearn.model_selection import GridSearchCV
from sklearn.compose import TransformedTargetRegressor
X,y = make_regression()
model_pipe = Pipeline([
('model', TransformedTargetRegressor(RandomForestRegressor()))
])
params={'model__n_estimators': [1, 10, 50]}
model = GridSearchCV(model_pipe, param_grid= params)
model.fit(X,y)
Run Code Online (Sandbox Code Playgroud)
此模型导致以下错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-48-828bdf0e7ede> in <module>
17 model = GridSearchCV(model_pipe, param_grid= params)
18
---> 19 model.fit(X,y)
~/miniconda3/envs/gymbo/lib/python3.6/site-packages/sklearn/model_selection/_search.py in fit(self, X, y, groups, **fit_params)
686 return results
687
--> 688 self._run_search(evaluate_candidates) …
Run Code Online (Sandbox Code Playgroud) 我正在使用 python 进行一些机器学习。
我有一个包含 2000 个条目的 python nd 数组。每个条目都包含有关某些主题的信息,最后有一个布尔值来告诉我他们是否是吸血鬼。
数组中的每个条目如下所示:
[height(cm), weight(kg), stake aversion, garlic aversion, reflectance, shiny, IS_VAMPIRE?]
Run Code Online (Sandbox Code Playgroud)
我的目标是根据上面显示的对象数据,能够给出新对象是吸血鬼的概率。
我使用 sklearn 为我做了一些机器学习:
clf = tree.DecisionTreeRegressor()
clf=clf.fit(X,Y)
print clf.predict(W)
Run Code Online (Sandbox Code Playgroud)
其中 W 是新主题的数据数组。我编写的脚本返回布尔值,但我希望它返回概率。我该如何修改它?
假设我有一些观察,每个观察都有从1
到的指示类n
。这些类别中的每一个不一定在数据集中均等出现。
我如何从数据框中同样采样?现在我做类似...
frames = []
classes = df.classes.unique()
for i in classes:
g = df[df.classes = i].sample(sample_size)
frames.append(g)
equally_sampled = pd.concat(frames)
Run Code Online (Sandbox Code Playgroud)
是否有熊猫函数可以同样采样?
我想在直方图上绘制一条垂直线,其中分面后数据的中位数。我想这样做stat_summary
,如下所示。这种方法的问题是 y 轴的比例不正确
我想这是因为我打电话给ggplot(aes(x=data, y=data))
. 对直方图做似乎有点奇怪,但我这样做的原因是因为stat_summary
需要任何审美。有没有办法可以绘制中位数,stat_summary
但保持我打电话时的比例geom_histogram
?我可以添加 aylim
但这种方法的问题是我可能不知道我可能会看到的新数据的正确上限是什么先验。
下面是生成我的示例的 reprex。
library(tidyverse)
#> Warning: package 'tibble' was built under R version 3.6.2
d = tribble(
~groupvar, ~data,
'a', rlnorm(10,2, 0.5),
'b', rlnorm(10,2, 0.5),
'c', rlnorm(10,5, 0.5)
) %>% unnest(c(data))
d %>%
ggplot(aes(x = data, y = data, group = groupvar))+
geom_histogram(aes(y = ..count..))+
facet_grid(~groupvar)+
stat_summary(aes(x=0, xintercept=stat(y)), fun = median, geom = 'vline')
#> `stat_bin()` using `bins = 30`. Pick better …
Run Code Online (Sandbox Code Playgroud)