Adaboost算法训练模拟体征数据

Adaboost算法训练模拟体征数据

数据规则定义

首先,先看看规则定义的出自文献

心率 ----------------------

                                 

血压 ----------------------

                                 

温度 ----------------------

                                  

根据上面3个  我们可以确定的是,情绪(精神)与 心率 ,血压, 温度 ,有相当大的一部分关系,然后基于百度,做了一下参考。

总结了一下具体的规则

  1. (关于心率方面)恐惧心率最高,其次是高兴愤怒,再次是悲伤,且这几种都比平稳状态要高。
  2. (关于血压方面)正性情绪 血压偏向于稳定状态,反之则提高明显
  3. (关于体表温度)高昂的情绪,提高相对来说提高一点

生成模拟数据

生成数据的规则是这样的

我们将分类定义为3个分类,消极向,正常向,积极向

这是代码

import random
import pandas as pd
# 导入对应的库
# 随机生成900条 体征数据


hrs = []
skts = []
sps = []
states = []

for i in range(900):
    state = random.randint(
0, 2)
   
# 三个状态  差 中 好
   
   
if state == 0:
       
# 表示 状态比较 负面
        # 心率 提高
        # 血压 提高
        # 体温 下降
       
hr = random.randint(85, 100)
        sp = random.randint(
125, 145)
        skt = random.randint(
3600, 3700)

   
elif state == 1:
       
# 表示 状态一般
        # 心率 相对正常正常
        # 血压 不变
        # 体温 不变

       
hr = random.randint(70,80)
        sp = random.randint(
115,130)
        skt = random.randint(
3650,3750)

   
else:
       
# 表示 状态比较 正面
        # 心率 也有提高 但是没有那么明显
        # 血压 趋势稳定
        # 体温 提高
       
hr = random.randint(80, 90)
        sp = random.randint(
115,130)
        skt = random.randint(
3700, 3800)

    hrs.append(hr)
    sps.append(sp)
    skts.append(skt/
100)
    states.append(state)

# 写入dataframe
dataframe = pd.DataFrame({'hr':hrs,'skt':skts,'sp':sps,'stu':states})
# 生成 csv文件
dataframe.to_csv("../signs.csv",index=False,sep=',')

print("isOK")

为了方便观察

单独画出来了

import matplotlib.pyplot as plt

import numpy as np

from mpl_toolkits.mplot3d import Axes3D





# 3D绘制 模拟体征数据

data = np.genfromtxt("../signs.csv",delimiter=",")

ax = plt.subplot(111, projection='3d')

ax.scatter(data[1:,0],data[1:,1], data[1:,2], c=data[1:,-1])

ax.set_xlabel("hr")

ax.set_ylabel("sp")

ax.set_zlabel("skt")



plt.show()

效果

训练模型

这一步相对简单,使用sklearn库,大大的简化了 我们训练的代码

import numpy as np

from sklearn.ensemble import  AdaBoostClassifier

from sklearn.tree import DecisionTreeClassifier
# 三维数据模型分类

# # 读取数据  该测试数据 可以通过Random 类生产

data = np.genfromtxt("..\signs.csv",delimiter=",")

x_data,y_data,z_data = data[1:,0],data[1:,1],data[1:,2]

mode1 = AdaBoostClassifier(DecisionTreeClassifier(max_depth=5),n_estimators=10)

# 使用训练集 训练模型

mode1.fit(data[1:,:3],data[1:,-1])

这一步 好简单。

测试模型

重新用了生成csv的方法  ,在相同的规则下面。 随机成功了200数据。代码就不贴出来了

print(mode1.score(datas,states))

评估正确率  99%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值