线性回归预测–家庭用电功率与时间的关系&&功率与电流的关系
具体过程如下:

import time
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
% matplotlib inline
%config InlineBackend.figure_format = 'svg'
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
# 设置字符集属性,防止中文乱码
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False
# 加载数据
path = 'datas/household_power_consumption_1000.txt'
datas = pd.read_csv(path, sep = ';', low_memory = False)
datas.info()
datas.describe().T

#  异常数据过滤
new_datas = datas.replace('?',np.nan)
df = new_datas.dropna(axis = 0, how = 'any')
df.head(2)
df.info()
df.describe().T



#创建一个时间格式化字符串def date_format(dt):
def date_format(dt):t = time.strptime(' '.join(dt),'%d/%m/%Y %H:%M:%S')return(t.tm_year,t.tm_mon,t.tm_mday,t.tm_hour,t.tm_min,t.tm_sec)
# 获取X和Y变量,并将时间转换为数值型连续变量
X = df.iloc[:,0:2]
X = X.apply(lambda x:pd.Series(date_format(x)),axis =1)
Y = df['Global_active_power']
# 数据划分
X_train,X_test,Y_train,Y_test = train_test_split(X,Y,train_size=0.8,random_state = 0)
print(X_train.shape)
print(X_test.shape)
print(Y_train.shape)

# 数据标准化
ss = StandardScaler()
X_train = ss.fit_transform(X_train)
X_test = ss.transform(X_test)
pd.DataFrame(X_train).describe().T

# 模型训练
lr = LinearRegression()
lr = lr.fit(X_train,Y_train)
# 模型校验
y_predict = lr.predict(X_test)
print("训练R2:", lr.score(X_train, Y_train))
print("测试R2:", lr.score(X_test, Y_test))
mse = np.average(y_predict - Y_test)**2
rmse = np.sqrt(mse)
print("rmse:",rmse)

# 模型保存持久化
from sklearn.externals import joblib
joblib.dump(ss, 'df.ss_model')
joblib.dump(lr, 'df.lr_model')
ss = joblib.load('df.ss_model')
lr = joblib.load('df.lr_model')
# 使用加载的模型进行预测
data1 = [[2006, 12, 17, 12, 25, 0]]
data1 = ss.transform(data1)
lr.predict(data1)

# 画图
## 预测值和实际值画图比较
t = np.arange(len(X_test))
plt.figure(facecolor = 'w')
plt.plot(t, Y_test, 'r-',linewidth = 2, label = '真实值')
plt.plot(t, y_predict, 'g-', linewidth = 2, label = '预测值')
plt.legend(loc = 'upper left')
plt.title("线性回归预测时间与功率之间的关系",fontsize = 20)
plt.grid (b = True)
plt.show()

X2 = df.iloc[:,2:4]
Y2 = df.iloc[:,5]
# 数据分割
X2_train, X2_test,Y2_train,Y2_test = train_test_split(X2,Y2,train_size = 0.8,random_state = 0)
# 数据标准化
ss1 = StandardScaler()
X2_train = ss1.fit_transform(X2_train)
X2_test = ss1.transform(X2_test)
# 模型训练
lr1 = LinearRegression()
lr1.fit(X2_train,Y2_train)
y2_predict = lr1.predict(X2_test)
# 模型评估
print("电流预测准确率:",lr1.score(X2_test, Y2_test))
print("电流参数:",lr1.coef_)
# 画图
t1 = np.arange(len(X2_test))
plt.figure(facecolor ='w')
plt.plot(t1,Y2_test,'r-',linewidth = 2, label = '真实值')
plt.plot(t1,y2_predict,'g-',linewidth = 2,label = '预测值')
plt.legend(loc = 'lower right')
plt.title("线性回归预测功率与电流之间的关系",fontsize = 20)
plt.grid(b = True)
plt.show()


