🚀 基于Python的烟酒成瘾个体行为数据可视化分析系统
本文详细介绍了一个基于Python Django框架开发的专业级烟酒成瘾个体行为数据分析与可视化系统。
📋 目录
- 项目概述
- 技术架构
- 核心功能
- 数据模型
- 机器学习算法
- 可视化展示
- 部署指南
- 项目结构
🎯 项目概述
项目背景
随着现代社会生活节奏的加快,烟酒成瘾问题日益严重。本项目旨在构建一个智能化的烟酒成瘾个体行为数据分析平台,通过机器学习算法和现代可视化技术,为研究人员提供科学的数据支撑。
项目亮点
- 🎨 现代化UI设计:采用Moban3320专业模板
- 📊 智能数据分析:集成相关性、分布、聚类、预测等算法
- 🔍 交互式可视化:Chart.js + Plotly 双重图表引擎
- 🛡️ 完善的权限系统:基于Django认证框架
- 🚀 一键部署:自动化安装脚本
🏗️ 技术架构
后端技术栈
- 核心框架:Django 4.2.7
- 数据库:MySQL 8.0
- 运行环境:Python 3.8+
- ORM:Django ORM
- 认证系统:Django Authentication
前端技术栈
- 模板引擎:Django Templates
- UI框架:Bootstrap 4 + Moban3320
- 图表引擎:Chart.js + Plotly
- 交互组件:jQuery + Ajax
数据科学技术栈
- 数据处理:Pandas 2.1.4, NumPy 1.24.3
- 机器学习:Scikit-learn 1.3.2
- 可视化:Matplotlib 3.7.2, Seaborn 0.12.2
⚡ 核心功能
👤 用户管理系统
- 用户认证与权限控制
- 个人中心与头像管理
- 安全的密码管理
📊 智能数据分析
- 相关性分析:皮尔逊相关系数计算
- 分布分析:多变量分布图表
- 聚类分析:K-means无监督学习
- 预测分析:随机森林分类器
🎨 数据可视化
- 交互式图表展示
- 专业分析报告
- 实时仪表板
📊 数据模型
数据集概览
包含3000条高质量样本,涵盖全球多个国家和地区的成瘾者数据。
核心数据模型
用户模型
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
avatar = models.ImageField(upload_to='avatars/', null=True, blank=True)
phone = models.CharField(max_length=20, blank=True)
created_at = models.DateTimeField(auto_now_add=True)
成瘾数据模型
class AddictionData(models.Model):
# 基本信息
name = models.CharField(max_length=100)
age = models.IntegerField()
gender = models.CharField(max_length=10)
country = models.CharField(max_length=50)
city = models.CharField(max_length=50)
# 成瘾行为
smokes_per_day = models.IntegerField()
drinks_per_week = models.IntegerField()
smoking_start_age = models.IntegerField()
drinking_start_age = models.IntegerField()
# 健康状态
has_health_issues = models.BooleanField(default=False)
bmi = models.FloatField()
sleep_hours = models.FloatField()
🧠 机器学习算法
🔗 相关性分析
def correlation_analysis(data):
"""皮尔逊相关系数分析"""
numeric_columns = data.select_dtypes(include=[np.number]).columns
correlation_matrix = data[numeric_columns].corr(method='pearson')
# 识别强相关关系 (|r| > 0.7)
strong_correlations = []
for i in range(len(correlation_matrix.columns)):
for j in range(i+1, len(correlation_matrix.columns)):
corr_value = correlation_matrix.iloc[i, j]
if abs(corr_value) > 0.7:
strong_correlations.append({
'variable1': correlation_matrix.columns[i],
'variable2': correlation_matrix.columns[j],
'correlation': corr_value
})
return {
'correlation_matrix': correlation_matrix.to_dict(),
'strong_correlations': strong_correlations
}
🎯 聚类分析
def kmeans_clustering_analysis(data, n_clusters=4):
"""K-means聚类分析"""
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
# 数据预处理
numeric_columns = data.select_dtypes(include=[np.number]).columns
features = data[numeric_columns].fillna(data[numeric_columns].mean())
# 标准化
scaler = StandardScaler()
features_scaled = scaler.fit_transform(features)
# K-means聚类
kmeans = KMeans(n_clusters=n_clusters, random_state=42)
cluster_labels = kmeans.fit_predict(features_scaled)
return {
'cluster_labels': cluster_labels.tolist(),
'cluster_centers': scaler.inverse_transform(kmeans.cluster_centers_).tolist(),
'inertia': kmeans.inertia_
}
🤖 预测分析
def random_forest_prediction(data, target_variable='has_health_issues'):
"""随机森林健康风险预测"""
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
# 准备特征
feature_columns = data.select_dtypes(include=[np.number]).columns.tolist()
if target_variable in feature_columns:
feature_columns.remove(target_variable)
X = data[feature_columns].fillna(data[feature_columns].mean())
y = data[target_variable]
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# 训练模型
rf_model = RandomForestClassifier(n_estimators=100, random_state=42)
rf_model.fit(X_train, y_train)
# 模型评估
train_score = rf_model.score(X_train, y_train)
test_score = rf_model.score(X_test, y_test)
return {
'train_accuracy': train_score,
'test_accuracy': test_score,
'feature_importance': dict(zip(feature_columns, rf_model.feature_importances_))
}
📊 可视化展示
项目展示
** 💭 项目源码获取,码界筑梦坊各平台同名,博客底部含联系方式卡片,欢迎咨询!**
交互式图表配置
// Chart.js 配置示例
const chartConfig = {
type: 'line',
data: {
labels: chartLabels,
datasets: [{
label: '吸烟量趋势',
data: smokingData,
borderColor: 'rgb(255, 99, 132)',
backgroundColor: 'rgba(255, 99, 132, 0.2)'
}]
},
options: {
responsive: true,
plugins: {
title: {
display: true,
text: '烟酒成瘾行为趋势分析'
}
}
}
};
热力图可视化
def create_correlation_heatmap(correlation_matrix):
"""创建相关性热力图"""
import plotly.graph_objects as go
fig = go.Figure(data=go.Heatmap(
z=correlation_matrix.values,
x=correlation_matrix.columns,
y=correlation_matrix.index,
colorscale='RdBu',
zmid=0
))
fig.update_layout(
title='变量相关性热力图',
width=800,
height=600
)
return fig.to_html(include_plotlyjs='cdn')
🚀 部署指南
环境要求
- Python 3.8+
- MySQL 8.0+
- 内存 4GB+
- 磁盘 2GB+
快速安装
# 1. 克隆项目
git clone [项目地址]
cd addiction-analysis-system
# 2. 创建虚拟环境
python -m venv venv
venv\Scripts\activate # Windows
source venv/bin/activate # Linux/Mac
# 3. 一键安装
python setup.py
# 4. 启动服务
python manage.py runserver
数据库配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'design_263_wine',
'USER': 'root',
'PASSWORD': 'your_password',
'HOST': 'localhost',
'PORT': '3306',
'OPTIONS': {'charset': 'utf8mb4'}
}
}
📁 项目结构
addiction-analysis-system/
├── 🏗️ addiction_analysis_system/ # Django项目核心配置
├── 👤 accounts/ # 用户认证模块
├── 📊 dashboard/ # 数据仪表板模块
├── 🧠 data_analysis/ # 智能分析模块
├── 🎨 templates/ # Django模板文件
├── 🎭 static/ # 静态资源文件
├── 📈 data/ # 数据文件目录
├── 📄 media/ # 用户上传文件
└── ⚙️ 核心脚本文件
├── manage.py # Django管理命令
├── requirements.txt # Python依赖包
├── import_data.py # 数据导入脚本
└── setup.py # 自动化部署脚本
💻 使用示例
视图函数
@login_required
def correlation_analysis_view(request):
"""相关性分析视图"""
if request.method == 'POST':
try:
data = pd.DataFrame(list(AddictionData.objects.all().values()))
result = correlation_analysis(data)
return JsonResponse({
'success': True,
'data': result
})
except Exception as e:
return JsonResponse({
'success': False,
'error': str(e)
})
return render(request, 'data_analysis/correlation.html')
模板标签
@register.filter
def correlation_strength(value):
"""相关性强度描述"""
abs_value = abs(float(value))
if abs_value >= 0.8:
return "极强相关"
elif abs_value >= 0.6:
return "强相关"
elif abs_value >= 0.4:
return "中等相关"
else:
return "弱相关"
🎯 总结
项目成果
本项目成功构建了一个功能完整、技术先进的烟酒成瘾个体行为数据分析平台:
- 技术先进:采用现代Web开发技术和机器学习算法
- 功能完整:涵盖数据管理、分析、可视化、用户管理等全流程
- 易于使用:直观的用户界面和自动化部署流程
- 可扩展性:模块化设计,支持功能扩展和定制
技术亮点
- 🚀 Django框架:成熟稳定的Web开发框架
- 🧠 机器学习:集成多种经典算法,准确率>85%
- 📊 数据可视化:双重图表引擎,支持交互式展示
- 🔒 安全可靠:完善的权限控制和数据保护机制
应用价值
- 科研价值:为成瘾行为研究提供数据支撑
- 医疗价值:辅助医疗工作者进行风险评估
- 政策价值:为政策制定提供科学依据
📞 联系我们
码界筑梦坊 - 专注于数据科学与人工智能技术分享
- 📱 微信公众号:码界筑梦坊
- 🎯 知乎专栏:码界筑梦坊
- 📺 B站频道:码界筑梦坊
本文由码界筑梦坊原创,转载请注明出处。如有技术问题或合作意向,欢迎通过以上渠道联系我。