如何将聚类算法应用于我的Twitter数据集?

我对聚类还比较新手。我使用tweepy提取了一个包含许多行的Twitter数据集:

样本数据:

tweet ID date
NSW Demons – Watch Melbourne v Sydney tonight 1387339243786182657 2021-05-08 05:55:30
Brown in and Harmes returns, Melb v Rich match 1387332484715581440 2021-05-08 05:40:45
Kick-off is at 7:10 PM from the Docklands. 1385474911448096770 2021-05-08 05:35:21
“RT @melbournefc: Kicking with Choco. 1385474643541127168 2021-05-08 05:30:15

如何应用聚类算法来根据日期和时间找到聚类?这样我就可以每小时检索推文/转发活动,并生成一个模式。

例如:

如果用户在凌晨1点到2点之间发推文/转发,那么该推文/转发属于第1簇

如果用户在凌晨2点到3点之间发推文/转发,那么该推文/转发属于第2簇,依此类推。


回答:

如果您的规则是特定的,即凌晨1点到2点之间的所有推文都应聚为一簇,凌晨2点到3点之间的推文也应如此,那么这里不需要算法。您只需使用条件赋值来相应地分配簇,例如:

import pandas as pddate = pd.Series(["2021-05-08 05:55:30", "2021-05-08 05:40:45", "2021-05-08 05:35:21", "2021-05-08 05:30:15"], name='date')date = pd.to_datetime(date).to_frame()# 相应地分配簇IDdate['cluster'] = 0    # 默认# 凌晨1点到2点date.loc[(date['date'].dt.hour > 1) & (date['date'].dt.hour <= 2), 'cluster'] = 1# 凌晨2点到3点date.loc[(date['date'].dt.hour > 2) & (date['date'].dt.hour <= 3), 'cluster'] = 2

否则,如果您想应用聚类算法,例如kmeans,自动对日期列进行聚类学习,我建议您将它们转换为Unix时间戳秒,这样它们就变成了数值,可以输入到模型中:

import pandas as pddate = pd.Series(["2021-05-08 05:55:30", "2021-05-08 05:40:45", "2021-05-08 05:35:21", "2021-05-08 05:30:15"])date_unix = (pd.to_datetime(date) - pd.Timestamp("1970-01-01")) // pd.Timedelta("1s")print(date_unix)

输出

0    16204533301    16204524452    16204521213    1620451815Name: date, dtype: int64

然后您可以对date_unix应用sklearn中的KMeans聚类算法

from sklearn.cluser import KMeanskm = KMeans(n_clusters=2)

这里,n_clusters是一个可以根据您的知识进行调整的参数。np.expand_dims将大小为3的数组转换为3 x 1的矩阵,因为模型通常期望一个矩阵而不是一个向量。然后为您的数据拟合模型:

km.fit(np.expand_dims(date_unix, axis=1))

然后预测

cluster_id = km.predict(np.expand_dims(date_unix, axis=1))print(cluster_id)

输出

[1 0 0 0]

您可以看到算法将第一个日期聚为一簇,将其他三个日期聚为另一簇。因为后三个日期彼此更接近。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注