基于KMeans的微博聚类

数据集

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

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

特征抽取

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 值越大,越能代表中心思想

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
以下是基于kmeans均值聚类的BP神经网络在MATLAB中的实现函数: ```matlab function [net, tr] = kmeans_bp(train_input, train_target, hidden_size) % 使用kmeans均值聚类初始化权重的BP神经网络 % train_input: 训练输入数据,每列是一个输入向量 % train_target: 训练目标数据,每列是一个目标向量 % hidden_size: 隐藏层神经元个数 % net: 训练好的神经网络模型 % tr: 训练过程记录 % 训练参数 epochs = 1000; % 训练轮数 lr = 0.01; % 学习率 momentum = 0.9; % 冲量 % 初始化神经网络 input_size = size(train_input, 1); output_size = size(train_target, 1); net = newff(train_input, train_target, hidden_size, {'tansig', 'purelin'}, 'trainlm'); % 使用kmeans均值聚类初始化权重 net = init(net); % 设置训练参数 net.trainParam.epochs = epochs; net.trainParam.lr = lr; net.trainParam.mc = momentum; % 训练神经网络 [net, tr] = train(net, train_input, train_target); end function net = init(net) % 使用kmeans均值聚类初始化权重 % 获取隐藏层权重和偏置 hidden_weight = net.IW{1}; hidden_bias = net.b{1}; % 使用kmeans聚类初始化隐藏层权重和偏置 [idx, centers] = kmeans(net.inputs{1}, size(hidden_weight, 2)); hidden_weight = centers'; hidden_bias = -hidden_weight * mean(net.inputs{1}, 2); % 更新隐藏层权重和偏置 net.IW{1} = hidden_weight; net.b{1} = hidden_bias; % 更新输出层权重和偏置 net = configure(net, net.inputs{1}, zeros(size(net.outputs{end}))); net.LW{2,1} = pinv(hidden_weight) * net.train{2}; net.b{2} = mean(net.train{2} - net.LW{2,1} * hidden_weight, 2); end ``` 这里使用了MATLAB自带的`newff`函数来创建BP神经网络模型,并且使用了`trainlm`作为训练函数。在初始化权重时,我们使用了kmeans聚类算法来初始化隐藏层的权重和偏置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laufing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值