Hallo, das ist Sunfish. ** "Twtter x Corona" ** Wir werden weiter analysieren. Teil 1 analysierte den Tweet-Text morphologisch und berechnete sogar die Anzahl der häufig vorkommenden Wörter, die täglich erscheinen.
↓ Ausgewählte häufig verwendete Wörter 27
Mehr als ein halbes Jahr ist vergangen, seit das Koronavirus zu einem sozialen Problem wurde. Folgen wir dem Tweet, was in den Menschen aufsteigt und was vergessen wird. Im zweiten Teil werden wir die Regressionsanalyse verwenden, um Wörter mit Auf- / Ab-Trends zu finden.
Wir werden die Daten zur Anzahl der Vorkommen nach Tag und Wort verwenden, die im ersten Teil erstellt wurden. ↓ Daten ↓ Wenn visualisiert
Im Laufe der Tage möchte ich die Wörter finden, die mehr oder weniger erscheinen. Mit anderen Worten
y:Anzahl der Tweets für ein bestimmtes Wort=a\times x:Anzahl der verstrichenen Tage+b
Lassen Sie uns eine solche Regressionsgleichung ableiten und die Steigung "a" und den Korrelationskoeffizienten beobachten. Als Datenoperation ist es notwendig, die "verstrichenen Tage" aus den Datumsdaten zu berechnen. Weisen Sie als Ansatz Seriennummern, Wort für Wort und Datum in aufsteigender Reihenfolge zu.
from scipy.spatial.distance import cdist
import pandas as pd
import statsmodels.api as sm
port_23 = port_22.copy()
model_params = {'method': 'first', 'ascending': True}
port_23[['Created_At']] = pd.to_datetime(port_23[['Created_At']])
port_23['index'] = port_23.groupby(['Wort'])[['Created_At']].rank(**model_params)
port_23[['Created_At']] = port_23[['Created_At']].map(lambda x: x.date())
↓ Achten Sie auf die x-Achse. Nachdem wir die Anzahl der verstrichenen Tage erreicht haben, sind wir bereit für die Regressionsanalyse.
Wir werden beobachten, wie sich die ausgewählten 24 Wörter entsprechend der Anzahl der Tage ändern, die seit den Ergebnissen der Regressionsanalyse vergangen sind. Wenn ich versuche, es in Python zu schreiben, ist es schwierig, für jedes Wort eine Schleife zu erstellen.
group_keys = ['Wort']
X_columns = ['index']
Y_column = 'Anzahl'
groups = port_23.groupby(group_keys)
models = {}
summaries = {}
def corr_xy(X, y):
"""Finden Sie den Korrelationskoeffizienten zwischen der Zielvariablen und der erklärenden Variablen"""
X_label = X.columns.tolist()
X = X.T.values
y = y.values.reshape(1, -1)
corr = 1 - cdist(X, y, metric='correlation')
corr = pd.DataFrame(corr, columns=['Korrelationskoeffizient mit Zielvariable'])
corr['Erklärende Variable'] = X_label
return corr
for i, g in groups:
X = g[X_columns]
Y = g[Y_column].squeeze()
corr = corr_xy(X, Y)
try:
model = sm.OLS(y, sm.add_constant(X, has_constant='add')).fit()
model.X = X.columns
models[i] = model
summary = pd.DataFrame(
{
'Erklärende Variable': X.columns,
'Koeffizient': np.round(model.params, 5),
'Standardabweichung': np.round(model.bse, 5),
't Wert': np.round(model.tvalues, 5),
'Pr(>|t|)': np.round(model.pvalues, 5)
},
columns=['Erklärende Variable', 'Koeffizient', 'Standardabweichung', 't Wert', 'Pr(>|t|)'])
summary = summary.merge(corr, on='Erklärende Variable', how='left')
summaries[i] = summary
except:
continue
res = []
for key, value in summaries.items():
value[group_keys] = key
res.append(value)
concat_summary = pd.concat(res, ignore_index=True)
port_24 = models
port_25 = concat_summary
↓ Mit nehan können Sie die mühsame Schleifenverarbeitung mit der Option "Modell für jede Gruppe erstellen" vermeiden.
Und wir haben das Ergebnis der Regressionsanalyse für jedes Wort erhalten. Erklärende Variable = const
ist eine Abschnittsinformation.
Es gibt verschiedene Interpretationen, aber hier
Extrahieren Sie die Wörter, wenn sie korreliert sind.
port_27 = port_25[(port_25['Korrelationskoeffizient mit Zielvariable'] <= -0.4) |
(port_25['Korrelationskoeffizient mit Zielvariable'] >= 0.4)]
Schauen wir uns die Wortinformationen genauer an.
Aufwärtstrend Wort
Abwärtstrendwort
↓ ** Live **, Übergang nach Anzahl der Tage ↓ ** Regierung **, Änderung nach Anzahl der Tage
Die Bedrohung durch Corona ist nicht verschwunden, aber die Anzahl der Wörter, die wir in kritischen Zeiten häufig in den Nachrichten sehen, hat abgenommen, und die Anzahl der Wörter, die stark von Selbstbeherrschung beeinflusst wurden, wie Ereignisse und Live-Auftritte, hat zugenommen. Sie können sehen, wie es geht. Natürlich kann dies allein nicht als "jeder will live gehen!" ** bezeichnet werden, aber ich möchte dieses Thema als eine Überlegung abschließen, die auf den bisherigen Daten basiert.
Wir hoffen, dass Sie die Attraktivität von nehan verstehen, einem programmierfreien Analysetool, das mit verschiedenen Analysen und Visualisierungen aus vorverarbeiteten Daten verknüpft werden kann.
Recommended Posts