💖💖作者:计算机毕业设计江挽 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目
基于大数据的乳腺癌诊断数据可视化分析系统介绍
《基于大数据的乳腺癌诊断数据可视化分析系统》是一套面向医疗数据分析领域的综合性平台,采用Hadoop+Spark分布式计算架构处理海量乳腺癌诊断记录。系统通过HDFS存储患者检测数据,利用Spark SQL进行多维度统计分析,结合Pandas和NumPy完成数据清洗与特征工程。后端基于Spring Boot构建RESTful接口,前端运用Vue+ElementUI搭建交互界面,通过Echarts实现诊断类型分布、综合特征评分等多种可视化图表。系统提供用户权限管理、个人信息维护、乳腺癌诊断数据录入与查询、诊断类型统计分析、综合特征评分分析等核心功能模块,支持医护人员快速检索历史病例,辅助临床决策判断。整体架构兼顾大数据处理能力与操作便捷性,将分布式计算技术应用于医疗数据分析场景,为乳腺癌早期筛查与诊断提供数据支撑工具。
基于大数据的乳腺癌诊断数据可视化分析系统演示视频
基于大数据的乳腺癌诊断数据可视化分析系统演示图片
基于大数据的乳腺癌诊断数据可视化分析系统代码展示
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import com.example.mapper.DiagnosisMapper;
import com.example.entity.DiagnosisData;
import java.util.*;
@RestController
@RequestMapping("/api/diagnosis")
public class DiagnosisController {
@Autowired
private DiagnosisMapper diagnosisMapper;
private SparkSession spark = SparkSession.builder().appName("BreastCancerAnalysis").master("local[*]").config("spark.sql.warehouse.dir", "/user/hive/warehouse").getOrCreate();
@PostMapping("/addData")
public Map<String, Object> addDiagnosisData(@RequestBody DiagnosisData data) {
Map<String, Object> result = new HashMap<>();
try {
data.setCreateTime(new Date());
data.setFeatureScore(calculateFeatureScore(data));
diagnosisMapper.insert(data);
List<DiagnosisData> allData = diagnosisMapper.selectAll();
Dataset<Row> df = spark.createDataFrame(allData, DiagnosisData.class);
df.write().mode("overwrite").parquet("hdfs://localhost:9000/breast_cancer/diagnosis_data");
result.put("code", 200);
result.put("message", "诊断数据添加成功并已同步至HDFS");
result.put("dataId", data.getId());
} catch (Exception e) {
result.put("code", 500);
result.put("message", "数据添加失败: " + e.getMessage());
}
return result;
}
@GetMapping("/typeStatistics")
public Map<String, Object> getDiagnosisTypeStatistics() {
Map<String, Object> result = new HashMap<>();
try {
Dataset<Row> df = spark.read().parquet("hdfs://localhost:9000/breast_cancer/diagnosis_data");
df.createOrReplaceTempView("diagnosis_table");
Dataset<Row> typeStats = spark.sql("SELECT diagnosisType, COUNT(*) as count, AVG(featureScore) as avgScore FROM diagnosis_table GROUP BY diagnosisType ORDER BY count DESC");
List<Row> statsList = typeStats.collectAsList();
List<Map<String, Object>> statisticsData = new ArrayList<>();
for (Row row : statsList) {
Map<String, Object> item = new HashMap<>();
item.put("type", row.getString(0));
item.put("count", row.getLong(1));
item.put("avgScore", Math.round(row.getDouble(2) * 100.0) / 100.0);
double percentage = (row.getLong(1) * 100.0) / df.count();
item.put("percentage", Math.round(percentage * 100.0) / 100.0);
statisticsData.add(item);
}
result.put("code", 200);
result.put("data", statisticsData);
result.put("totalRecords", df.count());
} catch (Exception e) {
result.put("code", 500);
result.put("message", "统计分析失败: " + e.getMessage());
}
return result;
}
@GetMapping("/featureScoreAnalysis")
public Map<String, Object> getFeatureScoreAnalysis(@RequestParam(required = false) String diagnosisType) {
Map<String, Object> result = new HashMap<>();
try {
Dataset<Row> df = spark.read().parquet("hdfs://localhost:9000/breast_cancer/diagnosis_data");
df.createOrReplaceTempView("diagnosis_table");
String sqlQuery = diagnosisType != null && !diagnosisType.isEmpty() ? "SELECT featureScore, diagnosisType, patientAge, createTime FROM diagnosis_table WHERE diagnosisType = '" + diagnosisType + "' ORDER BY featureScore DESC" : "SELECT featureScore, diagnosisType, patientAge, createTime FROM diagnosis_table ORDER BY featureScore DESC";
Dataset<Row> scoreData = spark.sql(sqlQuery);
Dataset<Row> scoreRangeStats = spark.sql("SELECT CASE WHEN featureScore >= 80 THEN '高风险(80-100)' WHEN featureScore >= 60 THEN '中风险(60-79)' WHEN featureScore >= 40 THEN '低风险(40-59)' ELSE '极低风险(0-39)' END as riskLevel, COUNT(*) as count FROM diagnosis_table " + (diagnosisType != null && !diagnosisType.isEmpty() ? "WHERE diagnosisType = '" + diagnosisType + "' " : "") + "GROUP BY riskLevel");
List<Row> scoreList = scoreData.collectAsList();
List<Row> rangeList = scoreRangeStats.collectAsList();
List<Map<String, Object>> detailData = new ArrayList<>();
for (Row row : scoreList) {
Map<String, Object> item = new HashMap<>();
item.put("score", Math.round(row.getDouble(0) * 100.0) / 100.0);
item.put("type", row.getString(1));
item.put("age", row.getInt(2));
item.put("time", row.getTimestamp(3).toString());
detailData.add(item);
}
List<Map<String, Object>> rangeData = new ArrayList<>();
for (Row row : rangeList) {
Map<String, Object> item = new HashMap<>();
item.put("riskLevel", row.getString(0));
item.put("count", row.getLong(1));
rangeData.add(item);
}
result.put("code", 200);
result.put("detailData", detailData);
result.put("rangeStatistics", rangeData);
result.put("totalAnalyzed", scoreList.size());
} catch (Exception e) {
result.put("code", 500);
result.put("message", "特征评分分析失败: " + e.getMessage());
}
return result;
}
private double calculateFeatureScore(DiagnosisData data) {
double score = 0.0;
score += data.getTumorSize() != null ? data.getTumorSize() * 1.5 : 0;
score += data.getLymphNodes() != null ? data.getLymphNodes() * 3.0 : 0;
score += data.getCellDensity() != null ? data.getCellDensity() * 0.8 : 0;
score += data.getAgeRiskFactor() != null ? data.getAgeRiskFactor() * 2.0 : 0;
return Math.min(score, 100.0);
}
}
基于大数据的乳腺癌诊断数据可视化分析系统文档展示
💖💖作者:计算机毕业设计江挽 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目