小编Dan*_*Dan的帖子

在 python 中使用 taylor 系列的 log(1+e^x) 扩展 1 个暗向量

我需要使用特定非线性函数的泰勒级数扩展对来自 1 个暗像素向量的每个像素值进行非线性扩展(e^x or log(x) or log(1+e^x) ) 的,但至少基于泰勒级数概念,我目前的实现对我来说是不正确的。背后的基本直觉是将像素阵列作为 CNN 模型的输入神经元,其中每个像素都应该通过非线性函数的泰勒级数展开进行非线性展开。

新更新1

从泰勒级数我的理解,泰勒级数为函数写F一个变量x的函数的值而言F,它是在为变量的另一个值衍生物x0。在我的问题中,F是特征(又名,像素)的非线性变换函数,x是每个像素值,x0是 0 处的麦克劳林级数近似值。

新的更新 2

如果我们使用log(1+e^x)近似阶数为 2 的泰勒级数,则每个像素值将通过采用泰勒级数的第一和第二展开项产生两个新像素。

图解说明

这是上述公式的图形说明:

在此处输入图片说明

其中X是像素阵列,p是泰勒级数的近似阶数,?是泰勒展开系数。

我想用非线性函数的泰勒级数展开来非线性地展开像素向量,如上图所示。

我目前的尝试

这是我目前的尝试,但对像素阵列无法正常工作。我正在考虑如何使相同的想法适用于像素阵列。

def taylor_func(x, approx_order=2):
    x_ = x[..., None] 
    x_ = tf.tile(x_, multiples=[1, 1, approx_order+ 1])  
    pows = tf.range(0, approx_order + 1, dtype=tf.float32) 
    x_p = tf.pow(x_, pows) 
    x_p_ = x_p[..., None]
    return …
Run Code Online (Sandbox Code Playgroud)

python nonlinear-functions taylor-series conv-neural-network tensorflow

10
推荐指数
2
解决办法
813
查看次数

如何在keras中实现麦克劳林系列?

我正在尝试使用 maclaurin 系列来实现可扩展的 CNN。基本思想是可以将第一个输入节点分解为具有不同阶数和系数的多个节点。将单个节点分解为多个节点可以生成与麦克劳林级数不同的非线性线连接。谁能给我一个关于如何CNN用麦克劳林级数非线性展开展开的可能想法?任何想法?

我不太明白如何将输入节点分解为多个具有不同非线性线连接的节点,这些节点由麦克劳林级数生成。据我所知,麦克劳林级数是一个近似函数,但分解节点在实现方面对我来说不是很直观。如何在python中实现一个分解输入节点到多个节点?如何轻松实现这一目标?任何的想法?

我的尝试

import tensorflow as tf
import numpy as np
import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, MaxPooling2D, Dropout, Flatten
from keras.datasets import cifar10
from keras.utils import to_categorical

(train_imgs, train_label), (test_imgs, test_label)= cifar10.load_data()
output_class = np.unique(train_label)
n_class = len(output_class)

nrows_tr, ncols_tr, ndims_tr = train_imgs.shape[1:]
nrows_ts, ncols_ts, ndims_ts = test_imgs.shape[1:]
train_data = train_imgs.reshape(train_imgs.shape[0], nrows_tr, ncols_tr, ndims_tr)

test_data = test_imgs.reshape(test_imgs.shape[0], nrows_ts, ncols_ts, ndims_ts)
input_shape = (nrows_tr, ncols_tr, ndims_tr)
train_data = train_data.astype('float32') …
Run Code Online (Sandbox Code Playgroud)

python taylor-series deep-learning keras

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

有什么解决方法可以找到最佳阈值,以基于R中的相关矩阵来过滤原始特征?

我打算通过测量其Pearson相关性来提取高度相关的特征,并由此获得相关性矩阵。但是,为了过滤高相关特征,我任意选择了相关系数,我不知道过滤高相关特征的最佳阈值。我正在考虑先量化正相关和负相关的特征,然后获得可靠的数据来设置过滤特征的阈值。谁能指出我如何从相关矩阵中量化正负相关特征?是否有任何有效的方法来选择用于过滤高度相关特征的最佳阈值?

可复制的数据

这是我使用的可重现数据,而row是样本数,原始特征数中的列:

