💖💖作者:计算机毕业设计杰瑞
💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学校实战项目
计算机毕业设计选题推荐

基于大数据的内向外向型性格行为数据分析与可视化系统系统介绍

基于大数据的内向外向型性格行为数据分析与可视化系统是一个综合运用Hadoop分布式存储和Spark计算引擎的数据分析平台。系统通过采集用户的数字行为数据,运用Spark SQL进行大规模数据查询与处理,结合Pandas和NumPy完成复杂的统计计算,实现对用户性格特征的多维度分析。平台提供了用户管理、数据概览分析、用户聚类分析、数字行为分析、性格特征分析以及社交模式分析等九大核心功能模块。前端采用Vue+ElementUI+Echarts技术栈构建交互界面,通过丰富的图表形式将分析结果直观呈现,帮助使用者深入理解不同性格类型人群的行为模式差异。系统同时提供Django和Spring Boot两套后端实现方案,数据存储基于MySQL数据库,整体架构体现了大数据技术在心理学行为研究领域的实际应用价值。

基于大数据的内向外向型性格行为数据分析与可视化系统系统演示视频

演示视频

基于大数据的内向外向型性格行为数据分析与可视化系统系统演示图片


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基于大数据的内向外向型性格行为数据分析与可视化系统系统代码展示

from pyspark.sql import SparkSession
from pyspark.sql.functions import col, avg, count, sum, when, stddev
from pyspark.ml.feature import VectorAssembler, StandardScaler
from pyspark.ml.clustering import KMeans
import pandas as pd
import numpy as np
from django.http import JsonResponse
from django.views import View
import json
spark = SparkSession.builder.appName("PersonalityAnalysis").master("local[*]").config("spark.sql.warehouse.dir", "/user/hive/warehouse").getOrCreate()
class UserClusterAnalysis(View):
    def post(self, request):
        data = json.loads(request.body)
        hdfs_path = data.get('hdfs_path', 'hdfs://localhost:9000/user/data/behavior.csv')
        k_clusters = int(data.get('k_clusters', 3))
        df = spark.read.csv(hdfs_path, header=True, inferSchema=True)
        df = df.filter(col("user_id").isNotNull())
        behavior_stats = df.groupBy("user_id").agg(avg("activity_duration").alias("avg_duration"),count("activity_type").alias("activity_count"),sum(when(col("social_interaction") == 1, 1).otherwise(0)).alias("social_count"),stddev("response_time").alias("response_std"))
        behavior_stats = behavior_stats.na.fill(0)
        feature_cols = ["avg_duration", "activity_count", "social_count", "response_std"]
        assembler = VectorAssembler(inputCols=feature_cols, outputCol="features")
        assembled_data = assembler.transform(behavior_stats)
        scaler = StandardScaler(inputCol="features", outputCol="scaled_features", withStd=True, withMean=True)
        scaler_model = scaler.fit(assembled_data)
        scaled_data = scaler_model.transform(assembled_data)
        kmeans = KMeans(k=k_clusters, seed=42, featuresCol="scaled_features", predictionCol="cluster")
        model = kmeans.fit(scaled_data)
        clustered_data = model.transform(scaled_data)
        cluster_summary = clustered_data.groupBy("cluster").agg(count("user_id").alias("user_count"),avg("avg_duration").alias("cluster_avg_duration"),avg("social_count").alias("cluster_social_avg"))
        result_pd = cluster_summary.toPandas()
        personality_labels = []
        for idx, row in result_pd.iterrows():
            if row['cluster_social_avg'] > result_pd['cluster_social_avg'].mean():
                personality_labels.append("外向型")
            else:
                personality_labels.append("内向型")
        result_pd['personality_type'] = personality_labels
        return JsonResponse({"status": "success","clusters": result_pd.to_dict(orient='records'),"silhouette_score": float(model.summary.trainingCost)})
