Lors de la création d'un environnement BI (Talend, Snowflake, Quicksight) dans le cadre de mon travail, l'apprentissage automatique était un domaine dans lequel je voulais apprendre mais que je ne pouvais pas entrer. J'ai appris qu'une "compétition limitée débutant" se tiendrait au SIGNATE, j'ai donc décidé de saisir cette opportunité pour relever le défi. Je ne savais pas par où commencer, mais une partie de «Efficacité du télémarketing dans les institutions financières» était ouverte gratuitement, alors j'ai enregistré ce que j'ai appris ici comme ma propre note d'étude. Nous créons cet article pour le garder.
import pandas as pd
df = pd.read_csv('data.csv', index_col='id')
print( df.describe() )
print( df.describe(include=['O']) )
print( type(df) )
print( df['y'] )
print( type(df['y']) )
print( df[['age', 'job', 'y']] )
print( df.loc[[2, 3], ['age', 'job', 'y']] )
print( df.drop('y', axis=1) )
print( df['poutcome'].value_counts() )
print( df['y'].value_counts() )
print( df['poutcome'].value_counts() )
La fonction corr, qui est l'une des fonctions de la bibliothèque Pandas. La corrélation est illustrée par une tabulation croisée des données numériques. print(df.corr())
Utilisé lors de la vérification de la corrélation entre les données quantitatives
Utilisé pour vérifier la corrélation entre les données quantitatives et qualitatives
Faisons une hypothèse en examinant les statistiques et les graphiques de base sur le type de variables qui influencent la présence ou l'absence d'applications de dépôt fixe. Au lieu de regarder les données dans les nuages sombres, vous pouvez procéder à l'analyse efficacement en faisant une hypothèse et en la vérifiant. Par exemple, les éléments suivants peuvent être considérés.
Hypothèse 1. Les personnes qui ont postulé pour la campagne précédente sont plus susceptibles de répéter (uniquement si le produit est satisfaisant). Hypothèse 2. Étant donné que les dépôts fixes sont des produits qui ne peuvent pas être retirés librement, il peut être plus facile pour les personnes disposant d'un excédent important de déposer une demande. Hypothèse 3. Les personnes qui ont été en contact avec les ventes pendant une longue période peuvent être plus susceptibles de se sentir mal à l'aise pour postuler (selon les compétences du vendeur).
Afin de prouver l'hypothèse 1, (1) Calculez le taux d'application pour chaque élément de la colonne poutcome en utilisant la variable croisée à laquelle le résultat de la tabulation croisée créé dans l'opération précédente est affecté, et affectez-le au taux variable.
import pandas as pd df = pd.read_csv('data.csv', index_col='id') cross = pd.crosstab(df['poutcome'], df['y'], margins=True)
rate = cross[1] / cross["All"]
cross["cvr"] = rate print( cross )
print( cross.loc[["success", "failure"], "cvr"])
Même si la corrélation est créée sous forme de tableau matriciel, il est difficile de comprendre ce qui est fortement corrélé dans la liste de valeurs numériques, alors visualisez-la et vérifiez-la.
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns
df = pd.read_csv('data.csv', index_col='id')
corr_matrix = df.corr()
sns.heatmap(corr_matrix, cmap="Reds")
plt.title('Correlation')
plt.show()
Dans Pandas, vous pouvez effectuer le même traitement que la fonction de filtrage d'Excel en la décrivant comme une variable [expression conditionnelle] à laquelle DataFrame est affecté. Si vous attribuez à l'expression conditionnelle une variable ['nom de colonne'] == valeur à laquelle DataFrame est affecté, vous ne pouvez extraire que les lignes pour lesquelles cette colonne a cette valeur. Les expressions conditionnelles typiques sont les suivantes.
Données égales à la valeur spécifiée: variable à laquelle DataFrame est affecté ['nom de colonne'] == valeur Données différentes de la valeur spécifiée: Variable à laquelle DataFrame est affecté ['nom de colonne']! = Valeur Données plus grandes que la valeur spécifiée: variable à laquelle DataFrame est affecté ['nom de la colonne']> valeur Données supérieures ou égales à la valeur spécifiée: Variable à laquelle DataFrame est affecté ['nom de colonne']> = valeur
Par exemple, lorsque la variable à laquelle DataFrame est affecté est X, pour filtrer les données à la condition que la valeur de la colonne A soit 0, écrivez comme suit.
X [X ['Colonne A'] == 0]
Si vous souhaitez sélectionner uniquement une colonne B spécifique des données filtrées, écrivez comme suit.
X [X ['Colonne A'] == 0] ['Colonne B']
En utilisant cette fonction, il est possible d'extraire uniquement la durée de la colonne (heure du dernier contact) lorsque la colonne y (présence / absence d'application de dépôt fixe (1: oui, 0: non)) vaut '1'.
import pandas as pd
df = pd.read_csv('data.csv', index_col='id')
print( df[df['y']==1] )
print( df[df['y']==1]['duration'] )
Un histogramme est une méthode de visualisation pour vérifier la distribution des données des données numériques. En utilisant l'histogramme, vous pouvez vérifier la plage de valeurs des données numériques et la plage de valeurs la plus fréquente des données numériques.
Ensuite, concernant la durée de la colonne (temps de contact final), deux types d'histogrammes répartis dans le cas où la colonne y (présence / absence de dépôt fixe (1: oui, 0: non)) vaut 0 et le cas où elle vaut 1 sont affichés sur un graphique. Dessinons et comparons la distribution. Pour créer un histogramme, utilisez la fonction distplot de seaborn et écrivez:
seaborn.distplot (variable avec série assignée)
Pour superposer deux types de données, vous pouvez dessiner en écrivant deux fois la fonction distplot. Pour ajouter une légende au graphique, spécifiez le nom de l'étiquette dans l'option distplot, puis écrivez la fonction de légende de matplotlib.
seaborn.distplot (variable avec Série attribuée, étiquette = "nom de l'étiquette") matplotlib.pyplot.legend()
matplotlib fournit de nombreuses fonctions pour améliorer l'apparence du graphe. Par exemple, pour nommer l'axe des x et l'axe des y, utilisez les fonctions xlabel et ylabel.
matplotlib.pyplot.xlabel (nom de l'axe des x) matplotlib.pyplot.ylabel (nom de l'axe des y)
Utilisez également la fonction xlim pour spécifier la plage d'affichage de l'axe x. (La plage d'affichage peut également être spécifiée pour l'axe y avec la fonction ylim.)
matplotlib.pyplot.xlim (limite inférieure de l'axe x, limite supérieure de l'axe x)
import pandas as pd
df = pd.read_csv('data.csv', index_col='id')
import matplotlib.pyplot as plt
import seaborn as sns
duration_0 = df[df['y']==0]['duration'] duration_1 = df[df['y']==1]['duration']
sns.distplot(duration_0, label='y=0') sns.distplot(duration_1, label='y=1')
plt.title('duration histgram')
plt.xlabel('duration')
plt.ylabel('frequency')
plt.xlim(0, 2000)
plt.legend()
plt.show()
Recommended Posts