线性回归预测--家庭用电功率与时间的关系功率与电流的关系相关推荐

  1. 机器学习案例——‘线性回归预测家庭用电与时间关系‘ 中格式化时间字符串问题

    在机器学习的线性回归案例**"家庭用电案例"**中遇到的问题,自己记录下来. // 需求:把数据集中,字符串类型的时间信息------>数字类型,保存成样本集X # 创建一个 ...

  2. 01_家庭用电预测:线性回归算法(时间与功率功率与电流之间的关系)

    # 引入所需要的全部包 from sklearn.model_selection import train_test_split from sklearn.linear_model import Li ...

  3. 回归算法实例一:家庭用电预测——时间与功率、功率与电流、时间与电压之间的关系

    安装numpy:pip install --index https://pypi.mirrors.ustc.edu.cn/simple/ numpy 安装scipy:pip install --ind ...

  4. 线性回归多项式拟合——家庭用电预测

    LinearRegression模型参数 fit_intercept: 训练的模型是否包含截距,默认为为True,表示包含 LinearRegression模型属性 coef_ :模型训练好后的参数列 ...

  5. 大数据线性回归预测学生成绩

    通过训练集训练和测试集测试来生成多个线性模型,从而预测学生成绩,本文所有代码请点击Github 1. 实验数据背景 1.1 数据来源 本项目的数据来源于kaggle.com,数据集的名称为Studen ...

  6. 如何建立Multi-Step(多步预测)的LSTM时间序列模型(以对家庭用电预测为例)

    译自How to Develop LSTM Models for Multi-Step Time Series Forecasting of Household Power Consumption~ ...

  7. LSTM模型对家庭用电进行多步时间序列预测

    随着智能电表的兴起和太阳能电池板等发电技术的广泛应用,有大量可用的用电数据.这些数据代表了一系列与电力相关的多元时间序列,进而可以用来建模甚至预测未来的用电量.与其他机器学习算法不同,长短时记忆递归神 ...

  8. 关于家庭用电数据分析

    数据参数解释 本文主要分析的是有功功率,所以可以暂时忽略无功功率 数据库的导入 import matplotlib.pyplot as plt import numpy as np import pa ...

  9. python线性回归预测pm2.5_李宏毅 线性回归预测PM2.5

    作业说明 给定训练集train.csv,要求根据前9个小时的空气监测情况预测第10个小时的PM2.5含量. 训练集介绍: (1):CSV文件,包含台湾丰原地区240天的气象观测资料(取每个月前20天的 ...

最新文章

  1. C#开发Unity游戏教程之游戏对象的行为逻辑方法
  2. inline函数使用容易导致出错的问题
  3. Adobe Reader栈溢出漏洞(CVE-2010-2883)分析
  4. 06--MySQL自学教程:DML(Data Manipulation Language:数据库操作语言),只操作表
  5. 我的SQL SERVER数据库会装满吗?
  6. Python快速入门(1)
  7. fantouch os Android 7,Funtouch OS 3.1 with Android 7.1升级计划
  8. 《奠基计算机网络》清华大学出版社 之 IPv6和IPv4共存技术
  9. Qt拖放操作和打印操作
  10. 中国神话中的诸神辈分如何排
  11. Win7系统没有音量图标,系统图标为灰色打不开的解决方法
  12. mysql-8.0.19-winx64安装过程
  13. 软件无线电,虚拟无线电
  14. 开启安全测试评估专业赛道:永信至诚“数字风洞”产品体系战略发布
  15. vue中axios利用blob实现文件浏览器下载
  16. 解决win10 VirtualBox不能打开一个新任务
  17. Oracle按时间分组查询
  18. 原生M1支After Effects 2022 Mac v22.3.0中文,解决闪退启动没画面等问题
  19. 从张帅进入澳网女子八强来谈我的苦恼
  20. 脚本红客联盟:有史以来批处理最完整人性化教程

热门文章

  1. S32K之watchdog看门狗
  2. 1_STM32之常用知识点
  3. Android百度地图调用和GPS定位
  4. 声网赵斌:RTE 体验提升,新一代 Killer App 将成为现实丨RTE 2022
  5. 通过代码创建一个文件a.txt 然后写一个方法,控制台循环输入内容,然后通过gbk的编码格式保存到 a.txt中(要求可以追加),直到输入exit结束 再写一个方法,要求用字符缓冲流读取a.tx
  6. python人脸识别理论_简述几种人脸识别的主要方法
  7. JS案例:接口加解密与防重放
  8. python--读取TRMM-3B43月平均降水绘制气候态空间分布图(陆地区域做掩膜)
  9. 为什么传统的FPGA无法将智能传送到边缘
  10. 燕山大学计算机专业学科评估,第四轮学科评估,河北省122个学科上榜,燕山大学表现最佳...