大数据分析机器学习之岭回归-医疗心率数据分析
Posted qianbo_insist
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据分析机器学习之岭回归-医疗心率数据分析相关的知识,希望对你有一定的参考价值。
大数据分析机器学习(一)之线性模型-年龄和心率关系
大数据分析机器学习(二)之直方图和多元线性回归
岭回归
岭回归(英文名:ridge regression, Tikhonov regularization)是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法,对病态数据的拟合要强于最小二乘法。
数据
以下是我们模拟的医疗数据,breath 呼吸次数,bp血压,heartbeat 心跳,hrv-ssdn心率变异率,hrv-rmssd 心率变异率rmssd数据,healthy,健康程度,还是说明这边的数据都是虚拟出来的,健康程序也是假的,重要的是掌握方法,另外心率变异率等大数据算法会重新写一篇文章。
下面我们不但要计算模型,还要把模型保存下来,以便于下次能够读取模型,并且做成服务。
train_test_split
把数据集合分成train 和 test数据
X_train, X_test, y_train, y_test = train_test_split(df.drop('healthy', axis=1), df['healthy'], test_size=0.25, random_state=1)
因为有多个因素决定最后一个healthy因素,所以把healthy最终的输出清除,清楚,治理,去重等等数据方法都可以做,这里使用drop。dr.drop(‘healthy’,axis=1) 去除一列healthy,为样本集合,那么样本标签就是df[‘healthy’] 了, 0.25 分数据也就是1/4 的数据作为测试数据。
用linear_model.RidgeCV 线性模型的岭回归来做分类解析。使用pickle 序列化输出模型。
以下是代码
import pandas as pd
import pickle
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn import linear_model
#loading my data and splitting it into training and testing pandas
#df = pd.read_csv('winequality-red.csv', delimiter=";")
df = pd.read_csv('test1.csv')
df.info();
#test = df.drop('healthy', axis=1)
#print(test)
X_train, X_test, y_train, y_test = train_test_split(df.drop('healthy', axis=1), df['healthy'], test_size=0.25, random_state=1)
print(X_test)
print("y_train",y_train)
print("y_test:",y_test)
#creating a model and training it
regr = linear_model.RidgeCV(alphas= np.arange(0.1,10.0,.5))
regr.fit(X_train, y_train)
#exporting my model
pickle.dump(regr,open("healthy.pkl","wb"))
#checking for error
ans = regr.predict(X_test)
print("ans:",ans)
print(mean_squared_error(y_test, ans))
训练结果
结果基本是不正确的,1是因为我们的数据造假,2 是数据量远远达不到大数据的输入准备,我们还是那句话,先掌握方法。
服务
存储模型后自然要做一个服务了,使用flask来启动一个服务
import pickle
import flask
from flask import request
app = flask.Flask(__name__)
#加载我们的模型
model = pickle.load(open("healthy.pkl","rb"))
#post 服务
@app.route('/', methods=['POST'])
def index():
#注意要把正确的数据输入进来
feature_array = request.get_json()['feature_array']
#创建json
#预测返回
response =
response['predictions'] = model.predict([feature_array]).tolist()
#returning the response object as json
return flask.jsonify(response)
其他
可以使用年龄、呼吸、心率、心率变异率等因素加入其中做一份数据报表出来,这个真的有价值!
我们使用python和go分别做了一份心率变异率的计算算法,待续了…
以上是关于大数据分析机器学习之岭回归-医疗心率数据分析的主要内容,如果未能解决你的问题,请参考以下文章