我正在使用大型生物数据集.
我想计算数据表中所有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并添加结果似乎非常困难.
抱歉我的解释不好,但我希望有人可以帮助我.
我想对降维和数据集成进行主成分分析.
我有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-2.例如,如果特征类似于[功率等级,速度等级],则功率与速度大致呈负相关,当它是2特征情况时.我想知道具有"高功率"和"高速"的样品.很容易确定[功率1,速度1]优于[功率2,速度2],但对于[功率4,速度2]与[功率3,速度3]的情况很难.因此,我想将PCA应用于二维"功率和速度"数据集,然后使用第一台PC,然后使用"第一台PC"的等级.这种方法仍然适用吗?
我想使用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 scikit-learn进行装袋.我想结合RFE(),递归特征选择算法.步骤如下.
我尝试使用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个步骤吗?
我正在研究大数据,我想找到重要的功能.因为我是一名生物学家,所以请原谅我缺乏的知识.
我的数据集有大约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库进行这项工作.
所以,我的问题是这样的.
我可以使用Lasso回归来实现有偏见的二元类吗?如果不是,使用Logistic回归是否是一个很好的解决方案,尽管它不使用L1惩罚?
如何使用LassoCV找到alpha的最佳值?该文件称LassoCV支持它,但我找不到该功能.
这种分类还有其他好的方法吗?
非常感谢你.
python regression classification machine-learning scikit-learn
我正在尝试使用 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 scikit-learn SGDClassifier()既支持l1,l2又支持弹性,找到正则化参数的最佳值似乎很重要.
我得到了一个建议,使用SGDClassifier()和GridSearchCV()来做这件事,但在SGDClassifier中只提供正则化参数alpha.如果我使用SVM或LogisticRegression等损失函数,我认为参数优化应该有C而不是alpha.使用Logisitic回归或SVM时,有没有办法在SGDClassifier()中设置最佳参数?
另外,我还有一个关于迭代参数n_iter的问题,但我不明白这个参数是什么意思.如果与shuffle选项一起使用,它是否像装袋一样工作?所以,如果我使用l1惩罚和n_iter的大值,它会像RandomizedLasso()一样工作吗?
Scikit-learn 库支持递归特征消除(RFE)及其交叉验证版本(RFECV)。RFECV 对我来说非常有用,它选择小特征,但我想知道 RFE 的交叉验证是如何完成的。
RFE 是减少最不重要的特征的方法。所以我认为 RFECV 会计算交叉验证分数,删除特征 1 乘 1。
但是如果使用交叉验证,我认为每个折叠都会选择其他最不重要的特征,因为数据是不同的。有人知道如何在 RFECV 中删除功能吗?