> dput(my_df)
structure(list(SampleID = c("Tarca_001_P1A01", "Tarca_013_P1B01", 
"Tarca_025_P1C01", "Tarca_037_P1D01", "Tarca_049_P1E01", "Tarca_061_P1F01", 
"Tarca_051_P1E03", "Tarca_063_P1F03", "Tarca_075_P1G03", "Tarca_087_P1H03"
), GA = c(11, 15.3, 21.7, 26.7, 31.3, 32.1, 19.7, 23.6, 27.6, 
30.6), `1_at` = c(6.06221469449721, 5.8755020052495, 6.12613148162098, 
6.1345548976595, 6.28953417729806, 6.08561779473768, 6.25857984382111, 
6.22016811759586, 6.22269236303877, 6.11986885253451), `10_at` = c(3.79648446367096, 
3.45024474095539, 3.62841140410044, 3.51232455992681, 3.56819306931016, 
3.54911765491621, 3.59024881523945, 3.69553021972333, 3.61860245801661, 
3.74019994293802), `100_at` = c(5.84933778267459, 6.55052475296263, 
6.42187743053935, 6.15489279092855, 6.34807354206396, 6.11780116002087, 
6.24635169763079, 6.25479583503303, 6.16095987926232, 6.26979789563404
), `1000_at` = c(3.5677794435745, 3.31613364795286, 3.43245075704917, 
3.63813996294905, 3.39904385276621, 3.54214650423219, 3.51532853598111, 
3.50451431462302, 3.38965905673286, 3.54646930636612), `10000_at` …
Run Code Online (Sandbox Code Playgroud)

r data-manipulation feature-extraction correlation

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

有什么解决方法可以将混合数据类型聚类并在R中渲染3D散点图?

我试图查看3D图中标记组内的数据点分布,因为我想查看数据点的分布,并希望查看3D空间中每组数据点的相似程度。为此,我使用了来自CRAN的scatterplot3d软件包来获取3D散点图,但没有获得适合我的数据的正确图。

可复制的数据

这是我使用的可复制数据。

    > dput(head(phenDat,30))
structure(list(SampleID = c("Tarca_001_P1A01", "Tarca_013_P1B01", 
"Tarca_025_P1C01", "Tarca_037_P1D01", "Tarca_049_P1E01", "Tarca_061_P1F01", 
"Tarca_051_P1E03", "Tarca_063_P1F03", "Tarca_075_P1G03", "Tarca_087_P1H03", 
"Tarca_004_P1A04", "Tarca_064_P1F04", "Tarca_076_P1G04", "Tarca_088_P1H04", 
"Tarca_005_P1A05", "Tarca_017_P1B05", "Tarca_054_P1E06", "Tarca_066_P1F06", 
"Tarca_078_P1G06", "Tarca_090_P1H06", "Tarca_007_P1A07", "Tarca_019_P1B07", 
"Tarca_031_P1C07", "Tarca_079_P1G07", "Tarca_091_P1H07", "Tarca_008_P1A08", 
"Tarca_020_P1B08", "Tarca_022_P1B10", "Tarca_034_P1C10", "Tarca_046_P1D10"
), GA = c(11, 15.3, 21.7, 26.7, 31.3, 32.1, 19.7, 23.6, 27.6, 
30.6, 32.6, 12.6, 18.6, 25.6, 30.6, 36.4, 24.9, 28.9, 36.6, 19.9, 
26.1, 30.1, 36.7, 13.6, 17.6, 22.6, 24.7, 13.3, 19.7, 24.7), 
    Batch = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, …
Run Code Online (Sandbox Code Playgroud)

r cluster-analysis ggplot2 dplyr

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

如何对data.frame列表应用条件重复删除?

我有data.frame列表,需要应用非常具体的重复删除方法.我有理由对此data.frame列表使用特定的条件重复删除.但是,每个data.frame的重复删除条件是不同的.我想为第一个列表元素完成重复删除; 对于第二个列表元素,我需要搜索出现两次以上的行(freq> 2),并且只保留一行; 对于第三个列表元素,搜索出现三次以上的行(freq> 3),并在该data.frame中保留两行.我正在尝试为此数据操作任务获得更多编程,动态的解决方案.我尝试了我的镜头以获得很好的解决方案,但无法获得我想要的输出.我怎样才能轻松实现这一目标?任何方式更有效地完成此任务尊重我的具体输出?有什么好主意吗?

可重现的data.frame:

myList <- list(
    bar= data.frame(start.pos=c(9,19,34,54,70,82,136,9,34,70,136,9,82,136),
                    end.pos=c(14,21,39,61,73,87,153,14,39,73,153,14,87,153),
                    pos.score=c(48,6,9,8,4,15,38,48,9,4,38,48,15,38)),
    cat = data.frame(start.pos=c(7,21,21,72,142,7,16,21,45,72,100,114,142,16,72,114),
                     end.pos=c(10,34,34,78,147,10,17,34,51,78,103,124,147,17,78,124),
                     pos.score=c(53,14,14,20,4,53,20,14,11,20,7,32,4,20,20,32)),
    foo= data.frame(start.pos=c(12,12,12,58,58,58,118,12,12,44,58,102,118,12,58,118),
                    end.pos=c(36,36,36,92,92,92,139,36,36,49,92,109,139,36,92,139),
                    pos.score=c(48,48,48,12,12,12,5,48,48,12,12,11,5,48,12,5))
)
Run Code Online (Sandbox Code Playgroud)

因为myList是自定义函数的结果,所以data.frame无法分离.我正在寻求更多的程序化解决方案,以便为我的数据进行特定的重复删除.如果输入是data.frame列表,如何进行特定的重复删除?

我想要的输出如下:

expectedList <- list(
    bar= data.frame(start.pos=c(9,19,34,54,70,82,136),
                    end.pos=c(14,21,39,61,73,87,153),
                    pos.score=c(48,6,9,8,4,15,38)),
    cat= data.frame(start.pos=c(7,21,72,142,7,16,45,100,114,142,16,114),
                    end.pos=c(10,34,78,147,10,17,51,103,124,147,17,124),
                    pos.score=c(53,14,20,4,53,20,11,7,32,4,20,32)),
    foo= data.frame(start.pos=c(12,12,44,58,58,118,102,118,118),
                    end.pos=c(36,36,49,92,92,139,109,139,139),
                    pos.score=c(48,48,12,12,12,5,11,5,5))
)
Run Code Online (Sandbox Code Playgroud)

编辑:

在第二个data.frame中cat,我将查找出现三次的行,并将这些行只保留一次; 如果行出现两次,我不会对其进行重复删除.

对于第三个data.frame foo,我将检查出现三次以上的行,并保留两个相同的行.这就是我试图为每个data.frame进行非常具体的重复删除.我如何获得输出?

如何获得我想要的data.frame列表?我怎样才能轻松实现这一目标?非常感谢 !

r duplicates dataframe

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

有什么方法可以从 R 中的累积 PCA 图中选择前 n 个 PCA 组件?

我有兴趣从我的数据集的累积 PCA 图中选取前 10 个 PCA 组件。我设法获得了 PCA 图,例如碎石图、配对图等,但对我来说没有多大意义。所以我想从它的累积 PCA 图中选择前 10 个 PCA 图并且我做到了,但是我需要使用这个前 10 个 PCA 组件来对我的原始数据集进行子集化。谁能指出我如何使尝试更准确和更可取?

可重复数据

persons_df <- data.frame(person1=sample(1:200,20, replace = FALSE),
                    person2=as.factor(sample(20)),
                    person3=sample(1:250,20, replace = FALSE),
                    person4=sample(1:300,20, replace = FALSE),
                    person5=as.factor(sample(20)),
                    person6=as.factor(sample(20)))

row.names(persons_df) <-letters[1:20]
Run Code Online (Sandbox Code Playgroud)

我的尝试

my_pca <- prcomp(t(persons_df), center=TRUE, scale=FALSE)
summary(my_pca)

my_pca_proportionvariances <- cumsum(((my_pca$sdev^2) / (sum(my_pca$sdev^2)))*100)
Run Code Online (Sandbox Code Playgroud)

公共数据集

由于我在创建上述可复制数据时遇到了一些问题,因此我在这里链接了公共示例数据集

在这里,我需要为 选择前 10 个 PCA 组件persons_df,然后对原始数据进行子集化,然后对其运行简单的线性回归。我怎样才能在这里完成我的方法以实现我的目标?有人能在这里快速指出我吗?任何的想法?

r pca feature-selection

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