当前位置:   article > 正文

毕业设计:Flask汽车销量分析预测系统 评论情感分析 爬虫 朴素贝叶斯分类(源码)✅

毕业设计:Flask汽车销量分析预测系统 评论情感分析 爬虫 朴素贝叶斯分类(源码)✅

博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌感兴趣的可以先收藏起来,点赞、关注不迷路✌

毕业设计:2023-2024年计算机毕业设计1000套(建议收藏)

毕业设计:2023-2024年最新最全计算机专业毕业设计选题汇总

1、项目介绍

技术栈:

Flask框架、requests爬虫、线性回归预测算法、Echarts可视化、情感分析、朴素贝叶斯分类器

2、项目界面

(1)销量统计分析可视化
在这里插入图片描述

(2)行驶里程与价格的关系在这里插入图片描述

(3)汽车销售数据
在这里插入图片描述

(4)收入预测—机器学习线性回归预测算法

在这里插入图片描述
(5)汽车评论数据

在这里插入图片描述

(6)后台数据管理
在这里插入图片描述

(7)注册登录界面

在这里插入图片描述

3、项目说明

对于"Flask汽车销量分析预测+评论情感系统",您可以使用以下技术栈来实现:

Flask框架:作为后端框架,用于搭建Web应用程序的后端服务,处理前端请求并与数据库进行交互。

requests爬虫:用于从汽车之家网等网站上爬取汽车相关数据,包括销量数据和用户评论数据。

线性回归预测算法:通过对历史汽车销量数据进行线性回归分析,可以建立销量预测模型,基于现有的特征(如时间、价格、促销活动等)来预测未来的销量趋势。

Echarts可视化:使用Echarts库来创建可视化图表,将预测的销量数据以折线图或柱状图的形式展示在前端页面上,帮助用户直观地理解销量趋势。

情感分析:使用情感分析算法(如基于机器学习的朴素贝叶斯分类器)对用户评论进行情感分类,判断评论是积极的、消极的还是中性的。这可以帮助企业了解消费者对汽车的态度和情感倾向。

通过以上技术栈的组合,您可以搭建一个综合的汽车销量分析预测和评论情感分析系统。用户可以通过系统获取汽车销量预测结果,并查看对应的评论情感分析,以便更好地了解市场需求和产品口碑。

4、核心代码


# coding:utf-8
import nltk
# nltk.download()
import nltk.classify.util
from nltk.classify import NaiveBayesClassifier
from nltk.corpus import movie_reviews
import jieba
import models


# 分析句子的情感:情感分析是NLP最受欢迎的应用之一。情感分析是指确定一段给定的文本是积极还是消极的过程。
# 有一些场景中,我们还会将“中性“作为第三个选项。情感分析常用于发现人们对于一个特定主题的看法。


# 定义一个用于提取特征的函数
# 输入一段文本返回形如:{'It': True, 'movie': True, 'amazing': True, 'is': True, 'an': True}
# 返回类型是一个dict
def extract_features(word_list):
    return dict([(word, True) for word in word_list])


def stopwordslist():
    stopwords = [line.strip() for line in open('stopwords.txt', 'r', encoding='utf-8').readlines()]
    return stopwords