class DigitalBehaviorAnalysis(View):
    def post(self, request):
        data = json.loads(request.body)
        user_id = data.get('user_id')
        time_range = data.get('time_range', 30)
        df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/personality_db").option("driver", "com.mysql.cj.jdbc.Driver").option("dbtable", "user_behavior").option("user", "root").option("password", "password").load()
        df.createOrReplaceTempView("behavior_table")
        sql_query = f"""SELECT user_id,DATE(behavior_time) as behavior_date,COUNT(*) as daily_activity_count,AVG(screen_time) as avg_screen_time,SUM(CASE WHEN activity_type='social' THEN 1 ELSE 0 END) as social_activities,SUM(CASE WHEN activity_type='solo' THEN 1 ELSE 0 END) as solo_activities FROM behavior_table WHERE user_id = {user_id} AND behavior_time >= DATE_SUB(CURRENT_DATE, {time_range}) GROUP BY user_id, DATE(behavior_time) ORDER BY behavior_date"""
        result_df = spark.sql(sql_query)
        pandas_df = result_df.toPandas()
        pandas_df['social_ratio'] = pandas_df['social_activities'] / (pandas_df['social_activities'] + pandas_df['solo_activities'] + 0.0001)
        pandas_df['behavior_variance'] = pandas_df.groupby('user_id')['daily_activity_count'].transform(lambda x: np.var(x))
        personality_score = 0
        if pandas_df['social_ratio'].mean() > 0.6:
            personality_score += 40
        elif pandas_df['social_ratio'].mean() > 0.4:
            personality_score += 20
        if pandas_df['avg_screen_time'].mean() > 300:
            personality_score += 30
        if pandas_df['behavior_variance'].iloc[0] < 5:
            personality_score += 30
        personality_type = "外向型" if personality_score > 50 else "内向型"
        trend_analysis = pandas_df[['behavior_date', 'daily_activity_count', 'social_ratio']].to_dict(orient='records')
        return JsonResponse({"status": "success","user_id": user_id,"personality_type": personality_type,"personality_score": int(personality_score),"trend_data": trend_analysis,"avg_social_ratio": float(pandas_df['social_ratio'].mean()),"behavior_stability": float(pandas_df['behavior_variance'].iloc[0])})
class SocialPatternAnalysis(View):
    def post(self, request):
        data = json.loads(request.body)
        analyze_type = data.get('analyze_type', 'overall')
        hdfs_social_path = data.get('hdfs_path', 'hdfs://localhost:9000/user/data/social_data.csv')
        social_df = spark.read.csv(hdfs_social_path, header=True, inferSchema=True)
        social_df.createOrReplaceTempView("social_patterns")
        if analyze_type == 'overall':
            pattern_sql = """SELECT user_id,COUNT(DISTINCT friend_id) as friend_count,AVG(interaction_frequency) as avg_interaction_freq,SUM(message_count) as total_messages,AVG(response_speed) as avg_response_speed,MAX(interaction_duration) as max_interaction_time FROM social_patterns GROUP BY user_id"""
        else:
            pattern_sql = """SELECT user_id,interaction_type,COUNT(*) as type_count,AVG(interaction_frequency) as type_avg_freq FROM social_patterns GROUP BY user_id, interaction_type"""
        pattern_result = spark.sql(pattern_sql)
        result_pd = pattern_result.toPandas()
        if analyze_type == 'overall':
            result_pd['network_density'] = result_pd['total_messages'] / (result_pd['friend_count'] + 1)
            result_pd['social_activeness'] = (result_pd['avg_interaction_freq'] * 0.4 + result_pd['network_density'] * 0.3 + (100 - result_pd['avg_response_speed']) * 0.3)
            extrovert_threshold = result_pd['social_activeness'].quantile(0.6)
            result_pd['social_pattern_type'] = result_pd['social_activeness'].apply(lambda x: '外向社交模式' if x > extrovert_threshold else '内向社交模式')
            correlation_matrix = result_pd[['friend_count', 'avg_interaction_freq', 'total_messages', 'avg_response_speed']].corr()
            return JsonResponse({"status": "success","analyze_type": analyze_type,"user_patterns": result_pd.to_dict(orient='records'),"correlation_analysis": correlation_matrix.to_dict(),"extrovert_threshold": float(extrovert_threshold)})
        else:
            pivot_result = result_pd.pivot_table(index='user_id', columns='interaction_type', values='type_count', fill_value=0)
            return JsonResponse({"status": "success","analyze_type": analyze_type,"interaction_distribution": pivot_result.to_dict()})

基于大数据的内向外向型性格行为数据分析与可视化系统系统文档展示

在这里插入图片描述

💖💖作者:计算机毕业设计杰瑞
💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学校实战项目
计算机毕业设计选题推荐

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