1、获取数据分析数据

先用flask请求mysql数据库,从数据库获取数据,并保存到csv文件

去读数据库数据

from flask import Flask,Response, json
from flask_sqlalchemy import  SQLAlchemy
from flask import jsonify
from MyEncoder import MyEncoder
from DateEncoder import DateEncoder
import csvapp = Flask(__name__)
db = SQLAlchemy(app)......中间代码省略if __name__ == '__main__':app.run()

保存csv文件

def writeCVS(user):# 1. 创建文件对象f = open('blood.csv', 'w', encoding='utf-8')# 2. 基于文件对象构建 csv写入对象csv_writer = csv.writer(f)# 3. 构建列表头csv_writer.writerow(["id号", "性别", "体重","身高","年龄","血糖值"])# 4. 写入csv文件内容for i in user:csv_writer.writerow(i)# 5. 关闭文件f.close()

2、数据清洗,去除掉为空或者none的数据,保存为模型可以读取的数据格式

{data:[[]......],target:[]},以字典的方式读取数据

def readcvs():birth_data = []with open('blood.csv',encoding='utf-8') as csvfile:csv_reader = csv.reader(csvfile)  # 使用csv.reader读取csvfile中的文件birth_header = next(csv_reader)  # 读取第一行每一列的标题for row in csv_reader:  # 将csv 文件中的数据保存到birth_data中if len(row) !=0:birth_data.append(row)#对样本数据进行改造data=[]target=[]blood={}for k in birth_data:list = []# luss = []for i,j in enumerate(k):if i == 1 or i == 2 or i == 3:list.append(j)elif i == 4:age = time_tools(j)list.append(age)elif i == 5:target.append(j)data.append(list)# target.append(luss)blood['data'] = np.array(data)blood['target'] = np.array(target)return blood

3、搭建sklearn线性模型

#血糖建模数据的预测
# 线性回归和梯度下降
from sklearn.linear_model import LinearRegression, SGDRegressor
# 数据集的切分
from sklearn.model_selection import train_test_split
# 数据的标准化
from sklearn.preprocessing import StandardScaler
# 均方差
from sklearn.metrics import mean_squared_error
import csv
import numpy as np
import datetime
#保存模型和加载模型
#from sklearn.externals import joblib(这个报错,改为下面的)
import joblib
import sysdef train():"""线性回归直接预测血糖值:return: None"""# 获取数据lb = readcvs()# print(lb)# 分割数据集到训练集和测试集,按照75%:25%的比例进行数据分配训练数据和测试数据x_train, x_test, y_train, y_test = train_test_split(lb['data'], lb['target'], test_size=0.25)# 正规方程求解方式预测结果lr = LinearRegression()# 对训练数据进行拟合lr.fit(x_train, y_train)# 查看w的参数print(lr.coef_)# 查看b的参数print(lr.intercept_)# 保存训练模型y_lr_predict = lr.predict(x_test)score_ = lr.score(x_test, y_test)print('模型得分', score_)# 保存血糖模型数据if score_ > 0.18:joblib.dump(lr, "./model/blood.pkl")return score_

A:数据集的划分

# 数据集的切分

from sklearn.model_selection import train_test_split

# 分割数据集到训练集和测试集,按照75%:25%的比例进行数据分配训练数据和测试数据
x_train, x_test, y_train, y_test = train_test_split(lb['data'], lb['target'], test_size=0.25)

B:训练模型的保存和读取

import joblib
#保存模型
joblib.dump(lr, "./model/blood.pkl")
# 导入血糖模型数据
lr = joblib.load("./model/blood.pkl")
#直接预测结果
y_lr_predict=lr.predict(value)

C:模型的一些参数解释

拟合线:

y = wx + b

#回归系数

w = model.coef_

#截距

b = model.intercept_

预测测试模型的得分:

fit.score(x_test, y_test)

预测:

fit.predict(x_test)

输出一个目标预测值

D:数据预处理(标准化==归一化)

# 数据的标准化
from sklearn.preprocessing import StandardScaler
# 特征值和目标值都必须进行标准化处理, 实例化两个标准化API
# 标准化也就是归一化处理
std_x = StandardScaler()
# 标准化训练数据
x_train = std_x.fit_transform(x_train)
# 标准化测试数据
x_test = std_x.transform(x_test)# 目标值
std_y = StandardScaler()
# 标准化目标训练数据(因为数据是[y,y,1,1,1,1,...]变换成[[],[],[],[],[]...])进行变换
#reshape(-1, 1),表示行和列,一列,行自动匹配(该维度根据其他维度来定)
y_train = std_y.fit_transform(y_train.reshape(-1, 1))
# 标准化目标测试数据(同上)
y_test = std_y.transform(y_test.reshape(-1, 1))

E:使用均方误差最小,来进行训练

print("正规方程的均方误差: ", mean_squared_error(std_y.inverse_transform(y_test), y_lr_predict))

公式:  其中表示真实值,t表示目标值

注意:训练模型需要做for循环,多次进行循环,得到最高分数的模型,然后保存模型。

4、测试模型

读取模型:

# 导入血糖模型数据

lr = joblib.load("./model/blood.pkl")

#直接预测结果

y_lr_predict=lr.predict(value)

5、模型测试好之后,就可以使用模型

sklearn搭建线性模型的总结相关推荐

  1. klearn 文本分类_使用gensim和sklearn搭建一个文本分类器

    总的来讲,一个完整的文本分类器主要由两个阶段,或者说两个部分组成:一是将文本向量化,将一个字符串转化成向量形式:二是传统的分类器,包括线性分类器,SVM, 神经网络分类器等等. 之前看的THUCTC的 ...

  2. 机器学习-02 基于sklearn 广义线性模型-普通最小二乘法

    机器学习 基于sklearn-02 从sklearn说起 线性回归 普通最小二乘法 案例分析 重要代码解释 线性回归 回归分析的主要工作,是根据统计获得的数据点来训练出一个函数表达式,根据这个函数表达 ...

  3. 2021-06-19 sklearn中的线性回归模型

    import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression ...

  4. 线性回归数据_数据科学笔记(三)——线性回归

    1. 机器学习眼中的线性回归 左图是原始建模数据,目的是用来寻找玩偶数量和成本的某种关系.右图将数据可视化得到散点图. 第一步 进行场景确定 第二步 定义损失函数 建模的目的:模型预测值与真实值之间的 ...

  5. 线性回归csv数据集_数据科学的基石:统计学、机器学习、计算机科学(三)——线性回归...

    数据科学家们常说,所有的模型都是错的,但是,其中一些是有用的.如果一个"有用"的模型能够过滤掉数据中哪些不重要的细枝末节,抓住其主要的内在关系,从而帮助我们更好地理解数据.很多情况 ...

  6. 自然语言处理-文本分析学习记录

    文章目录 一.TF_IDF 三. jieba使用记录 3.1 分词功能 3.2 jieba 基于TF-IDF.TextRank 算法的关键词抽取 四.文本分析的流程 one-hot,N-gram,wo ...

  7. internetreadfile读取数据长度为0_【完结】TensorFlow2.0 快速上手手册

    大家好,这是专栏<TensorFlow2.0>的第五篇文章,我们对专栏<TensorFlow2.0>进行一个总结. 我们知道全新的TensorFlow2.0 Alpha已经于2 ...

  8. 天池学习赛:工业蒸汽量预测4——模型验证

    上一篇<天池学习赛:工业蒸汽量预测3--模型训练>中已经是使用了几种机器学习的模型,接下来将介绍一些模型的评价方法. 目录 1 模型评估的方法 2 模型调参 3 赛题模型验证与调参 3.1 ...

  9. 天池学习赛:工业蒸汽量预测3——模型训练

    接上一篇<天池学习赛:工业蒸汽量预测2--特征工程> 数据划分: from sklearn.model_selection import train_test_split #切分数据new ...

最新文章

  1. 计算机网络双语名词,计算机网络中英文名词对照
  2. 嵌入式开发之zynq——zynq开发环境搭建
  3. 别太把GitHub的Star当回事
  4. arcgis js api proxy java 版本配置
  5. C#后台访问前台Html控件的方法
  6. 主机、服务器、客户机的关系
  7. 快速沃尔什变换:从入门到背板(含推导过程)
  8. 一键解决 go get golang.org/x 包失败
  9. 测试枕头软件,智能枕头:一款神器监测您的睡眠
  10. 选择图像根据坐标得到图像。头像裁剪器
  11. 本地提交spark_spark快速入门(三)-------spark部署及运行模式
  12. 拓端tecdat|R语言社区主题检测算法应用案例
  13. 微信客户端电话人工服务器,微信客服电话多少 微信客服电话人工服务怎么接通...
  14. 一个三非渣本的安卓秋招之路
  15. 四月,诗月,你是最美人间四月天。
  16. Vue打开外部链接问题
  17. 策略路由(Policy-Based-Route)
  18. switch函数不加break的效果
  19. qstock量化选股实战
  20. MP4文件格式简要解析

热门文章

  1. Python(set/list/dict/tuple)
  2. 策略模式 是一种好策略 -07
  3. 前置摄像头 镜像_iPhone 前置摄像头拍照左右相反?试试 iOS 13 的照片编辑功能...
  4. python第三方库文件传输助手_Python中的第三方模块(itchat)
  5. 适合甜蜜节日应用的霓虹海报模板!
  6. 电商设计师(美工)必备的素材网站|优图!
  7. 中国风国潮PNG免扣素材|瞬间提升韵味的书法字体
  8. UI初学者必备知识|最好的Sketch App 素材资源都在一流设计导航
  9. 杜洋单片机C语言编程组成,8051单片机C语言编程模板
  10. java 封装的概念_java封装的概念