小编z99*_*991的帖子

计算所有列之间的成对相关性

我正在使用大型生物数据集.

我想计算数据表中所有2列组合的PCC(Pearson相关系数),并将结果保存为DataFrame或CSV文件.

数据表如下所示:列是基因的名称,行是数据集的代码.浮点数表示基因在数据集中的激活程度.

      GeneA GeneB GeneC ...
DataA 1.5 2.5 3.5 ...
DataB 5.5 6.5 7.5 ...
DataC 8.5 8.5 8.5 ...
...
Run Code Online (Sandbox Code Playgroud)

作为输出,我想构建如下所示的表(DataFrame或csv文件),因为scipy.stats.pearsonr函数返回(PCC,p值).在我的例子中,XX和YY表示pearsonr的结果([1.5,5.5,8.5],[2.5,6.5,8.5]).同样,ZZ和AA表示皮尔逊([1.5,5.5,8.5],[3.5,7.5,8.5])的结果.在我的测试中,我不需要像GeneB_GeneA或GeneC_GeneB这样的冗余数据.

               PCC P-value
GeneA_GeneB    XX YY
GeneA_GeneC    ZZ AA
GeneB_GeneC    BB CC
...
Run Code Online (Sandbox Code Playgroud)

由于列数和行数很多(超过100)并且它们的名称很复杂,因此使用列名或行名将很困难.

对于专家来说这可能是一个简单的问题,我不知道如何使用python和pandas库来处理这种表.特别是制作新的DataFrame并添加结果似乎非常困难.

抱歉我的解释不好,但我希望有人可以帮助我.

python correlation pandas

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

Scikit-learn主成分分析(PCA)用于降维

我想对降维和数据集成进行主成分分析.

我有3个功能(变量)和5个样本,如下所示.我想通过转换它们(计算第一台PC)将它们集成到一维(1个特征)输出中.我想使用转换后的数据进行进一步的统计分析,因为我相信它显示了3个输入特征的"主要"特征.

我首先用python编写了一个测试代码,使用scikit-learn如下所示.简单的情况是3个特征的值都是等价的.换句话说,我将PCA用于三个相同的向量,[0,1,2,1,0].

import numpy as np
from sklearn.decomposition import PCA
pca = PCA(n_components=1)
samples = np.array([[0,0,0],[1,1,1],[2,2,2],[1,1,1],[0,0,0]])
pc1 = pca.fit_transform(samples)
print (pc1)
Run Code Online (Sandbox Code Playgroud)

产量

[[-1.38564065]
[ 0.34641016]
[ 2.07846097]
[ 0.34641016]
[-1.38564065]]
Run Code Online (Sandbox Code Playgroud)
  1. 降维后采用第一个PCA正确的数据集成方法?

1-2.例如,如果特征类似于[功率等级,速度等级],则功率与速度大致呈负相关,当它是2特征情况时.我想知道具有"高功率"和"高速"的样品.很容易确定[功率1,速度1]优于[功率2,速度2],但对于[功率4,速度2]与[功率3,速度3]的情况很难.因此,我想将PCA应用于二维"功率和速度"数据集,然后使用第一台PC,然后使用"第一台PC"的等级.这种方法仍然适用吗?

  1. 在这种情况下,我认为输出也应该是[0,1,2,1,0],它与输入相同.但输出为[-1.38564065,0.34641016,2.07846097,0.34641016,-1.38564065].代码有问题,还是正确的答案?

python feature-extraction pca scikit-learn

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

使用带有scikit-learn的Lasso进行特征选择

我想使用python和scikit-learn库进行某种功能选择.

据我所知,Lasso回归可用于特征选择,如单变量选择.

我的简单数据集是这样的.

G1  G2  G3  ... GN Class
1.0 4.0 5.0 ... 1.0 X
4.0 5.0 9.0 ... 1.0 X
9.0 6.0 3.0 ... 2.0 Y
...
Run Code Online (Sandbox Code Playgroud)

我想找到前N个属性(Gs),这些属性可能会影响很多类,使用套索回归.虽然我必须处理参数,但是可以像这样应用套索回归.

lasso = Lasso()
# A = list of [G1, G2, ..., GN], B = [X, X, Y, ...]
lasso.fit(A, B) 
print (lasso.coef_)
Run Code Online (Sandbox Code Playgroud)

如果它具有更高的lasso.coef_值,那么决定该属性是否与Class更相关是否正确?另外,我想知道是否有一些使用回归选择top-N基因的规则.如果我使用PCC,可以使用.05等P值作为选择的阈值,但我不知道如何处理Lasso.有人可以给我一个想法吗?

python feature-selection scikit-learn

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

