东方耀AI技术分享
标题:
12、最小二乘公式法和模型部署:持久化与加载使用_笔记
[打印本页]
作者:
东方耀
时间:
2018-3-31 10:47
标题:
12、最小二乘公式法和模型部署:持久化与加载使用_笔记
12、最小二乘公式法和模型部署:持久化与加载使用_笔记
# -*- coding: utf-8 -*-
__author__ = 'dongfangyao'
__date__ = '2018/3/31 上午11:44'
__product__ = '这个例子说明:如果进行特征数据标准化则需要截距这个参数,否则会出现偏移'
__filename__ = 'least_squares2'
# 引入所需要的全部包
from sklearn.model_selection import train_test_split # 数据划分的类
# 数据标准化
from sklearn.preprocessing import StandardScaler
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas as pd
from pandas import DataFrame
import time
## 设置字符集,防止中文乱码
mpl.rcParams['font.sans-serif']=[u'simHei']
mpl.rcParams['axes.unicode_minus']=False
# 加载数据
# 日期、时间、有功功率、无功功率、电压、电流、厨房用电功率、洗衣服用电功率、热水器用电功率
path1='datas/household_power_consumption_1000.txt'
df = pd.read_csv(path1, sep=';', low_memory=False)#没有混合类型的时候可以通过low_memory=F调用更多内存,加快效率)
df.head(2)
## 功率和电流之间的关系
X2 = df.iloc[:,2:4]
print(X2.shape)
Y2 = df.iloc[:,5]
## 数据分割
X2_train,X2_test,Y2_train,Y2_test = train_test_split(X2, Y2, test_size=0.2, random_state=0)
# 模型对象创建
ss = StandardScaler()
# 训练模型并转换训练集
X2_train = ss.fit_transform(X2_train)
# 直接使用在模型构建数据上进行一个数据标准化操作 (测试集)
X2_test = ss.transform(X2_test)
print(type(X2_train))
# 将X和Y转换为矩阵的形式
X = np.mat(X2_train)
Y = np.mat(Y2_train).reshape(-1, 1)
print(type(X))
# 计算θ
theta = (X.T * X).I * X.T * Y
print(theta)
# 对测试集合进行测试
y_hat = np.mat(X2_test) * theta
# 画图看看
#### 电流关系
t=np.arange(len(X2_test))
plt.figure(facecolor='w')
plt.plot(t, Y2_test, 'r-', linewidth=2, label=u'真实值')
plt.plot(t, y_hat, 'g-', linewidth=2, label=u'预测值')
plt.legend(loc = 'lower right')
plt.title(u"线性回归预测功率与电流之间的关系", fontsize=20)
plt.grid(b=True)
plt.show()
复制代码
## 模型保存/持久化
# 在机器学习部署的时候,实际上其中一种方式就是将模型进行输出;另外一种方式就是直接将预测结果输出数据库
# 模型输出一般是将模型输出到磁盘文件
from sklearn.externals import joblib
# 保存模型要求给定的文件所在的文件夹必须存在
joblib.dump(ss, "result/data_ss.model") ## 将标准化模型保存
joblib.dump(lr, "result/data_lr.model") ## 将模型保存
复制代码
# 加载模型
ss3 = joblib.load("result/data_ss.model") ## 加载模型
lr3 = joblib.load("result/data_lr.model") ## 加载模型
# 使用加载的模型进行预测
data2 = [[12, 17]]
data2 = ss3.transform(data2)
print(data2)
print(lr3.predict(data2))
复制代码
作者:
fglbee
时间:
2019-12-22 20:53
this is good idea
作者:
万物皆虚
时间:
2020-5-22 10:48
非常好非常好,very good
作者:
万物皆虚
时间:
2020-5-22 10:48
非常好非常好,very good
作者:
EngyHui
时间:
2020-9-24 11:17
9999999999999999999999999999999
作者:
kenji1982
时间:
2020-10-19 17:50
6666666666666666666
作者:
破天一件
时间:
2021-7-13 09:50
666666666666666
作者:
破天一件
时间:
2021-7-14 09:37
6666666666666666666
作者:
破天一件
时间:
2021-7-14 09:38
6666666666666666666
作者:
破天一件
时间:
2021-7-14 09:38
6666666666666666666
作者:
小小小鸟
时间:
2021-8-12 12:51
11111111111111111
作者:
小小小鸟
时间:
2021-8-12 12:52
111111111111111111
作者:
小小小鸟
时间:
2021-8-12 12:53
222222222222222
作者:
小小小鸟
时间:
2021-8-12 12:53
33333333333333333333333
作者:
yj_jimmy
时间:
2021-8-13 20:08
不断充实自己,不断解放自己
作者:
gfx
时间:
2022-10-15 16:23
6666666666
作者:
gfx
时间:
2022-10-15 16:23
666666666666
作者:
gfx
时间:
2022-10-15 16:24
666666666666
欢迎光临 东方耀AI技术分享 (http://www.ai111.vip/)
Powered by Discuz! X3.4