小编DN1*_*DN1的帖子

如何使用 ggplot 函数添加到 cnetplot?

我在 R 中有一个数据集,它是“正式类丰富结果”类。我使用 DOSE 包绘制该数据集中的基因cnetplot()- 这意味着基于 ggplot 图形。这绘制了相互作用途径中的基因网络: 在此输入图像描述

我为此编写了代码:

kegg_organism = "hsa"
kegg_enrich <-  enrichKEGG(gene   = df$geneID,
                   organism     = 'hsa',
                   pvalueCutoff = 0.05,
                   pAdjustMethod = 'fdr')

kegg <- setReadable(kegg_enrich, 'org.Hs.eg.db', 'ENTREZID')
kegg_genes <- kegg[,]

gene_of_interest <- dplyr::filter(kegg_genes, grepl('CALML6', geneID))
gene_of_interest <- enrichDF2enrichResult(gene_of_interest)

gene_list_scores <- df$Score
names(gene_list_scores) <- df$geneID
gene_list_scores <- na.omit(gene_list_scores)
gene_list_scores <- sort(gene_list_scores, decreasing = TRUE)

plot <- cnetplot(gene_of_interest, foldChange = gene_list_scores)

plot <- plot + scale_color_gradient2(name='Score', low='steelblue', high='firebrick')
Run Code Online (Sandbox Code Playgroud)

我希望用指示基因药物类型类别的形状覆盖该图,但我在实现此功能时遇到困难。

我将药物数据与丰富结果数据分开,我的药物数据如下所示:

drugs <- structure(list(Gene = c("ACE", "AQP1", …
Run Code Online (Sandbox Code Playgroud)

r bioinformatics ggplot2

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

如何在python中加快嵌套交叉验证?

从我发现的内容来看,还有一个其他问题(加速嵌套交叉验证),但是尝试在此站点和Microsoft上提出了一些修复建议后,安装MPI对我也不起作用,所以我希望有另一个软件包或回答这个问题。

我正在寻找比较多种算法和gridsearch各种参数(也许参数太多?)的方法,除了mpi4py之外还有什么方法可以加快我的代码的运行速度?据我了解,我不能使用n_jobs = -1,因为那是不嵌套的?

还要注意,我无法在下面尝试查看的许多参数上运行它(运行时间超过了我的时间)。如果我给每个模型仅两个参数进行比较,则只有2小时后才会有结果。另外,我在252行和25个特征列以及4个类别变量的数据集上运行此代码,以预测(“确定”,“可能”,“可能”或“未知”)某个基因(具有252个基因)是否影响疾病。使用SMOTE将样本大小增加到420,然后将其投入使用。

dataset= pd.read_csv('data.csv')
data = dataset.drop(["gene"],1)
df = data.iloc[:,0:24]
df = df.fillna(0)
X = MinMaxScaler().fit_transform(df)

le = preprocessing.LabelEncoder()
encoded_value = le.fit_transform(["certain", "likely", "possible", "unlikely"])
Y = le.fit_transform(data["category"])

sm = SMOTE(random_state=100)
X_res, y_res = sm.fit_resample(X, Y)

seed = 7
logreg = LogisticRegression(penalty='l1', solver='liblinear',multi_class='auto')
LR_par= {'penalty':['l1'], 'C': [0.5, 1, 5, 10], 'max_iter':[500, 1000, 5000]}

rfc =RandomForestClassifier()
param_grid = {'bootstrap': [True, False],
              'max_depth': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, None],
              'max_features': ['auto', 'sqrt'], …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing scikit-learn cross-validation dask

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

如何按r中其他列中的条件对行进行排序?

我有一个遗传数据集,我希望在其中对样本/基因进行排序,并按基因组中彼此相距一定距离的样本/基因进行分组。

例如,我的数据集如下所示:

#dt1
Gene    chromosome position      CP 
Gene1      1       70000200   1:70000200
Gene2      5       10000476   5:10000476
Gene3      1       70000201   1:70000201
Gene4      5       10000475   5:10000475
Run Code Online (Sandbox Code Playgroud)

我还有一个原点位置数据集:

#dt2
chromosome   position  CP
    1        70005000  1:70005000
    5        10005000  5:10005000
Run Code Online (Sandbox Code Playgroud)

如果基因在我的第二个 dt2 数据集中的任何位置的 +/- 500000 距离内并且在同一条染色体上,我正在尝试对我的第一个数据集中的基因进行分组。我的实际数据中存在一个问题,对于针对多个起源 dt2 位置的基因来说,这可能是正确的,所以我也试图对它最接近的一个进行排序。

输出旨在给出有序组:

Gene   chromosome  position   Group 
Gene1      1       70000200    1
Gene3      1       70000201    1
Gene4      5       10000475    2
Gene2      5       10000476    2
Run Code Online (Sandbox Code Playgroud)

Gene1 和 Gene3 位于原始 dt2 位置的 500000 范围内,并且都在同一条染色体上,因此分组在一起,并且基因 4 和 2 相同

目前我正在尝试这样做:

dt2[, c("low", "high") := …
Run Code Online (Sandbox Code Playgroud)

r bioinformatics conditional-statements data.table

6
推荐指数
3
解决办法
286
查看次数

如何阻止梯度提升机过度拟合?

我在多分类问题上比较了几个模型(梯度提升机、随机森林、逻辑回归、SVM、多层感知器和 keras 神经网络)。我在我的模型上使用了嵌套交叉验证和网格搜索,在我的实际数据和随机数据上运行这些,以检查过度拟合。然而,对于我发现的梯度提升机,无论我如何更改我的数据或模型参数,它每次都能为我提供 100% 的随机数据准确率。我的代码中有什么可能导致这种情况吗?

这是我的代码:

dataset= pd.read_csv('data.csv')
data = dataset.drop(["gene"],1)
df = data.iloc[:,0:26]
df = df.fillna(0)
X = MinMaxScaler().fit_transform(df)

le = preprocessing.LabelEncoder()
encoded_value = le.fit_transform(["certain", "likely", "possible", "unlikely"])
Y = le.fit_transform(data["category"])

sm = SMOTE(random_state=100)
X_res, y_res = sm.fit_resample(X, Y)

seed = 7
logreg = LogisticRegression(penalty='l1', solver='liblinear',multi_class='auto')
LR_par= {'penalty':['l1'], 'C': [0.5, 1, 5, 10], 'max_iter':[100, 200, 500, 1000]}

rfc =RandomForestClassifier(n_estimators=500)
param_grid = {"max_depth": [3],
             "max_features": ["auto"],
              "min_samples_split": [2],
              "min_samples_leaf": [1],
              "bootstrap": [False],
              "criterion": ["entropy", "gini"]}


mlp = MLPClassifier(random_state=seed)
parameter_space = …
Run Code Online (Sandbox Code Playgroud)

python machine-learning scikit-learn

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

如何对范围内的行进行分组并考虑第三列?

我有一个遗传数据集,我想对基因组中物理上靠近的遗传变异/行进行分组。我想对每条染色体 ( chrom)基因组中某些点范围内的基因进行分组。

我的 'spots' 数据集是变体/行需要在一个范围内的位置,看起来像:

 chrom      low       high
   1        500       1700
   1        19500     20600
   5        400       1500
Run Code Online (Sandbox Code Playgroud)

Mylowhighcolumns 是我想查看下一个数据集中是否有任何行落入的范围,同时考虑到染色体 ( chrom) 也必须匹配。具有唯一范围和色度组合的每一行都是它自己的组,我希望查看我的其他数据集中是否有任何内容。

我的另一个数据集有一个位置值,我想看看它是否符合上述任何范围的匹配chrom,以便将其标记为对应于该范围,然后我可以将同一范围内的位置和 chrom 组合在一起:

Gene   chrom position 
Gene1   1    1200          
Gene2   1    10000        
Gene3   5    500 
Gene4   5    560
Gene5   1    20100           
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用group_by()between()设置范围,因为看到其他与日期/时间范围相似的问题,但我正在努力解释chrom在搜索范围之前匹配数据集之间的染色体 ( )的需要。

输出看起来像:

Gene   chrom position   Group 
Gene1   1    1200          1  #position is in one of the ranges and matches the …
Run Code Online (Sandbox Code Playgroud)

r dplyr data.table

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

如何将多个形状图保存到 html 中?

我有使用该shap包绘制的机器学习结果。特别是,我绘制了交互式形状力图和静态形状热图。

目前,我将形状力图保存为 html 文件,但我想将形状热图添加到交互式力图下方的 html 中。

此处显示了交互式形状力图的示例:https://shap.readthedocs.io/en/latest/example_notebooks/tabular_examples/tree_based_models/Force%20Plot%20Colors.html(下面第三张图,交互式图)

形状热图的示例如下:https ://shap.readthedocs.io/en/latest/example_notebooks/api_examples/plots/heatmap.html

我目前对这些图的编码方式是:

import shap

model = RandomForestRegressor()
explainer = shap.TreeExplainer(model)
shap_values = explainer(X)
select = range(8)
features = X.iloc[select]
features_display = X.loc[features.index]

#Create force plot and save it as html:

output_of_force_plot = shap.force_plot(explainer.expected_value, shap_values[:500,:], 
                                        X.iloc[:500,:], features_display, show=False)

file ='force_plot.html'
shap.save_html(file, output_of_force_plot)


#Create static heat map:

shap_heatmap = shap.plots.heatmap(shap_values, max_display=8, show=False)
Run Code Online (Sandbox Code Playgroud)

目前,要将其添加shap_heatmap到与我相同的html中,我已经尝试使用plotly( Plotly saving multipleplots into a single htmloutput_of_force_plot )类似问题的答案,但它不起作用:

import plotly
with open('p_graph.html', 'a') …
Run Code Online (Sandbox Code Playgroud)

python plot plotly shap

5
推荐指数
0
解决办法
2230
查看次数

如何计算逻辑回归准确度

我是机器学习和 Python 编码的完全初学者,我的任务是从头开始对逻辑回归进行编码,以了解幕后发生的事情。到目前为止,我已经对假设函数、成本函数和梯度下降进行了编码,然后对逻辑回归进行了编码。然而,在编码打印精度时,我得到一个低输出(0.69),它不会随着迭代次数的增加或学习率的变化而改变。我的问题是,我下面的准确度代码有问题吗?任何指向正确方向的帮助将不胜感激

X = data[['radius_mean', 'texture_mean', 'perimeter_mean',
   'area_mean', 'smoothness_mean', 'compactness_mean', 'concavity_mean',
   'concave points_mean', 'symmetry_mean', 'fractal_dimension_mean',
   'radius_se', 'texture_se', 'perimeter_se', 'area_se', 'smoothness_se',
   'compactness_se', 'concavity_se', 'concave points_se', 'symmetry_se',
   'fractal_dimension_se', 'radius_worst', 'texture_worst',
   'perimeter_worst', 'area_worst', 'smoothness_worst',
   'compactness_worst', 'concavity_worst', 'concave points_worst',
   'symmetry_worst', 'fractal_dimension_worst']]
X = np.array(X)
X = min_max_scaler.fit_transform(X)
Y = data["diagnosis"].map({'M':1,'B':0})
Y = np.array(Y)

X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size=0.25)

X = data["diagnosis"].map(lambda x: float(x))

def Sigmoid(z):
    if z < 0:
        return 1 - 1/(1 + math.exp(z))
    else:
        return 1/(1 + math.exp(-z))

def Hypothesis(theta, x):
    z = …
Run Code Online (Sandbox Code Playgroud)

python machine-learning logistic-regression

3
推荐指数
3
解决办法
2万
查看次数

如何有条件地在R中顺序标记行?

我希望根据样品的数量是比之前的样品多500个还是少一些来标记样品。我已经看到了条件标签的示例,但是找不到适合我需要的示例。

例如,我的数据如下所示:

column a
200
230
510
1200
1800
1700
2400
Run Code Online (Sandbox Code Playgroud)

我希望根据每个样本彼此之间的最大距离(最多500个)进行标记。因此输出为:

column a     column b
200            region1
230            region1
510            region1 
1200           region2  #new region starts as there is more than 500 difference than 510 (690)
1400           region2
1700           region2
2400           region3 #new region starts as there is 700 difference from 1700
Run Code Online (Sandbox Code Playgroud)

我已经看到了条件标签的示例,但是对于所有这些标签,都有一定数量的标签(例如,仅二进制标签),并且我需要标签号(区域号)随每个新区域而增加。我怎样才能做到这一点?我尝试改编其他示例,但在设置超过500个新标签条件和具有顺序标签方面都做得很少。

r

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

SimpleImputer 会删除功能吗?

我有一个包含 284 个特征的数据集,我尝试使用 scikit-learn 进行插补,但是出现错误,特征数量更改为 283:

imputer = SimpleImputer(missing_values = np.nan, strategy = "mean")
imputer = imputer.fit(data.iloc[:,0:284])
df[:,0:284] = imputer.transform(df[:,0:284])
X = MinMaxScaler().fit_transform(df)

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-150-849be5be8fcb> in <module>
      1 imputer = SimpleImputer(missing_values = np.nan, strategy = "mean")
      2 imputer = imputer.fit(data.iloc[:,0:284])
----> 3 df[:,0:284] = imputer.transform(df[:,0:284])
      4 X = MinMaxScaler().fit_transform(df)

~\Anaconda3\envs\environment\lib\site-packages\sklearn\impute\_base.py in transform(self, X)
    411         if X.shape[1] != statistics.shape[0]:
    412             raise ValueError("X has %d features per sample, expected %d"
--> 413                              % (X.shape[1], self.statistics_.shape[0]))
    414 …
Run Code Online (Sandbox Code Playgroud)

python machine-learning pandas scikit-learn

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

如何在R中可视化覆盖圆形图的集群?

我有一个使用名为 Revigo 的网站制作的图,该网站提供了一个 R 脚本(包括在下面)来创建这样的图:

在此处输入图片说明

我想看看是否可以在同一图中的这些点之上执行和可视化聚类?由于该图看起来像一个大圆圈,因此我试图查看其中是否有可以突出显示的较小分组。我有生物学背景,所以我不知道从哪里开始尝试在同一个图中获得这种可视化。我已经探索过使用,hclust()但我不知道将集群显示在此图表顶部的步骤。

给出上图的代码和数据是:

library( ggplot2 );
library( scales );

revigo.names <- c("term_ID","description","frequency_%","plot_X","plot_Y","plot_size","log10_p_value","uniqueness","dispensability");
revigo.data <- rbind(c("GO:0002376","immune system process",16.463,-0.302,-3.807, 3.455,-8.3307,0.995,0.000),
c("GO:0006928","movement of cell or subcellular component",10.987, 1.052, 1.113, 3.280,-8.8153,0.965,0.000),
c("GO:0007610","behavior", 3.254,-1.620, 0.960, 2.752,-4.0048,0.994,0.000),
c("GO:0008150","biological_process",100.000,-6.029,-0.499, 4.239,-8.7447,1.000,0.000),
c("GO:0009987","cellular process",90.329,-5.288, 0.130, 4.195,-10.0701,0.999,0.000),
c("GO:0010243","response to organonitrogen compound", 4.697, 6.870,-2.756, 2.911,-12.7100,0.865,0.000),
c("GO:0023052","signaling",36.613, 2.976,-6.718, 3.803,-7.1931,0.996,0.000),
c("GO:0032501","multicellular organismal process",41.143, 3.761,-0.715, 3.853,-17.2741,0.997,0.000),
c("GO:0032502","developmental process",33.982,-2.865,-0.660, 3.770,-14.4202,0.996,0.000),
c("GO:0034762","regulation of transmembrane transport", 2.452,-3.982, 3.261, 2.629,-13.4123,0.788,0.000),
c("GO:0040007","growth", 5.447, 0.651,-0.889, 2.975,-4.2140,0.995,0.000),
c("GO:0040011","locomotion", 9.452, 2.305,-0.865, 3.215,-8.1068,0.995,0.000),
c("GO:0050896","response to stimulus",49.302, 3.556,-5.122, …
Run Code Online (Sandbox Code Playgroud)

visualization r hierarchical-clustering ggplot2

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

如何将 r 中多列的字符串数据折叠为一行?

我遇到一个问题,我通常将一列中的多行字符串数据折叠到一列中,但由于某种原因,代码没有按照我的预期进行。

我的数据如下所示:

       Genes Source      Type
   1:   LZIC Source1 Secondary
   2:   LZIC Source2      Lead
   3:  KIF1B Source1 Secondary
   4:  CASZ1 Source1 Secondary
   5:  CASZ1 Source4 Secondary

Run Code Online (Sandbox Code Playgroud)

我想通过基因进行压缩,我使用本网站上类似问题的代码来执行此操作,例如:

source  <- df %>%
  group_by(Genes) %>%
  summarize(text = str_c(Source, collapse = ", "))

type <- df %>%
  group_by(Genes) %>%
  summarize(text = str_c(Type, collapse = ", "))
Run Code Online (Sandbox Code Playgroud)

但是,这些的输出看起来并不像我期望的那样,对于我创建的每个变量,我都会得到一行,其中所有源或类型都作为字符串,而没有其他内容。

我想要得到的输出是:

        Genes   Source               Type
   1:   LZIC    Source1, Source1     Secondary, Lead
   2:  KIF1B    Source1              Secondary
   3:  CASZ1    Source1, Source4     Secondary, Secondary

Run Code Online (Sandbox Code Playgroud)

我的代码有问题吗?在其他情况下它对我有用。我也尝试过修改代码以同时进行两列压缩,但分别失败了。

输入数据:

structure(list(Genes = c("LZIC", "CDC14A", "KIF1B", …
Run Code Online (Sandbox Code Playgroud)

r dplyr data.table

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

如何从交叉验证中产生混淆矩阵?

我是R和机器学习的新手,我正在使用2个类的数据.我正在尝试进行交叉验证,但是当我尝试制作模型的混淆矩阵时,我得到一个错误,即所有参数必须具有相同的长度.我无法理解为什么我输入的内容长度不一样.任何正确方向的帮助将不胜感激.

library(MASS)
xCV = x[sample(nrow(x)),]

folds <- cut(seq(1,nrow(xCV)),breaks=10,labels=FALSE)

for(i in 1:10){

  testIndexes = which(folds==i,arr.ind=TRUE)
  testData = xCV[testIndexes, ]
  trainData = xCV[-testIndexes, ]

}
ldamodel = lda(class ~ ., trainData)
lda.predCV = predict(model)

conf.LDA.CV=table(trainData$class, lda.predCV$class)
print(conf.LDA.CV)
Run Code Online (Sandbox Code Playgroud)

r machine-learning lda cross-validation

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

如何删除r中列中的特定字符?

我有一个 ID 数据集:

VARIANT_ID
01_1254436_A_G_1
02_2254436_A_G_1 
03_3255436_A_G_1 
10_10344745_A_G_1 
11_11256437_A_G_1 
11_11343426_A_G_1 
12_12222431_A_G_1
14_14200436_A_G_1 
15_15256789_A_G_1 
Run Code Online (Sandbox Code Playgroud)

我希望仅从 ID 以 01-09 开头的行的开头字符中删除 0,但在不进一步删除列中的其他 0 的情况下,我很难做到这一点,并且只能看到其他语言的类似问题。我想要的输出是:

VARIANT_ID
1_1254436_A_G_1
2_2254436_A_G_1 
3_3255436_A_G_1 
10_10344745_A_G_1 
11_11256437_A_G_1 
11_11343426_A_G_1 
12_12222431_A_G_1
14_14200436_A_G_1 
15_15256789_A_G_1 
Run Code Online (Sandbox Code Playgroud)

仅删除了每行开头的零,如何指定这一点?我来自生物学背景,因此任何帮助将不胜感激。

输入数据:

structure(list(VARIANT_ID = c("01_1254436_A_G_1", "02_2254436_A_G_1", 
"03_3255436_A_G_1", "10_10344745_A_G_1", "11_11256437_A_G_1", 
"11_11343426_A_G_1", "12_12222431_A_G_1", "14_14200436_A_G_1", 
"15_15256789_A_G_1")), row.names = c(NA, -9L), class = c("data.table", 
"data.frame"))
Run Code Online (Sandbox Code Playgroud)

string r bioinformatics dataframe

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