使用python scikit-learn套装(引导)RFE

我想用python scikit-learn进行装袋.我想结合RFE(),递归特征选择算法.步骤如下.

  1. 制作30个子集,允许冗余选择(装袋)
  2. 为每个数据集执行RFE
  3. 获取每个分类的输出
  4. 从每个输出中找到前5个功能

我尝试使用BaggingClassifier方法,如下所示,但它花了很多时间,似乎无法正常工作.仅使用RFE可以正常工作(rfe.fit()).

cf1 = LinearSVC()
rfe = RFE(estimator=cf1)
bagging = BaggingClassifier(rfe, n_estimators=30)
bagging.fit(trainx, trainy)
Run Code Online (Sandbox Code Playgroud)

此外,步骤4可能难以找到顶部特征,因为Bagging分类器不提供像RFE()中的ranking_的属性.还有其他一些好方法可以实现这4个步骤吗?

python scikit-learn

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

在二元分类中使用Lasso回归查找最佳特征

我正在研究大数据,我想找到重要的功能.因为我是一名生物学家,所以请原谅我缺乏的知识.

我的数据集有大约5000个属性和500个样本,它们具有二进制类0和1.此外,数据集有偏差 - 样本大约400 0和100 1.我想找到一些在决定课程时影响最大的特征.

  A1   A2   A3  ... Gn Class
S1    1.0  0.8 -0.1 ... 1.0 0 
S2    0.8  0.4  0.9 ... 1.0 0
S3   -1.0 -0.5 -0.8 ... 1.0 1
...
Run Code Online (Sandbox Code Playgroud)

当我从前一个问题得到一些建议时,我试图找到属性系数高的重要特征,使用L1惩罚使用Lasso回归,因为它使得不重要特征的得分为0.

我正在使用scikit-learn库进行这项工作.

所以,我的问题是这样的.

  1. 我可以使用Lasso回归来实现有偏见的二元类吗?如果不是,使用Logistic回归是否是一个很好的解决方案,尽管它不使用L1惩罚?

  2. 如何使用LassoCV找到alpha的最佳值?该文件称LassoCV支持它,但我找不到该功能.

  3. 这种分类还有其他好的方法吗?

非常感谢你.

python regression classification machine-learning scikit-learn

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

使用 LinearRegression() 进行特征选择

我正在尝试使用 scikit-learn 库进行特征选择。我的数据很简单。行是样本,列是特征。尽管原始类标签是 X 和 Y,但我将它们更改为数字以进行线性回归,将 X 更改为 0,将 Y 更改为 1。

G1  G2  G3  ... Gn Class
1.0 4.0 5.0 ... 1.0 0
4.0 5.0 9.0 ... 1.0 0
9.0 6.0 3.0 ... 2.0 1
...
Run Code Online (Sandbox Code Playgroud)

我使用了库 sklearn.linear_model.LinearRegression(),效果很好。现在我使用 coef_ 值进行特征选择。在这种情况下,我有两个问题。

使用特征的 coef_ 值是否正确?或者在 LinearRegression() 中还有其他更好的特征选择参数吗?

另外,是否有某种规则来决定适当的阈值(例如,特征选择的 coef_ 最小值)?

python regression machine-learning scikit-learn

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

scikit-learn中SGDC分类器的正则化参数和迭代

Python scikit-learn SGDClassifier()既支持l1,l2又支持弹性,找到正则化参数的最佳值似乎很重要.

我得到了一个建议,使用SGDClassifier()和GridSearchCV()来做这件事,但在SGDClassifier中只提供正则化参数alpha.如果我使用SVM或LogisticRegression等损失函数,我认为参数优化应该有C而不是alpha.使用Logisitic回归或SVM时,有没有办法在SGDClassifier()中设置最佳参数?

另外,我还有一个关于迭代参数n_iter的问题,但我不明白这个参数是什么意思.如果与shuffle选项一起使用,它是否像装袋一样工作?所以,如果我使用l1惩罚和n_iter的大值,它会像RandomizedLasso()一样工作吗?

python machine-learning scikit-learn

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

python scikit-learn 中 RFECV() 的分数

Scikit-learn 库支持递归特征消除(RFE)及其交叉验证版本(RFECV)。RFECV 对我来说非常有用,它选择小特征,但我想知道 RFE 的交叉验证是如何完成的。

RFE 是减少最不重要的特征的方法。所以我认为 RFECV 会计算交叉验证分数,删除特征 1 乘 1。

但是如果使用交叉验证,我认为每个折叠都会选择其他最不重要的特征,因为数据是不同的。有人知道如何在 RFECV 中删除功能吗?

python scikit-learn cross-validation

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