Maison >développement back-end >Tutoriel Python >Explication détaillée de l'algorithme d'analyse factorielle explicative en Python
Explication L'analyse factorielle est une méthode classique d'analyse statistique multivariée qui est souvent utilisée pour explorer les facteurs potentiels dans des ensembles de données. Par exemple, nous pouvons utiliser l’analyse factorielle explicative pour identifier les facteurs qui influencent la notoriété de la marque ou découvrir les facteurs qui influencent le comportement des consommateurs sur un marché donné. En Python, nous pouvons utiliser une variété de bibliothèques pour implémenter l'analyse factorielle explicative. Cet article présentera en détail comment utiliser Python pour implémenter cet algorithme.
Pour implémenter l'analyse factorielle explicative en Python, nous devons d'abord installer plusieurs bibliothèques nécessaires. Parmi eux, nous devons utiliser la bibliothèque NumPy pour le traitement des données et les opérations ; utiliser la bibliothèque Pandas pour charger et traiter les données et utiliser la bibliothèque statsmodels pour exécuter une analyse factorielle explicative.
Vous pouvez utiliser le gestionnaire de packages de Python (tel que pip) pour installer ces bibliothèques. Exécutez la commande suivante dans le terminal :
!pip install numpy pandas statsmodels
Pour démontrer l'analyse factorielle, dans cet article, nous utilisons l'ensemble de données de carte de crédit de la bibliothèque d'apprentissage automatique UCI. Cet ensemble de données contient la carte de crédit de chaque client et d'autres données financières, telles que les soldes des comptes, les limites de crédit, etc. Vous pouvez télécharger l'ensemble de données à partir de l'URL suivante : https://archive.ics.uci.edu/ml/datasets/default+of+credit+card+clients
Après le téléchargement, nous devons utiliser la bibliothèque Pandas pour charger le ensemble de données en Python. Dans cet article, nous utiliserons le code suivant pour charger les données :
import pandas as pd # 加载数据 data = pd.read_excel('default of credit card clients.xls', skiprows=1) # 删除第一列(ID) data = data.drop(columns=['ID'])
Notez que nous utilisons skiprows=1
pour sauter la première ligne du fichier, puisque cette ligne n'appartient pas au réel données. Nous avons ensuite utilisé la fonction drop
pour supprimer la première colonne de l'ensemble de données, car cette colonne ne contient que des identifiants et n'est pas utile pour notre analyse de données. 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
pour sélectionner la colonne du dossier de crédit dans l'ensemble de données. Ensuite, nous utilisons la fonction StandardScaler
pour normaliser les données du dossier de crédit (la moyenne est de 0, l'écart type est de 1). La normalisation est une étape nécessaire pour expliquer l'analyse factorielle. 🎜statsmodels
pour exécuter une analyse factorielle explicative. Dans cet article, nous utiliserons l'algorithme d'estimation du maximum de vraisemblance pour déterminer le nombre de facteurs. 🎜rrreee🎜Dans le code ci-dessus, nous instancions d'abord un objet FactorAnalyzer
, puis utilisons la fonction fit
pour ajuster les données. Nous utilisons également loadings_
pour obtenir des saturations factorielles, qui sont une mesure de la force de la corrélation entre chaque variable et chaque facteur. Nous utilisons get_factor_variance
pour obtenir le taux de contribution à la variance, qui mesure dans quelle mesure chaque facteur explique la variance globale. Dans le code final, nous utilisons pd.DataFrame
pour convertir le résultat en une trame de données Pandas. 🎜statsmodels
, et enfin analysé des indicateurs tels que les saturations factorielles et les taux de contribution de la variance. Cet algorithme peut être utilisé dans de nombreuses applications d’analyse de données, telles que les études de marché et la gestion des ressources humaines. Si vous travaillez avec des données comme celles-ci, l'algorithme d'analyse factorielle vaut la peine d'être essayé. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!