线性回归预测--家庭用电功率与时间的关系功率与电流的关系
线性回归预测–家庭用电功率与时间的关系&&功率与电流的关系
具体过程如下:
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()
线性回归预测--家庭用电功率与时间的关系功率与电流的关系相关推荐
- 机器学习案例——‘线性回归预测家庭用电与时间关系‘ 中格式化时间字符串问题
在机器学习的线性回归案例**"家庭用电案例"**中遇到的问题,自己记录下来. // 需求:把数据集中,字符串类型的时间信息------>数字类型,保存成样本集X # 创建一个 ...
- 01_家庭用电预测:线性回归算法(时间与功率功率与电流之间的关系)
# 引入所需要的全部包 from sklearn.model_selection import train_test_split from sklearn.linear_model import Li ...
- 回归算法实例一:家庭用电预测——时间与功率、功率与电流、时间与电压之间的关系
安装numpy:pip install --index https://pypi.mirrors.ustc.edu.cn/simple/ numpy 安装scipy:pip install --ind ...
- 线性回归多项式拟合——家庭用电预测
LinearRegression模型参数 fit_intercept: 训练的模型是否包含截距,默认为为True,表示包含 LinearRegression模型属性 coef_ :模型训练好后的参数列 ...
- 大数据线性回归预测学生成绩
通过训练集训练和测试集测试来生成多个线性模型,从而预测学生成绩,本文所有代码请点击Github 1. 实验数据背景 1.1 数据来源 本项目的数据来源于kaggle.com,数据集的名称为Studen ...
- 如何建立Multi-Step(多步预测)的LSTM时间序列模型(以对家庭用电预测为例)
译自How to Develop LSTM Models for Multi-Step Time Series Forecasting of Household Power Consumption~ ...
- LSTM模型对家庭用电进行多步时间序列预测
随着智能电表的兴起和太阳能电池板等发电技术的广泛应用,有大量可用的用电数据.这些数据代表了一系列与电力相关的多元时间序列,进而可以用来建模甚至预测未来的用电量.与其他机器学习算法不同,长短时记忆递归神 ...
- 关于家庭用电数据分析
数据参数解释 本文主要分析的是有功功率,所以可以暂时忽略无功功率 数据库的导入 import matplotlib.pyplot as plt import numpy as np import pa ...
- python线性回归预测pm2.5_李宏毅 线性回归预测PM2.5
作业说明 给定训练集train.csv,要求根据前9个小时的空气监测情况预测第10个小时的PM2.5含量. 训练集介绍: (1):CSV文件,包含台湾丰原地区240天的气象观测资料(取每个月前20天的 ...
最新文章
- C#开发Unity游戏教程之游戏对象的行为逻辑方法
- inline函数使用容易导致出错的问题
- Adobe Reader栈溢出漏洞(CVE-2010-2883)分析
- 06--MySQL自学教程:DML(Data Manipulation Language:数据库操作语言),只操作表
- 我的SQL SERVER数据库会装满吗?
- Python快速入门(1)
- fantouch os Android 7,Funtouch OS 3.1 with Android 7.1升级计划
- 《奠基计算机网络》清华大学出版社 之 IPv6和IPv4共存技术
- Qt拖放操作和打印操作
- 中国神话中的诸神辈分如何排
- Win7系统没有音量图标,系统图标为灰色打不开的解决方法
- mysql-8.0.19-winx64安装过程
- 软件无线电,虚拟无线电
- 开启安全测试评估专业赛道:永信至诚“数字风洞”产品体系战略发布
- vue中axios利用blob实现文件浏览器下载
- 解决win10 VirtualBox不能打开一个新任务
- Oracle按时间分组查询
- 原生M1支After Effects 2022 Mac v22.3.0中文,解决闪退启动没画面等问题
- 从张帅进入澳网女子八强来谈我的苦恼
- 脚本红客联盟:有史以来批处理最完整人性化教程
热门文章
- S32K之watchdog看门狗
- 1_STM32之常用知识点
- Android百度地图调用和GPS定位
- 声网赵斌:RTE 体验提升,新一代 Killer App 将成为现实丨RTE 2022
- 通过代码创建一个文件a.txt 然后写一个方法,控制台循环输入内容,然后通过gbk的编码格式保存到 a.txt中(要求可以追加),直到输入exit结束 再写一个方法,要求用字符缓冲流读取a.tx
- python人脸识别理论_简述几种人脸识别的主要方法
- JS案例:接口加解密与防重放
- python--读取TRMM-3B43月平均降水绘制气候态空间分布图(陆地区域做掩膜)
- 为什么传统的FPGA无法将智能传送到边缘
- 燕山大学计算机专业学科评估,第四轮学科评估,河北省122个学科上榜,燕山大学表现最佳...