赞
踩
博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌感兴趣的可以先收藏起来,点赞、关注不迷路✌
毕业设计:2023-2024年计算机毕业设计1000套(建议收藏)
毕业设计:2023-2024年最新最全计算机专业毕业设计选题汇总
技术栈:
Python语言、MySQL数据库、Flask框架、ARIMA预测算法、Echarts可视化、SnowNLP情感分析
微博舆情+爬虫+监控+预测系统
(1)预测折线图
(2)用户分布中国地图
(3)微博热搜榜
(4)舆情分析报告
(5)关键词词云图
(6)微博帖子
(7)个人信息设置
(8)历史记录
这是一个使用Python语言和相关技术构建的微博舆情监控和预测系统。
通过以上技术的组合,这个系统可以帮助用户实时了解微博上关于特定话题的舆情信息,包括舆情的情感倾向、趋势、周期性等,从而帮助用户更好地了解公众的关注点和态度,以便做出相应的决策。
import pymysql import statsmodels.api as sm import pandas as pd import matplotlib.pyplot as plt from pmdarima.arima import auto_arima from statsmodels.tsa.arima_model import ARIMA connection = pymysql.connect(host='localhost', user='root', password='123456', db='database', charset='utf8mb4') query = "select like_count,created_at FROM comment WHERE keyword = '%" + '考研调剂' + "%' ORDER BY STR_TO_DATE(created_at, '%Y-%m-%d %H:%i:%s') ASC;" # 从MySQL数据库读取数据 df = pd.read_sql_query(query, connection) # 将字符型的时间转换为时间格式 df['created_at'] = df['created_at'].astype(str) df['created_at'] = pd.to_datetime(df['created_at']) # 计算热度指标 df['hotness'] = df['post_count'] + df['comment_count'] * df['like_count'] df = df[['hotness']] # 可视化时间序列 df.plot() plt.show() # 将时间列设为索引,并按照时间排序 df = df.set_index('created_at') df = df.sort_index() # 进行差分处理 df_diff = df.diff().dropna() # 确定ARIMA模型的p、d、q参数 # 自动寻找最优参数 p_values = range(0, 3) d_values = range(0, 2) q_values = range(0, 3) best_score, best_cfg = float('inf'), None for p in p_values: for d in d_values: for q in q_values: order = (p, d, q) try: model = ARIMA(df, order=order) model_fit = model.fit() mse = model_fit.mse if mse < best_score: best_score, best_cfg = mse, order print('ARIMA%s MSE=%.3f' % (order, mse)) except: continue print('Best ARIMA%s MSE=%.3f' % (best_cfg, best_score)) # 训练ARIMA模型并进行预测 # 训练模型并进行预测 model = ARIMA(df, order=best_cfg) model_fit = model.fit() forecast = model_fit.forecast(steps=36) # 绘制预测结果的折线图 plt.plot(df, label='Actual') plt.plot(forecast, label='Predicted') plt.legend() plt.show() train_data = df_diff[:len(df_diff) - 7] test_data = df_diff[len(df_diff) - 7:] arima_model = ARIMA(train_data, order=auto_model.order) arima_result = arima_model.fit() pred = arima_result.predict(start=len(train_data), end=len(train_data) + len(test_data) - 1, typ='levels') # 将预测结果反差分 diff_recover = df_diff.shift(1) diff_recover.iloc[0] = df.iloc[0] predictions = diff_recover.add(pred, fill_value=0) # 可视化预测结果 plt.figure(figsize=(15, 6)) plt.plot(df.index, df, label='Original') plt.plot(predictions.index, predictions, label='Predictions') plt.legend(loc='best') plt.title('ARIMA Time Series Forecasting') plt.show() plt.savefig('myplot.png')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。