大数据分析机器学习(三)之岭回归-医疗心率数据分析

大数据分析机器学习(一)之线性模型-年龄和心率关系
大数据分析机器学习(二)之直方图和多元线性回归

岭回归

岭回归(英文名:ridge regression, Tikhonov regularization)是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法,对病态数据的拟合要强于最小二乘法。

数据

以下是我们模拟的医疗数据,breath 呼吸次数,bp血压,heartbeat 心跳,hrv-ssdn心率变异率,hrv-rmssd 心率变异率rmssd数据,healthy,健康程度,还是说明这边的数据都是虚拟出来的,健康程序也是假的,重要的是掌握方法,另外心率变异率等大数据算法会重新写一篇文章。
大数据分析机器学习(三)之岭回归-医疗心率数据分析_第1张图片
下面我们不但要计算模型,还要把模型保存下来,以便于下次能够读取模型,并且做成服务。

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 是数据量远远达不到大数据的输入准备,我们还是那句话,先掌握方法。
大数据分析机器学习(三)之岭回归-医疗心率数据分析_第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分别做了一份心率变异率的计算算法,待续了…

你可能感兴趣的:(深度学习,http协议,文件,岭回归,python,sklearn)