基于KMeans的微博聚类

数据集

部分数据如下:微博id + 内容
3794120055174366 #九阳有礼 无需多滤#九阳免滤豆浆机C668SG耀世首发!智能预约免过滤,贴心配置强到飞起,让你再续温柔一小时!好豆浆,九阳造!经常在苏宁买东西,正品又实惠.相信苏宁!支持苏宁!@俏宝贝筱筱 @可妞儿的小妈咪 @爱情砖家V小K
3794120118102891 #九阳有礼 无需多滤#[新年快乐]九阳免滤豆浆机C668SG耀世首发!智能预约免过滤,贴心配置强到飞起,让你再续温柔一小时![加油啊]@想做二奶 @豆浆需要油条我需要你o @不想要你满嘴的谎言o
3794120209918455 #九阳有礼 无需多滤#九阳免滤豆浆机C668SG耀世首发!智能预约免过滤,贴心配置强到飞起,让你再续温柔一小时!好豆浆,九阳造!经常在苏宁买东西,正品又实惠.相信苏宁!支持苏宁!@爱仔妈咪 @张祥890613 @张夫人1129
3794120248499886 九阳免滤豆浆机C668SG耀世首发,生活也免滤了,活动太给力了,@桐桐宝宝爱妈咪 @专扣岩石 @我是逗逼小倪

链接:数据集及代码
提取码:rrj0

特征抽取

def load_data():
    """
        加载微博文章
        return  id_:所有微博id列表
                topics:所有文章列表
    """
    f = open("train.txt","rb")
    
    topics = []
    id_ = []
    
    #每一行 为一篇文章
    #获取所有文章 和 id号
    while True:
        line = f.readline()
        
        if line:
            line = line.decode("utf-8")
        
            w_id,topic = line.split("\t")
            
            
            id_.append(w_id)
            topics.append(topic)
        else:
            break
    
    id_[0] = id_[0][1:]
    print(id_[:10])
    
    
    return id_,topics

def extract_features(topics):
    """
        文档向量化
        return X:2dim array,特征集
    """
    vectorizer = TfidfVectorizer()
    sparse = vectorizer.fit_transform(topics)
    
    return sparse,vectorizer

聚类

	#加载数据
    id_, topics = load_data()
    
    #抽取特征
    X,vectorizer = extract_features(topics)
    
    #训练模型
    kmeans = KMeans(n_clusters=20,random_state=3)
    y_pred = kmeans.fit_predict(X)
    
    #评估模型
    from sklearn.metrics import silhouette_score
    
    score = silhouette_score(X,y_pred)
    
    print("轮廓系数:",score)

找出每簇的中心思想

TFIDF 值越大,越能代表中心思想

猜你喜欢

转载自blog.csdn.net/weixin_45228198/article/details/113883235