H,我有一个像这样的数据框:
d <- data.frame(v1=seq(0,9.9,0.1),
v2=rnorm(100),
v3=rnorm(100))
> head(d)
v1 v2 v3
1 0.0 -0.01431916 -0.5005415
2 0.1 -1.01575590 1.5307473
3 0.2 1.00081065 -0.1730830
4 0.3 -1.20697918 0.5105118
5 0.4 -2.16698578 -1.0120544
6 0.5 0.33886508 0.4797016
Run Code Online (Sandbox Code Playgroud)
我现在想要一个新的数据框,该数据框汇总所有区间0-0.99、1-1.99、2-2.99、3-3.99 ...中的值。
像这样
start end mean.v2 mean.v3
0 1 0.2 0.1
1 2 0.5 0.4
Run Code Online (Sandbox Code Playgroud)
等等
谢谢
更新,我应该补充一点,在我的真实数据集中,每个时间间隔的观察值具有不同的长度,并且它们并不总是从零开始或以10结束
在科学中,负二项式分布定义为:
nbinom.pmf(k) = choose(k+n-1, n-1) * p**n * (1-p)**k
Run Code Online (Sandbox Code Playgroud)
这是常见的定义,另请参见维基百科:https : //en.wikipedia.org/wiki/Negative_binomial_distribution
但是,存在另一个参数化,其中负二项式由均值mu和色散参数定义。
在R中,这很容易,因为可以通过两个参数来定义负数:
dnbinom(x, size, prob, mu, log = FALSE)
Run Code Online (Sandbox Code Playgroud)
如何在scipy中使用均值/色散参数化?
编辑:
直接从R帮助:
大小= n和概率= p的负二项分布具有密度
?(x + n)/(?(n)x!)p ^ n(1-p)^ x
另一种参数化(通常在生态学中使用)是通过均值mu(请参见上文)和大小,分散参数确定的,其中prob =大小/(size + mu)。在该参数化中,方差为mu + mu ^ 2 / size。
这里也有更详细的描述:
https://zh.wikipedia.org/wiki/Negative_binomial_distribution#Alternative_formulations
我正在分析医学图像。所有图像都有一个带有位置的标记。看起来像这样

