利用python完成因子分析的案例
Traceback (most recent call last):
File "E:/多元统计实验/1.py", line 1, in
from factor_analyzer import FactorAnalyzer
File "C:\Program Files\Python35\lib\site-packages\factor_analyzer_init_.py", line 10, in
from .factor_analyzer import FactorAnalyzer, calculate_bartlett_sphericity, calculate_kmo
File "C:\Program Files\Python35\lib\site-packages\factor_analyzer\factor_analyzer.py", line 286
raise ValueError(f"The rotation must be one of the following: {POSSIBLE_ROTATIONS + [None]}")
^
SyntaxError: invalid syntax
觉得会不是我的factor_analyzer包下载错误
解决这个问题
from factor_analyzer import FactorAnalyzer
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
import numpy as np
from scipy.stats import bartlett
# 参数设置
data = pd.read_excel('性格分析.xlsx')
data = data.set_index('人')
n_factors = 2 # 因子数量
# 用检验是否进行
corr = list(data.corr().to_numpy())
bartlett(*corr)
# 开始计算
fa = FactorAnalyzer(n_factors=n_factors, method='principal', rotation="varimax")
fa.fit(data)
communalities = fa.get_communalities() # 共性因子方差
loadings = fa.loadings_ # 成分矩阵,可以看出特征的归属因子
# 画图
plt.figure()
ax = sns.heatmap(loadings, annot=True, cmap="BuPu")
plt.title('Factor Analysis')
factor_variance = fa.get_factor_variance() # 贡献率
fa_score = fa.transform(data) # 因子得分
# 综合得分
complex_score = np.zeros([fa_score.shape[0], ])
for i in range(n_factors):
complex_score += fa_score[:, i] * factor_variance[1][i] # 综合得分
第一步导包就报错了 肯定是包的问题 python环境下直接 import factor_analyzer 试试 有没有问题