Maison  >  Article  >  développement back-end  >  Explication détaillée de l'algorithme d'analyse factorielle explicative en Python

Explication détaillée de l'algorithme d'analyse factorielle explicative en Python

WBOY
WBOYoriginal
2023-06-10 18:18:09876parcourir

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.

  1. Installer les bibliothèques nécessaires

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
  1. Load data

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,对我们的数据分析没有用处。

  1. 数据处理

在进行说明因子分析之前,我们先需要对数据进行一些处理。根据我们的例子,我们需要对客户的信用记录进行说明因子分析。因此,我们需要将数据集拆分为信用记录和其他金融数据。在本文中,我们将信用记录作为我们要研究的变量。

# 获取信用记录数据
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),对于说明因子分析来说,标准化是必要的步骤。

  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数据帧。

  1. 结果分析

根据我们的算法,我们可以获得因子载荷和方差贡献率这两个指标。我们可以使用这些指标来识别潜在的因子。

以下是因子载荷和方差贡献率的输出结果:

           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视为影响客户信用记录的主要因素。

  1. 总结

在本文中,我们介绍了如何在Python中实现说明因子分析算法。我们首先准备了数据,然后使用statsmodels

    Traitement des données🎜🎜🎜Avant d'effectuer une analyse factorielle explicative, nous devons d'abord effectuer un traitement sur les données. Selon notre exemple, nous devons effectuer une analyse factorielle illustrative sur l'historique de crédit du client. Par conséquent, nous devons diviser l’ensemble de données en antécédents de crédit et autres données financières. Dans cet article, nous considérons les antécédents de crédit comme la variable que nous souhaitons étudier. 🎜rrreee🎜Nous utilisons la fonction 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. 🎜
      🎜Exécuter une analyse factorielle explicative🎜🎜🎜Une fois le traitement des données terminé, nous pouvons utiliser la bibliothèque 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. 🎜
        🎜Analyse des résultats🎜🎜🎜Selon notre algorithme, nous pouvons obtenir les deux indicateurs de chargement factoriel et de taux de contribution de la variance. Nous pouvons utiliser ces indicateurs pour identifier les facteurs sous-jacents. 🎜🎜Ce qui suit est le résultat du chargement factoriel et du taux de contribution de la variance : 🎜rrreeerrreee🎜Dans la matrice de chargement, nous pouvons voir que l'enregistrement de crédit a une valeur de chargement plus élevée sur le facteur 1, ce qui indique que ce facteur a une forte relation avec le crédit. enregistrer la pertinence. En termes de taux de cotisation de variance, nous pouvons voir que le premier facteur contribue le plus à la variance, ce qui signifie que les dossiers de crédit ont un pouvoir explicatif plus fort sur le facteur 1. 🎜🎜Par conséquent, nous pouvons considérer le facteur 1 comme le principal facteur affectant le dossier de crédit d’un client. 🎜
          🎜Résumé🎜🎜🎜Dans cet article, nous avons présenté comment implémenter l'algorithme d'analyse factorielle explicative en Python. Nous avons d'abord préparé les données, puis effectué une analyse factorielle explicative à l'aide de la bibliothèque 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn