J'essaie de vérifier s'il y a une corrélation entre Mon Dataframe code> ressemble à ce qui suit: p>
TypeError: unsupported operand type(s) for /: 'str' and 'int'
3 Réponses :
Vous travaillez avec des caractéristiques ou des étiquettes catégoriques. Il n'est pas vraiment significatif de regarder la corrélation.
Au lieu de cela, vous devriez simplement regarder des histogrammes: p> et obtenir quelque chose comme ceci: p> < un href = "https://i.stack.imgur.com/9p2pb.png" rel = "nOfollow noreferrer"> Ce qui précède vous donnerait le nombre fort> absolu fort> pour chaque combinaison spam / jour. Vous pouvez également visualiser le compteur relative strud> avec et vous obtenez: p> p>
value_counts code>: p>
Merci beaucoup pour vous suggestion, Quang Hoang. Vraiment apprécié
Convertissez les jours de la semaine en un numéro de 0 à 6, puis exécutez numpy.corcoef code> p>
C'est la solution incorrecte évidente, en supposant que la dépendance linéaire entre les jours de semaine et le taux de spam
Pourtant, c'est la question posée - s'il y a ou non une dépendance linéaire.
donné que vous avez une variable catégorique et catégorique, Cramer's V est la métrique idéale que vous devez utiliser -
import scipy.stats as ss def cramers_corrected_stat(confusion_matrix): """ calculate Cramers V statistic for categorical-categorical association. uses correction from Bergsma and Wicher, Journal of the Korean Statistical Society 42 (2013): 323-328 """ chi2 = ss.chi2_contingency(confusion_matrix)[0] n = confusion_matrix.sum().sum() phi2 = chi2/n r,k = confusion_matrix.shape phi2corr = max(0, phi2 - ((k-1)*(r-1))/(n-1)) rcorr = r - ((r-1)**2)/(n-1) kcorr = k - ((k-1)**2)/(n-1) return np.sqrt(phi2corr / min( (kcorr-1), (rcorr-1))) cramers_corrected_stat(pd.crosstab(df['Spam?'], df['Day']))
Pouvez-vous clarifier la "corrélation"?
@Marat: corrélation Pearson. Je pense que je devrai coder en semaine
La semaine est une valeur catégorique, pas numérique. Vous ne pouvez pas utiliser la corrélation Pearson pour cela (Eh bien, à moins que vous n'ayez une raison forte de croire qu'il existe une dépendance linéaire)
merci Marat. Donc, je devrai coder la colonne de la semaine, n'est-ce pas?
Je ne sais pas - c'est exactement ma question. Quel genre de résultat voulez-vous voir ici?
Une relation qui peut montrer si le courrier électronique de spam est plus probable se propager samedi (par exemple)
Une approche commune consiste à calculer une chance d'obtenir des statistiques de samedi par hasard, compte tenu de tous les autres jours. Vous pouvez calculer la différence entre les moyens de taux de spam, la taille des effets ou la distance entre les distributions. N'importe lequel d'entre eux sera un début raisonnable; Ce qui est important, c'est de prendre en compte le hasard
Pour voir si le spam est inhabituellement plus élevé ou plus bas un jour donné, vous avez besoin d'une métrique catégorique. Le coefficient de corrélation concerne les données avec une relation continue, telle que notant une tendance à augmenter le spam à la semaine. Essayez plutôt un test chi-carré.