# 我们需要训练数据,这里将用NLTK提供的评论数据
if __name__ == '__main__':
    # 加载积极与消极评论
    # positive_fileids = movie_reviews.fileids('pos')  # list类型 1000条数据 每一条是一个txt文件
    # negative_fileids = movie_reviews.fileids('neg')
    # print(type(positive_fileids), len(negative_fileids))

    # 将这些评论数据分成积极评论和消极评论
    # movie_reviews.words(fileids=[f])表示每一个txt文本里面的内容,结果是单词的列表:['films', 'adapted', 'from', 'comic', 'books', 'have', ...]
    # features_positive 结果为一个list
    # 结果形如:[({'shakesp: True, 'limit': True, 'mouth': True, ..., 'such': True, 'prophetic': True}, 'Positive'), ..., ({...}, 'Positive'), ...]
    features_positive = []
    with open('positive.txt', 'r', encoding='utf-8')as f:
        results = f.readlines()
    for f in results:
        # print(({f.strip():True}, 'Positive'))
        features_positive.append(({f.strip(): True}, 'Positive'))
    features_negative = []
    with open('negative.txt', 'r', encoding='utf-8')as f:
        results = f.readlines()
    for f in results:
        # print(({f.strip():True}, 'Positive'))
        features_negative.append(({f.strip(): True}, 'Negative'))

    # 分成训练数据集(80%)和测试数据集(20%)
    threshold_factor = 0.8
    threshold_positive = int(threshold_factor * len(features_positive))  # 800
    threshold_negative = int(threshold_factor * len(features_negative))  # 800
    # 提取特征 800个积极文本800个消极文本构成训练集  200+200构成测试文本
    features_train = features_positive[:threshold_positive] + features_negative[:threshold_negative]
    features_test = features_positive[threshold_positive:] + features_negative[threshold_negative:]
    print("\n训练数据点的数量:", len(features_train))
    print("测试数据点的数量:", len(features_test))

    # 训练朴素贝叶斯分类器
    classifier = NaiveBayesClassifier.train(features_train)
    print("\n分类器的准确性:", nltk.classify.util.accuracy(classifier, features_test))

    print("\n十大信息最丰富的单词:")
    for item in classifier.most_informative_features()[:10]:
        print(item[0])

    # 输入一些简单的评论
    input_reviews = [
        "距离斯蒂芬·金(Stephen King)和德拉邦特(Frank Darabont)们缔造这部伟大的作品已经有十年了。我知道美好的东西想必大家都能感受,但是很抱歉,我的聒噪仍将一如既往。在我眼里,肖申克的救赎与信念、自由和友谊有关。[1]信 念瑞德(Red)说,希望是危险的东西,是精神苦闷的根源。重重挤压之下的牢狱里呆了三十年的他的确有资格这么说。因为从进来的那一天起,狱长就说过,「把灵魂交给上帝,把身体交给我。」除了他能弄来的香烟和印着裸女的扑克牌,任何其他异动在这个黑暗的高墙之内似乎都无法生长。然而安迪(Andy)告诉他,「记住,希望是好事——甚至也许是人间至善。而美好的事永不消失。」所以安迪能够用二十年挖开瑞德认为六百年都无法凿穿的隧洞。当他终于爬出五百码恶臭的污水管道,站在瓢泼大雨中情不自禁的时候,我们仿佛看到信念刺穿重重黑幕,在暗夜中打了一道夺目霹雳。亮光之下,我们懦弱的灵魂纷纷在安迪张开的双臂下现形,并且颤抖。庸常生活里的我们,似乎已经习惯了按部就班,习惯了先说「那不可能」,习惯了没有奇迹,习惯了,习惯了。可是正如《飞越疯人院》(One Flew over the Cuckcoo’s Nest)中说的那样,「不试试,怎么知道呢?」试着留住一些信念,在它们丧失殆尽之前。它们也许无法最终实现,也许无法让我们更有意义的活着——甚至对于我自己而言,它们只会愈加带给我来更多的虚无感。然而我知道我有多需要这样的虚伪与自欺,因为你可以说我在做梦,但我不会是仅有的一个。——我们已经看到监狱长打开藏有安迪凿石锤的《圣经》时,翻至那页正是《出埃及记》。这个章节详细描述了犹太教徒逃离埃及的过程。[2]自 由我到今天也始终不明白,这两个意大利女人在唱什么。事实上,我也不想去明白。有些东西不说更好。我想,那是非笔墨可形容的美境。然而却令你如此心伤。那声音飞扬,高远入云,超过任何在禁锢中的囚犯们所梦,仿佛一只美丽的小鸟,飞入这灰色的鸟笼,让那些围墙消失,令铁窗中的所有犯人,感到一刻的自由。当安迪不顾一切地在监狱的喇叭里放《费加罗的婚礼》(Le Nozze di Figaro)时,镜头缓缓划过正在广场上放风的犯人们和狱警们。他们叫人感动地静立当地,抛却所有愤懑、狠毒和怨怼,沐浴着我从未觉得如此自由的阳光。莫扎特的乐声铺洒在这些人们身上,来自俗世的美妙音符似乎将他们都濯洗得纯净无比。强者自救,圣者渡人。我这才明白安迪的用意。修屋顶的时候,他为大家争取来啤酒,事实上是为大家争取到那种像在修缮自家的屋顶一般自在的感觉,所以他不喝酒,微笑却带着巨大的幸福;放费加罗的婚礼,也是要唤醒他们已丧失殆尽的自由感。然而强者终究是少数。自由面前,更多的人们纷纷选择禁锢。在监狱图书馆呆了五十年的布鲁克斯(Brooks),为了不被假释,竟然想通过伤害狱友来达到留在监狱的目的。很奇怪吗?自由本来应该是人们向往和追求的东西。可是布鲁克斯们却早已经被监狱的规则之下规则了自己,他们需要规则,需要秩序,如果没有它们,甚至无法生存。「监狱里的高墙实在是很有趣。刚入狱的时候,你痛恨周围的高墙;慢慢地,你习惯了生活在其中;最终你会发现自己不得不依靠它而生存。这就是体制化。」假瑞德之口,斯蒂芬·金直指卑微。布鲁克斯得到了身体的自由,灵魂却已经被无可挽回地体制化。他终于没有能够摆脱对自由无法适应的困境,悬梁自尽。而睿智如瑞德,在出狱之后也悲哀地发现,自己竟然连撒尿都要向经理报告,否则一滴尿都挤不出来。他也考虑如何违规以便回到监狱,甚至考虑与 布鲁克斯一样离开。要么忙着生活,要么忙着等死(Busy for living, or busy for death)。步履匆匆的人们也许应该偶尔驻足,跳出来看看自己的模样。我们终会知道,习惯于服从规则的人们将付出巨大代价来习惯本来属于每一个个体的自由。 [3]友 谊此片无关爱情,除了背叛。有的只是监狱中的男人间的友谊。瑞德和安迪的那种友谊置放在高墙之下,似乎比我们纷繁俗世中的友情来得更加纯粹和干净。他们都是内敛的人,然而洞悉一切,心意契合。我喜欢这种感情。所以在他们终于相会在太平洋小岛的阳光沙滩之上的时候,忍不住一人笑了。如果我在肖申克,我会是谁?如果你在肖申克,你又会是谁?我的新鲜公号",
    ]

    datas = models.PingLun.query.all()

    # 运行分类器,获得预测结果
    print("\n预测:")
    stopwords = stopwordslist()  # 这里加载停用词的路径
    for review1 in datas:
        review = review1.content
        segtmp = jieba.lcut(review, cut_all=False)  # 把句子进行分词,以列表的形式返回
        outstr = []
        for word in segtmp:
            if word not in stopwords:
                if word != '\t':
                    if word != ' ' and word != '\n':
                        outstr.append(word.strip())
        print("\n评论:", review)
        probdist = classifier.prob_classify(extract_features(outstr))
        pred_sentiment = probdist.max()
        # 打印输出
        print("预测情绪:", pred_sentiment)
        print("可能性:", round(probdist.prob(pred_sentiment), 2))
        review1.status = pred_sentiment
        models.db.session.commit()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/196641
推荐阅读
相关标签