分类: 人工智能训练师

  • 1.1.2 智能农业系统中的业务数据采集和处理流程设计

    某农业公司计划引入智能农业系统,通过安装在农田中的各种传感器(如温度传感器、湿度传感器、土壤传感器等)实时监控农田环境,收集数据并进行分析,以优化作物管理和提高产量。

    传感器数据集(sensor_data.csv),包含以下字段:

    SensorID: 传感器ID

    Timestamp: 时间戳

    SensorType: 传感器类型(Temperature温度, Humidity湿度, SoilMoisture土壤水分, SoilPH土壤酸碱度, Light光传感器)

    Value: 传感器读数

    Location: 传感器安装位置:

    1. 分别统计每种传感器的数据数量和平均值。将上述统计结果截图以jpg的格式保存,命名为“1.1.2-1”。
    2. 统计每个位置的温度和湿度传感器数据的平均值。将上述统计结果截图以jpg的格式保存,命名为“1.1.2-2”。
    3. 对数据进行清洗,处理异常值。具体要求如下:
      • 将明显异常的温度(< -10 或 > 50)和湿度(< 0 或 > 100)数据进行标记并统计。
      • 对缺失值使用前面数据的值(如果前面值没有采用后面数据的值)进行填补。
      • 将清洗后的数据保存为新文件cleaned_sensor_data.csv。
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    # 读取数据集 2分
    data = pd.read_csv('sensor_data.csv')
    
    # 1. 传感器数据统计
    # 对传感器类型进行分组,并计算每个组的数据数量和平均值 3分
    sensor_stats = data.groupby('SensorType')['Value'].agg(['count', 'mean'])
    # 输出结果
    print("传感器数据数量和平均值:")
    print(sensor_stats)
    
    # 2. 按位置统计温度和湿度数据
    # 筛选出温度和湿度数据,然后按位置和传感器类型分组,计算每个组的平均值 2分
    location_stats = data[data['SensorType'].isin(['Temperature','Humidity'])].groupby(['Location', 'SensorType'])['Value'].mean().unstack()
    # 输出结果
    print("每个位置的温度和湿度数据平均值:")
    print(location_stats)
    
    # 3. 数据清洗和异常值处理
    # 标记异常值 3分
    data['is_abnormal'] = np.where(
        ((data['SensorType'] == 'Temperature') & ((data['Value'] < -10) | (data['Value'] > 50))) |
        ((data['SensorType'] == 'Humidity') & ((data['Value'] < 0) | (data['Value'] > 100))),
        True, False
    )
    # 输出异常值数量 2分
    print("异常值数量:", data['is_abnormal'].sum())
    # 填补缺失值
    # 使用前向填充和后向填充的方法填补缺失值 4分
    data['Value'].ffill(limit=1, inplace=True)
    data['Value'].bfill(limit=1, inplace=True)
    # 保存清洗后的数据
    # 删除用于标记异常值的列,并将清洗后的数据保存到新的CSV文件中 4分
    cleaned_data = data.drop(columns=['is_abnormal'])
    cleaned_data.to_csv('cleaned_sensor_data.csv', index=False)
    print("数据清洗完成,已保存为 'cleaned_sensor_data.csv'")

  • 1.1.1 智能医疗系统中的业务数据处理流程设计

    某医疗机构计划引入智能医疗系统,以提升诊断效率和准确性。通过分析患者的历史数据,使用机器学习算法预测患者的健康风险,从而辅助医生进行诊断和治疗。

    患者数据集(patient_data.csv),包含以下字段:

    1. 分别统计住院天数超过7天的患者数量以及其占比。这类患者被定义为高风险患者,反之为低风险患者。将上述统计结果截图以jpg的格式保存,命名为“1.1.1-1”。
    2. 统计不同BMI区间中高风险患者的比例和统计不同BMI区间中的患者数。BMI区间分类设置为:偏瘦(低于18.5),正常(18.5~23.9),超重(24.0~27.9),肥胖(28.0及以上),将上述统计结果截图以jpg的格式保存,命名为“1.1.1-2”。
    3. 统计不同年龄区间中高风险患者的比例和统计不同年龄区间中的患者数。年龄区间分类设置为:年龄区间分类设置为:≤25岁,26-35岁,36-45岁,46-55岁,56-65岁,>65岁,将上述统计结果截图以jpg的格式保存,命名为“1.1.1-3”。
    import pandas as pd
    import numpy as np
    
    # 读取数据集 1分
    data = pd.read_csv('patient_data.csv')
    
    # 1. 统计住院天数超过7天的患者数量及其占比
    # 创建新列'RiskLevel',根据住院天数判断风险等级 3分
    data['Risklevel'] = np.where(data['DaysInHospital']>7, '高风险患者', '低风险患者')
    # 统计不同风险等级的患者数量 2分
    risk_counts = data['Risklevel'].value_counts()
    # 计算高风险患者占比 1分
    high_risk_ratio = risk_counts['高风险患者'] / len(data)
    # 计算低风险患者占比 1分
    low_risk_ratio = risk_counts['低风险患者'] / len(data)
    
    # 输出结果
    print("高风险患者数量:", risk_counts['高风险患者'])
    print("低风险患者数量:", risk_counts['低风险患者'])
    print("高风险患者占比:", high_risk_ratio)
    print("低风险患者占比:", low_risk_ratio)
    
    # 2. 统计不同BMI区间中高风险患者的比例和统计不同BMI区间中的患者数
    # 定义BMI区间和标签
    bmi_bins = [0, 18.5, 24, 28, np.inf]
    bmi_labels = ['偏瘦', '正常', '超重', '肥胖']
    # 根据BMI值划分指定区间 4分
    data['BMIRange'] = pd.cut(data['BMI'], bmi_bins, labels=bmi_labels, right=False)  # 使用左闭右开区间
    # 计算每个BMI区间中高风险患者的比例 2分
    bmi_risk_rate = data.groupby('BMIRange')['Risklevel'].apply(lambda x: (x == '高风险患者').mean())
    # 统计每个BMI区间的患者数量 1分
    bmi_patient_count = data['BMIRange'].value_counts()
    
    # 输出结果
    print("BMI区间中高风险患者的比例和患者数:")
    print(bmi_risk_rate) 
    print(bmi_patient_count)
    
    # 3. 统计不同年龄区间中高风险患者的比例和统计不同年龄区间中的患者数
    # 定义年龄区间和标签
    age_bins = [0, 26, 36, 46, 56, 66, np.inf]
    age_labels = ['≤25岁', '26-35岁', '36-45岁', '46-55岁', '56-65岁', '>65岁']
    # 根据年龄值划分指定区间 4分
    data['AgeRange'] = pd.cut(data['Age'], age_bins, labels=age_labels, right=False)  # 使用左闭右开区间
    # 计算每个年龄区间中高风险患者的比例 2分
    age_risk_rate = data.groupby('AgeRange')['Risklevel'].apply(lambda x: (x == '高风险患者').mean())
    # 统计每个年龄区间的患者数量 1分
    age_patient_count = data['AgeRange'].value_counts()
    
    # 输出结果
    print("年龄区间中高风险患者的比例和患者数:")
    print(age_risk_rate) 
    print(age_patient_count)