我在 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) 从我发现的内容来看,还有一个其他问题(加速嵌套交叉验证),但是尝试在此站点和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
我有一个遗传数据集,我希望在其中对样本/基因进行排序,并按基因组中彼此相距一定距离的样本/基因进行分组。
例如,我的数据集如下所示:
#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) 我在多分类问题上比较了几个模型(梯度提升机、随机森林、逻辑回归、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) 我有一个遗传数据集,我想对基因组中物理上靠近的遗传变异/行进行分组。我想对每条染色体 ( chrom)基因组中某些点范围内的基因进行分组。
我的 'spots' 数据集是变体/行需要在一个范围内的位置,看起来像:
chrom low high
1 500 1700
1 19500 20600
5 400 1500
Run Code Online (Sandbox Code Playgroud)
Mylow和highcolumns 是我想查看下一个数据集中是否有任何行落入的范围,同时考虑到染色体 ( 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) 我有使用该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 编码的完全初学者,我的任务是从头开始对逻辑回归进行编码,以了解幕后发生的事情。到目前为止,我已经对假设函数、成本函数和梯度下降进行了编码,然后对逻辑回归进行了编码。然而,在编码打印精度时,我得到一个低输出(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) 我希望根据样品的数量是比之前的样品多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个新标签条件和具有顺序标签方面都做得很少。
我有一个包含 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) 我有一个使用名为 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) 我遇到一个问题,我通常将一列中的多行字符串数据折叠到一列中,但由于某种原因,代码没有按照我的预期进行。
我的数据如下所示:
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和机器学习的新手,我正在使用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) 我有一个 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)