설명 요인 분석은 데이터 세트의 잠재적 요인을 탐색하는 데 자주 사용되는 고전적인 다변량 통계 분석 방법입니다. 예를 들어, 설명적 요인 분석을 사용하여 브랜드 인지도에 영향을 미치는 요인을 식별하거나 특정 시장에서 소비자 행동에 영향을 미치는 요인을 발견할 수 있습니다. Python에서는 다양한 라이브러리를 사용하여 설명적 요인 분석을 구현할 수 있습니다. 이 기사에서는 Python을 사용하여 이 알고리즘을 구현하는 방법을 자세히 소개합니다.
Python에서 설명적 요인 분석을 구현하려면 먼저 몇 가지 필수 라이브러리를 설치해야 합니다. 그 중 데이터 처리 및 작업에는 NumPy 라이브러리를 사용해야 하고, 데이터를 로드하고 처리하려면 Pandas 라이브러리를 사용해야 하며, 설명 요인 분석을 실행하려면 statsmodels 라이브러리를 사용해야 합니다.
Python의 패키지 관리자(예: pip)를 사용하여 이러한 라이브러리를 설치할 수 있습니다. 터미널에서 다음 명령을 실행합니다.
!pip install numpy pandas statsmodels
요인 분석을 보여주기 위해 이 문서에서는 UCI 기계 학습 라이브러리의 신용 카드 데이터 세트를 사용합니다. 이 데이터 세트에는 각 고객의 신용 카드 및 계정 잔액, 신용 한도 등과 같은 기타 금융 데이터가 포함됩니다. https://archive.ics.uci.edu/ml/datasets/default+of+credit+card+clients
에서 데이터세트를 다운로드할 수 있습니다. 다운로드한 후 Pandas 라이브러리를 사용하여 데이터세트를 Python에 로드해야 합니다. . 이 기사에서는 다음 코드를 사용하여 데이터를 로드합니다.
import pandas as pd # 加载数据 data = pd.read_excel('default of credit card clients.xls', skiprows=1) # 删除第一列(ID) data = data.drop(columns=['ID'])
파일의 첫 번째 줄은 실제 데이터에 속하지 않기 때문에 skiprows=1
을 사용하여 해당 줄을 건너뜁니다. . 그런 다음 drop
함수를 사용하여 데이터세트의 첫 번째 열을 삭제했습니다. 이 열에는 ID만 포함되어 있고 데이터 분석에 유용하지 않기 때문입니다. skiprows=1
来跳过文件中的第一行,因为该行不属于真正的数据。然后,我们使用drop
函数删除了数据集中的第一列,因为该列只包含ID,对我们的数据分析没有用处。
在进行说明因子分析之前,我们先需要对数据进行一些处理。根据我们的例子,我们需要对客户的信用记录进行说明因子分析。因此,我们需要将数据集拆分为信用记录和其他金融数据。在本文中,我们将信用记录作为我们要研究的变量。
# 获取信用记录数据 credit_data = data.iloc[:, 5:11] # 对数据进行标准化(均值0,标准差1) from sklearn.preprocessing import StandardScaler scaler = StandardScaler() credit_data = pd.DataFrame(scaler.fit_transform(credit_data), columns=credit_data.columns)
我们使用iloc
函数从数据集中选择信用记录列。然后,我们使用StandardScaler
函数对信用记录数据进行标准化(均值为0,标准差为1),对于说明因子分析来说,标准化是必要的步骤。
在数据处理完成后,我们可以使用statsmodels
库来运行说明因子分析。在本文中,我们将使用最大似然估计算法来确定因子数。
# 运行说明因子分析 from factor_analyzer import FactorAnalyzer # 定义模型 fa = FactorAnalyzer() # 拟合模型 fa.fit(credit_data) # 获取因子载荷 loadings = pd.DataFrame(fa.loadings_, index=credit_data.columns, columns=['Factor {}'.format(i) for i in range(1, len(credit_data.columns)+1)]) # 获取方差贡献率 variance = pd.DataFrame({'Variance': fa.get_factor_variance()}, index=['Factor {}'.format(i) for i in range(1, len(credit_data.columns)+1)])
在上面的代码中,我们先实例化了一个FactorAnalyzer
对象,然后使用fit
函数拟合了数据。我们还使用loadings_
来获取因子载荷,该值用于衡量每个变量与每个因子之间的相关性强度。我们使用get_factor_variance
获取方差贡献率,该指标用于衡量每个因子对总体方差的解释程度。在最后的代码中,我们使用pd.DataFrame
将结果转换为Pandas数据帧。
根据我们的算法,我们可以获得因子载荷和方差贡献率这两个指标。我们可以使用这些指标来识别潜在的因子。
以下是因子载荷和方差贡献率的输出结果:
Factor 1 Factor 2 Factor 3 Factor 4 Factor 5 Factor 6 LIMIT_BAL 0.847680 -0.161836 -0.013786 0.010617 -0.037635 0.032740 SEX -0.040857 0.215850 0.160855 0.162515 -0.175099 0.075676 EDUCATION 0.208120 -0.674727 0.274869 -0.293581 -0.086391 -0.161201 MARRIAGE -0.050921 -0.028212 0.637997 0.270484 -0.032020 0.040089 AGE -0.026009 0.028125 -0.273592 0.871728 0.030701 0.020664 PAY_0 0.710712 0.003285 -0.030082 -0.036452 -0.037875 0.040604
Variance Factor 1 1.835932 Factor 2 1.738685 Factor 3 1.045175 Factor 4 0.965759 Factor 5 0.935610 Factor 6 0.104597
在载荷矩阵中,我们可以看到信用记录在因子1上拥有较高的载荷值,这表明该因子与信用记录有较强的相关性。在方差贡献率方面,我们可以看到第1个因子对方差的贡献最大,意味着信用记录在因子1上有更强的解释能力。
因此,我们可以将因子1视为影响客户信用记录的主要因素。
在本文中,我们介绍了如何在Python中实现说明因子分析算法。我们首先准备了数据,然后使用statsmodels
iloc
함수를 사용하여 데이터 세트에서 신용 기록 열을 선택합니다. 그런 다음 StandardScaler
함수를 사용하여 신용 기록 데이터를 표준화합니다(평균은 0, 표준 편차는 1). 표준화는 요인 분석을 설명하는 데 필요한 단계입니다. 🎜statsmodels
라이브러리를 사용하여 설명 요인 분석을 실행할 수 있습니다. 이 기사에서는 최대 우도 추정 알고리즘을 사용하여 요인 수를 결정합니다. 🎜rrreee🎜위 코드에서는 먼저 FactorAnalyzer
개체를 인스턴스화한 다음 fit
함수를 사용하여 데이터를 맞췄습니다. 또한 로딩_
을 사용하여 각 변수와 각 요인 간의 상관 관계 강도를 측정하는 요인 로딩을 얻습니다. get_factor_variance
를 사용하여 각 요소가 전체 분산을 얼마나 설명하는지 측정하는 분산 기여율을 얻습니다. 최종 코드에서는 pd.DataFrame
을 사용하여 결과를 Pandas 데이터 프레임으로 변환합니다. 🎜statsmodels
라이브러리를 사용하여 설명 요인 분석을 실행하고 마지막으로 요인 로딩 및 분산 기여율과 같은 지표를 분석했습니다. 이 알고리즘은 시장 조사, 인적 자원 관리 등 다양한 데이터 분석 애플리케이션에 사용될 수 있습니다. 이와 같은 데이터로 작업하는 경우 요인 분석 알고리즘을 시도해 볼 가치가 있습니다. 🎜위 내용은 Python의 설명적 요인 분석 알고리즘에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!