这是该图像中的“TRH RMLO”注释,但在其他图像中可能有所不同。而且大小也不同。图像已被裁剪,但您会看到组织从右侧开始。我发现这些标记的存在扭曲了我的分析。
我怎样才能删除它们?
我像这样在 python 中加载图像
import dicom
import numpy as np
img = dicom.read_file(my_image.dcm)
img_array = img.pixel_array
Run Code Online (Sandbox Code Playgroud)
那么图像就是一个 numpy 数组。白色文本始终被大片黑色区域包围(黑色值为零)。标记在每个图像中位于不同的位置。
如何在不损害组织数据的情况下删除白色文本。
更新
添加了第二张图片
UPDATE2:这是两个原始的 dicom 文件。所有个人信息已被删除。编辑:删除
我想在keras中使用预训练的imagenet VGG16模型,并在顶部添加我自己的小型网站.我只对功能感兴趣,而不是对预测感兴趣
from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
from keras.applications.vgg16 import VGG16
from keras.preprocessing import image
from keras.applications.vgg16 import preprocess_input
import numpy as np
import os
from keras.models import Model
from keras.models import Sequential
from keras.layers import Convolution2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
Run Code Online (Sandbox Code Playgroud)
从目录加载图像(目录包含4个图像)
IF = '/home/ubu/files/png/'
files = os.listdir(IF)
imgs = [img_to_array(load_img(IF + p, target_size=[224,224])) for p in files]
im = np.array(imgs)
Run Code Online (Sandbox Code Playgroud)
加载基础模型,预处理输入并获取功能
base_model = VGG16(weights='imagenet', include_top=False)
x = preprocess_input(aa)
features = base_model.predict(x)
Run Code Online (Sandbox Code Playgroud)
这是有效的,我在预训练的VGG上获得了我的图像功能.
我现在想要微调模型并添加一些卷积层.我阅读了 …
我在Keras中使用预训练模型来生成一组图像的特征:
model = InceptionV3(weights='imagenet', include_top=False)
train_data = model.predict(data).reshape(data.shape[0],-1)
Run Code Online (Sandbox Code Playgroud)
但是,我有很多图像,Imagenet模型为每个图像输出131072个特征(列).
有了200k的图像,我会得到一个(200000, 131072)太大而无法放入内存的数组.
更重要的是,我需要将此数组保存到磁盘,当保存为.npy或时,它将占用100 GB的空间.h5py
我可以通过只提供1000个像这样的批量图像并将它们保存到磁盘来避免内存问题,但不能解决磁盘空间问题.
如何在不丢失太多信息的情况下缩小模型?
更新
正如答案所示,我还在模型中包含了下一层:
base_model = InceptionV3(weights='imagenet')
model = Model(input=base_model.input, output=base_model.get_layer('avg_pool').output)
Run Code Online (Sandbox Code Playgroud)
这减少了输出 (200000, 2048)
更新2:
另一个有趣的解决方案可能是bcolz减少numpy数组大小的软件包 https://github.com/Blosc/bcolz
我有三个不同的数据集,分别在其中生成一个构面图
a = sns.FacetGrid(data1, col="overlap", hue="comp")
a = (g.map(sns.kdeplot, "val",bw=0.8))
b = sns.FacetGrid(data2, col="overlap", hue="comp")
b = (g.map(sns.kdeplot, "val",bw=0.8))
c = sns.FacetGrid(data3, col="overlap", hue="comp")
c = (g.map(sns.kdeplot, "val",bw=0.8))
Run Code Online (Sandbox Code Playgroud)
这些地块中的每一个都在一行中具有三个子图,因此我总共有九个地块。
我想在这样的子图设置中组合这些图
f, (ax1, ax2, ax3) = plt.subplots(3,1)
ax1.a
ax2.b
ax3.c
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我想从data.frame中删除标准差为零的所有列.
这不起作用:
df <- df[, ! apply(df , 2 , function(x) sd(x)==0 ) ]
Run Code Online (Sandbox Code Playgroud)
我收到错误:
选择了未定义的列
UPDATE
我选择Filter了我的首选答案,因为它似乎也处理NAs,这是非常有用的.
例如,在
df <- data.frame(v1=c(0,0,NA,0,0), v2=1:5)
Run Code Online (Sandbox Code Playgroud)
Filter当apply方法产生错误时,删除列'v1' .
感谢所有其他解决方案,我从他们那里学到了很多东西.
UPDATE2:
应用给出的那些错误可以通过添加na.rm = TRUE到sd的调用来修复,如下所示:
df[, ! apply(df , 2 , function(x) sd(x, na.rm = TRUE)==0 ) ]
Run Code Online (Sandbox Code Playgroud) 对于这样的情节:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 400)
y = np.sin(x ** 2)
f, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, sharey=True)
ax1.plot(x, y)
ax2.scatter(x, y)
ax3.scatter(x, 2 * y ** 2 - 1, color='r')
ax4.plot(x, 2 * y ** 2 - 1, color='r')
Run Code Online (Sandbox Code Playgroud)
如何为一行添加字幕?它应该是这样的:
我用photoshop制作了“Title1”和“Title2”,如何将它们添加到python中的情节中?
我有一个非常大的数据集(numpy数组),可以对它进行PCA来减少维数。数据集称为train_data。我使用scikit-learn并像这样
pca = PCA(n_components=1000, svd_solver='randomized')
pca.fit()
smaller_data = pca.transform(train_data)
Run Code Online (Sandbox Code Playgroud)
我有第二个数据集test_data,我想对其使用相同的转换,如下所示:
smaller_test = pca.transform(test_data)
Run Code Online (Sandbox Code Playgroud)
但是,在这两个步骤之间,我需要将模型保存到磁盘。
根据scikit文档,我可以用pickle做到这一点
pickle.dump(pca, open( "pca.p", "wb" ) )
Run Code Online (Sandbox Code Playgroud)
但是对于我有限的磁盘空间,此pickle文件太大了。
缩减的数据集smaller_data具有可接受的大小,可以保存为.npy文件:
np.save('train_data_pca.npy', train_data)
Run Code Online (Sandbox Code Playgroud)
如何使用此文件进行转换(test_data),或使保存的pca泡菜变小?使用gzip包压缩还不够,我尝试过。
我有一个像这样的数据框:
df <- data.frame(id = c(1,1,1,2,2,3,3,3,3),
vars = c(1,2,5, 1,3, 0,2,4,-1))
> df
id vars
1 1 1
2 1 2
3 1 5
4 2 1
5 2 3
6 3 0
7 3 2
8 3 4
9 3 -1
Run Code Online (Sandbox Code Playgroud)
在此数据框中,每个人都id可以有几个观察结果。现在,我想为每个选择id对的绝对差最小的对(2个观测值)vars。
在上述情况下,
id vars
1 1 1
2 1 2
3 2 1
4 2 3
5 3 0
6 3 -1
Run Code Online (Sandbox Code Playgroud)
对于id1,值1和2具有最小的绝对差,
id2仅具有2个观测值,因此两者都是自动选择的。对于id3个,所选的var将为0和-1,因为绝对差为1,低于所有其他组合。