我有一个输入文件,其中包含~50000个簇的列表,并且每个簇中都存在多个因子(总共约1000万个条目),请参阅下面的较小示例:
set.seed(1)
x = paste("cluster-",sample(c(1:100),500,replace=TRUE),sep="")
y = c(
  paste("factor-",sample(c(letters[1:3]),300, replace=TRUE),sep=""),
  paste("factor-",sample(c(letters[1]),100, replace=TRUE),sep=""),
  paste("factor-",sample(c(letters[2]),50, replace=TRUE),sep=""),
  paste("factor-",sample(c(letters[3]),50, replace=TRUE),sep="")
)
data = data.frame(cluster=x,factor=y)
在另一个问题的帮助下,我得到了一个像这样的因素同时出现的饼图:
counts = with(data, table(tapply(factor, cluster, function(x) paste(as.character(sort(unique(x))), collapse='+'))))
pie(counts[counts>1])
但是现在我想得到一个因子共存的维恩图.理想情况下,也可以采用每个因子的最小计数阈值.例如,针对不同因素的维恩图,使得每个因子中的每一个必须在每个群集中存在n> 10以被考虑.
我试图找到一种方法来生成具有聚合的表计数,但无法使其工作.
我正在尝试在MATLAB中执行以下分析:
Delta值为0的直接Oblimin旋转和"Kaiser归一化"
我知道MATLAB有一个叫做rotatefactors的函数,但是没有提到oblimin旋转(既没有"Kaiser Normalization").如何在MATLAB中执行此分析?
更具体地说,我正在尝试在执行此分析时匹配SPSS的确切输出.
在这里,您可以找到SPSS中使用的所有算法:link(请参阅第338页的oblimin旋转).不幸的是,我无法理解方程式,因此在MATLAB中重现它们.
例如,我使用以下数据:
A = magic(10);
writetable(array2table(A),'test.xlsx') % This data can be imported to SPSS
我执行PCA(在相关矩阵上)并仅提取2个因子.以下是在MATLAB中完成的方法,以获得与SPSS(他们称之为"组件矩阵")完全相同的加载矩阵:
[eigvector,eigmatrix] = eig(corr(A));
[~,ind] = sort(diag(eigmatrix),'descend');
eigmatrix = eigmatrix(ind,ind);
eigvector = eigvector(:,ind);
eigvalues = diag(eigmatrix); % Eigeinvalues
loadings = eigvector*sqrt(eigmatrix);
loadings = loadings(:,1:2) % Extract only 2 factors
接下来,我应该loadings使用函数在矩阵上执行旋转rotatefactors,这就是我被卡住的地方.
这是SPSS中的语法:
FACTOR
/VARIABLES A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
/MISSING LISTWISE 
/ANALYSIS A1 A2 A3 A4 A5 A6 A7 …我试图使用带有varimax旋转的R进行因子分析,但不成功.我在SAS上运行相同的确切数据,可以得到结果.
在R中,如果我使用
fa(r=cor(m1), nfactors=8, fm="ml", rotate="varimax")
我会得到
In smc, the correlation matrix was not invertible, smc's returned as 1s
In smc, the correlation matrix was not invertible, smc's returned as 1s
Error in optim(start, FAfn, FAgr, method = "L-BFGS-B", lower = 0.005,  : 
  L-BFGS-B needs finite values of 'fn'
In addition: Warning messages:
1: In cor.smooth(R) : Matrix was not positive definite, smoothing was done
2: In cor.smooth(R) : Matrix was not positive definite, smoothing was done
3: In log(e) …我使用psych包的fa命令进行因子分析,因此有一个类的对象fa.我可以查询加载fac$loadings,但我想只提取包含加载的表,所以我可以使用xtable(或类似)将其转换为LaTeX格式.
示例代码:
library(psych)
library(xtable)
data(bfi)
fac <- fa(r=cor(bfi, use="complete.obs"), nfactors=5, fm="ml", rotate="none")
fac$loadings
ld <- someMagicalFunction(fac$loadings)
xtable(ld)
谁能告诉我我能用什么someMagicalFunction?
在Python中,我正在研究旅行保险欺诈检测的二进制分类问题。这是我的数据集的特征:
指标是精度,召回率和F2得分。我们将重点更多地放在避免误报上,因此,我们非常赞赏召回率很高。作为预处理,我使用SMOTE-NC对肯定的案例进行了超采样,这也考虑了分类变量。
在尝试了包括自我训练的半监督学习和标签传播/标签传播等方法之后,我获得了较高的回忆得分(培训中80%,测试中65-70%)。但是,我的精度得分显示出过拟合的痕迹(训练时为60-70%,测试时为10%)。我知道精度在训练上是好的,因为它是重新采样的,而测试数据则很低,因为它直接反映了测试数据中类的不平衡。但是这个精度分数太低了,所以我想解决它。
因此,为了简化模型,我正在考虑应用降维。我找到了一个名为princeFAMD 的软件包   (混合物数据的因子分析)。
问题1:我应该如何进行标准化,FAMD,k倍交叉验证和重采样?我下面的方法正确吗?
问题2:包prince不具有的方法,例如fit或transform等中Sklearn,所以无法执行第三步骤如下所述。任何其他包好做fit,并transform为FAMD?还有没有其他好的方法可以减少此类数据集的维数?
我的方法:
*对于我对这个问题的整体处理方法的各种建议,我也将不胜感激
谢谢!
classification resampling pca factor-analysis cross-validation
提前致谢.我使用'FactoMineR'包中的'PCA'函数来获得主成分分数.我已经尝试在这个论坛上阅读包装细节和类似的问题,但无法弄清楚旋转提取的组件(正交或倾斜)的代码.
我知道'psychcomp'函数和'psych'包中的'principal'函数具有旋转能力,但我真的很喜欢'PCA'中将变量缩放到单位方差的能力.任何帮助,将不胜感激.谢谢.
我需要进行探索性因素分析,并使用Python(假设只有1个基础因素)为每个观察值计算分数。看来这sklearn.decomposition.FactorAnalysis()是要走的路,但是不幸的是文档和示例(不幸的是我无法找到其他示例)还不足以使我确定如何完成工作。
我有以下测试文件,其中包含对29个变量(test.csv)的41个观察结果:
49.6,34917,24325.4,305,101350,98678,254.8,276.9,47.5,1,3,5.6,3.59,11.9,0,97.5,97.6,8,10,100,0,0,96.93,610.1,100,1718.22,6.7,28,5
275.8,14667,11114.4,775,75002,74677,30,109,9.1,1,0,6.5,3.01,8.2,1,97.5,97.6,8,8,100,0,0,100,1558,100,2063.17,5.5,64,5
2.3,9372.5,8035.4,4.6,8111,8200,8.01,130,1.2,0,5,0,3.33,6.09,1,97.9,97.9,8,8,67.3,342.3,0,99.96,18.3,53,1457.27,4.8,8,4
7.10,13198.0,13266.4,1.1,708,695,6.1,80,0.4,0,4,0,3.1,8.2,1,97.8,97.9,8,8,45,82.7,0,99.68,4.5,80,1718.22,13.8,0,3
1.97,2466.7,2900.6,19.7,5358,5335,10.1,23,0.5,0,2,0,3.14,8.2,0,97.3,97.2,9,9,74.5,98.2,0,99.64,79.8,54,1367.89,6.4,12,4
2.40,2999.4,2218.2,0.80,2045,2100,8.9,10,1.5,1,3,0,2.82,8.6,0,97.4,97.2,8,8,47.2,323.8,0,99.996,13.6,24,1249.67,2.7,12,3
0.59,4120.8,5314.5,0.54,14680,13688,14.9,117,1.1,0,3,0,2.94,3.4,0,97.6,97.7,8,8,11.8,872.6,0,100,9.3,52,1251.67,14,14,2
0.72,2067.7,2364,3,367,298,7.2,60,2.5,0,12,0,2.97,10.5,0,97.5,97.6,8,8,74.7,186.8,0,99.13,12,57,1800.45,2.7,4,2
1.14,2751.9,3066.8,3.5,1429,1498,7.7,9,1.6,0,3,0,2.86,7.7,0,97.6,97.8,8,9,76.7,240.1,0,99.93,13.6,60,1259.97,15,8,3
1.29,4802.6,5026.1,2.7,7859,7789,6.5,45,1.9,0,3,0,2.5,8.2,0,98,98,8,8,34,297.5,0,99.95,10,30,1306.44,8.5,0,4
0.40,639.0,660.3,1.3,23,25,1.5,9,0.1,0,1,0,2.5,8.2,0,97.7,97.8,8,8,94.2,0,0,100,4.3,50,1565.44,19.2,0,4
0.26,430.7,608.1,2,33,28,2.5,7,0.4,0,6,0,2.5,8.2,0,97.4,97.4,8,8,76.5,0,0,98.31,8,54,1490.08,0,0,4
4.99,2141.2,2357.6,3.60,339,320,8.1,7,0.2,0,8,0,2.5,5.9,0,97.3,97.4,8,8,58.1,206.3,0,99.58,13.2,95,1122.92,14.2,8,2
0.36,1453.7,1362.2,3.50,796,785,3.7,9,0.1,0,9,0,2.5,13.6,0,98,98.1,8,8,91.4,214.6,0,99.74,7.5,53,1751.98,11.5,0,2
0.36,1657.5,2421.1,2.8,722,690,8.1,8,0.4,0,1,0,2.5,8.2,0,97.2,97.3,11,12,37.4,404.2,0,99.98,10.9,35,1772.33,10.2,8,3
1.14,5635.2,5649.6,3,2681,2530,5.4,20,0.3,0,1,0,3.1,8.2,0,97.7,97.8,8,11,50.1,384.7,0,99.02,11.6,27,1306.08,16,0,2
0.6,1055.9,1487.9,1.3,69,65,2.5,6,0.4,0,8,0,2.5,8.2,0,97.9,97.7,8,11,63,137.9,0,99.98,5.1,48,1595.06,0,0,4
0.08,795.3,1174.7,1.40,85,76,2.2,7,0.2,0,0,0,2.5,8.2,0,97.4,97.5,8,8,39.3,149.3,0,98.27,5.1,52,1903.9,8.1,0,2
0.90,2514.0,2644.4,2.6,1173,1104,5.5,43,0.8,0,10,0,2.5,13.6,0,97.5,97.5,8,10,58.7,170.5,0,80.29,10,34,1292.72,4,0,2
0.27,870.4,949.7,1.8,252,240,2.2,31,0.2,0,1,0,2.5,8.2,0,97.5,97.6,8,8,64.5,0,0,100,6.6,29,1483.18,9.1,0,3
0.41,1295.1,2052.3,2.60,2248,2135,6.0,12,0.8,0,4,0,2.7,8.2,0,97.7,97.7,8,8,71.1,261.3,0,91.86,4.6,21,1221.71,9.4,0,4
1.10,3544.2,4268.9,2.1,735,730,6.6,10,1.7,0,14,0,2.5,8.2,0,97.7,97.8,8,8,52,317.2,0,99.62,9.8,46,1271.63,14.2,0,3
0.22,899.3,888.2,1.80,220,218,3.6,7,0.5,0,1,0,2.5,8.2,0,97.2,97.5,8,8,22.5,0,0,70.79,10.6,32,1508.02,0,0,4
0.24,1712.8,1735.5,1.30,41,35,5.4,7,0.5,0,1,0,3.28,8.2,0,97.8,97.8,9,10,16.6,720.2,0,99.98,4.3,53,1324.46,0,4,2
0.2,558.4,631.9,1.7,65,64,2.5,7,0.2,0,5,0,2.5,8.2,0,97.7,97.5,8,8,60.7,0,0,99.38,6.1,52,1535.08,0,0,2
0.21,599.9,1029,1.1,69,70,3.7,85.7,0.1,0,12,0,2.5,8.2,0,97.4,97.5,8,8,48.6,221.2,0,100,5.4,40,1381.44,25.6,0,2
0.10,131.3,190.6,1.6,28,25,2.9,7,0.3,0,3,0,2.5,8.2,0,97.7,97.8,8,8,58.9,189.4,0,99.93,6.9,42,1525.58,17.4,0,3
0.44,3881.4,5067.3,0.9,2732,2500,11.2,10,1.5,0,5,0,2.67,8.2,0,97.4,97.3,8,11,14.5,1326.2,0,99.06,3.7,31,1120.54,10.3,10,2
0.18,1024.8,1651.3,1.01,358,345,4.6,35,0.3,0,2,0,2.5,8.2,0,97.8,97.9,8,10,15.9,790.2,0,100,4.3,48,1531.04,10.5,0,3
0.46,682.9,784.2,1.8,103,109,2.2,8,0.4,0,4,0,2.5,8.2,0,97.8,97.9,8,8,82.7,166.3,0,99.96,6.4,44,1373.6,13.5,0,2
0.12,370.4,420.0,1.10,28,25,3.4,10,0.1,0,6,0,2.57,8.2,0,97.6,97.8,8,11,51.6,120,0,99.85,8.1,40,1297.94,0,0,3
0.03,552.4,555.1,0.8,54,49,3.5,10,0.4,0,0,0,2.5,8.2,0,97.4,97.6,8,10,33.6,594.5,0,100,3.2,41,1184.34,6.6,0,3
0.21,1256.5,2434.8,0.9,1265,1138,6.3,20,1.3,0,2,0,2.6,8.2,0,98,97.9,8,9,20.1,881,0,99.1,3.9,31,1265.93,7.8,0,3
0.09,320.6,745.7,1.10,37,25,2.7,8,0.3,0,9,0,2.5,8.2,0,98,97.8,8,8,49.2,376.4,0,99.95,4.3,39,1285.11,0,0,3
0.08,452.7,570.9,1,18,20,4.7,9,0.6,0,2,0,2.45,8.2,0,97.1,97.1,8,8,19.9,1103.8,0,99.996,2.9,22,1562.61,21.9,0,3
0.13,967.9,947.2,1,74,65,4.0,25,1.4,0,6,0,2.5,8.2,0,98,98,9,11,30.1,503.1,0,99.999,3.4,55,1269.33,0,0,2
0.07,495.0,570.3,1.2,27,30,4.3,7,0.5,0,12,0,3.62,8.2,0,98.2,98.2,15,13,29.8,430.5,0,99.7,4.9,40,1461.79,14.6,0,2
0.17,681.9,537.4,1.1,113,120,2.9,12,0.4,0,8,0,2.5,8.2,0,98.2,98.3,8,8,24,74.3,0,100,5,43,1290.16,0,0,3
0.05,639.7,898.2,0.40,9,12,3.0,7,0.1,0,1,0,2.5,8.2,0,97.6,97.8,15,11,11.9,1221.1,0,99.996,1.7,40,1372,7,0,4
0.65,2067.8,2084.2,2.50,414,398,7.3,6,0.7,0,4,0,2.16,8.2,0,97.8,97.9,12,12,60.1,146.3,0,99.96,10.4,44,1059.68,7.4,0,2
0.12,804.4,1416.4,3.30,579,602,4.2,7,1.8,0,1,0,2.5,8.2,0,98.1,98.3,8,10,8.9,2492.3,0,95.4,2.2,34,1345.76,7,0,2
使用我根据官方示例编写的代码,从这篇文章中 我得到了奇怪的结果。码:
from sklearn import decomposition, preprocessing
from sklearn.cross_validation import cross_val_score
import csv
import numpy as np
data = np.genfromtxt('test.csv', delimiter=',')
def compute_scores(X):
    n_components = np.arange(0, len(X), 1) …因子分析的一个标志是它允许非正交潜在变量.
例如,在R中,可以通过rotation参数来访问此功能factanal.有没有这样的规定sklearn.decomposition.FactorAnalysis?显然它不在争论中 - 但也许还有另一种方法来实现这一目标?
遗憾的是,我无法找到许多此功能的使用示例.
python factor-analysis dimensionality-reduction scikit-learn
我有一个数据框,如下所示:
x <- c(1, 2, 1, 2)
y <- c(1, 2, 3, 4)
z <- c(4, 3, 2, 1)
df <- data.frame(x, y, z)
fa我正在使用包中的函数运行因子分析psych:
fit <- fa(df, nfactors = 2)
fit$loadings
这会产生以下输出:
Loadings:
  MR1    MR2   
x  0.448       
y  0.999       
z -0.999       
                 MR1   MR2
SS loadings    2.195 0.000
Proportion Var 0.732 0.000
Cumulative Var 0.732 0.732
我想将带有 MR1 和 MR2 的表保存为数据框。有谁知道如何做到这一点?谢谢。
我正在使用Factor_analyzer模块在 python 中执行验证性因子分析。
我搜索了各种方法来生成模型诊断,例如近似均方根误差、卡方、CFI 和 Tucker-Lewis 指数。我对数学不是特别感兴趣,对Python也比较陌生,但我已经能够应付大部分内容了。
据我了解,factor_analyzer 模块会生成许多不同的对象,理论上,这些对象允许我进行额外的计算,并且我找到了这份文档,它为我提供了我需要的大部分公式。但是,我不知道如何采取(或计算)来获得我需要的模型诊断。
CFA代码是
model_dict = {"F1": factor_1,
              "F2": factor_2}# I have made these lists previously
model_spec = ModelSpecificationParser.parse_model_specification_from_dict(df[influence_scale],
                                                                           model_dict)
cfa = ConfirmatoryFactorAnalyzer(model_spec, disp=False)
cfa.fit(df[influence_scale].values)
cfa_loadings = pd.DataFrame(cfa.loadings_)
我没有收到任何错误,并且代码运行良好,为我提供了干净的负载,正如我在每个因素上所期望的那样,但是我真的坚持获取我需要的额外统计数据。
如果有人能帮助我,我将非常感激。
factor-analysis ×10
r ×6
python ×3
psych ×2
scikit-learn ×2
statistics ×2
combinations ×1
dataframe ×1
latex ×1
matlab ×1
pca ×1
resampling ×1
rotation ×1