线性回归入门案例 家庭用电量预测

news/2024/11/19 7:40:04/

本博客是线性回归的入门案例,仅用到一阶线性回归

代码中用到的数据集下载地址

[link] https://pan.baidu.com/s/12wSIOVMQ3zS3jK0FcwkTSw[

python3版本代码段

导包

#导包
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import timeimport sklearn
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression   
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_absolute_error,r2_score

加载数据,过滤残缺数据

# 加载数据
path = '../data_files/household_power_consumption_1000.txt' ## 1000行数据
df = pd.read_csv(path, sep=';', low_memory=False)   #当文件中的数据类型为单一类型时,low_memory能提高效率# 异常数据处理(异常数据过滤)
new_df = df.replace('?', np.nan)    #用nan替换 有问题的数据,方便进行dropna操作
datas = new_df.dropna(axis=0,how = 'any') # any只要该行有数据为nan,就进行删除操作;all是全为nan时才删除行

从数据中提取特征所需的数据

## 创建一个时间字符串格式化字符串
def date_format(dt):#dt在这里是一行,是Series类型,这一行有两个数据#接下来要把这两个数据拼成字符串,再提取其中的‘年月日时分秒’import timet = time.strptime(' '.join(dt), '%d/%m/%Y %H:%M:%S')return pd.Series([t.tm_year, t.tm_mon, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec])## 时间和电压之间的关系(Linear)
# 获取x和y变量, 并将时间转换为数值型连续变量
X = datas.iloc[:,0:2]
X = X.apply(date_format, axis=1)   #1代表按行,默认的是0代表列
Y = datas['Voltage']

划分数据集,标准化,模型训练,并使用模型预测

# 对数据集进行测试集和训练集划分
X_train,X_test,Y_train,Y_test = train_test_split(X, Y, test_size=0.2, random_state=0)# 数据标准化
ss = StandardScaler()
X_train = ss.fit_transform(X_train) # 训练并转换
X_test = ss.transform(X_test) #用X_test进行的标准化模型训练,用训练好的模型,再对X_test进行转换# 模型训练
lr = LinearRegression()
lr.fit(X_train, Y_train) ## 训练模型# 模型校验
y_pred = lr.predict(X_test) ## 预测结果

打印参数

#打印参数
print(lr.coef_) #打印参数项
print(lr.intercept_) #打印截距项

模型评估

# 模型效果
#第一种方式,用lr.score
print("测试集准确率:",lr.score(X_test, Y_test))  #测试集准确率
#第二种方式,用metrics里的r2_score
print('测试集准确率:',r2_score(Y_test,y_pred))#测试集均方误差
print('测试集均方误差:',mean_absolute_error(Y_test,y_pred))

模型可视化

## 预测值和实际值画图比较
t=np.arange(len(X_test))    #用测试集数据量200作为横轴
plt.figure(facecolor='w')
plt.plot(t, Y_test, 'r-', linewidth=2, label=u'真实值')
plt.plot(t, y_pred, 'b-', linewidth=2, label=u'预测值')
plt.legend(loc = 'lower right')
plt.title(u"线性回归预测时间和功率之间的关系", fontsize=20)
plt.grid(b=True)#网格
plt.show()

http://www.ppmy.cn/news/651076.html

相关文章

时间序列预测11:用电量预测 01 数据分析与建模

【时间序列预测/分类】 全系列60篇由浅入深的博文汇总:传送门 写在前面 通过之前有关LSTM的8遍基础教程和10篇处理时间序列预测任务的教程介绍,使用简单的序列数据示例,已经把LSTM的原理,数据处理流程,模型架构&#…

python用支持向量机回归(SVR)模型分析用电量预测电力消费

最近我们被客户要求撰写关于支持向量机回归的研究报告,包括一些图形和统计输出。 本文描述了训练支持向量回归模型的过程,该模型用于预测基于几个天气变量、一天中的某个小时、以及这一天是周末/假日/在家工作日还是普通工作日的用电量。 【视频】支持向…

算力网络:十大技术发展方向

摘自:https://mp.weixin.qq.com/s/yykVHtdUVGL7G9E1jtMIxg 在社会算力并网场景下,将联合超算、智算等社会算力开展算力并网验证;在云边端协同场景下,打造算网融合创新技术方案,探索算网大脑雏形,深入车联网…

全国281个地级市工业用电量数据(2003-2016)

数据集名称:全国281个地级市工业用电量数据 时间范围:2003-2016年 数据来源:EPS数据库 相关说明:工业用电大多使用三相电压,如三相380VAC,三相660VAC等。 工业用电与居民用电的区别:工业用电…

时间序列预测:用电量预测 05 BP神经网络

🌮开发平台:jupyter lab 🍖运行环境:python3、TensorFlow2.x ----------------------------------------------- 2022.9.16 测验成功 ---------------------------------------------------------------- 1. 时间序列预测&#x…

用电量专题-全国、煤炭行业、地级市工业用电量等多指标(部份内容已更新至2021)

一、全国历年逐月累计用电量 1、数据来源:国际电力网电力统计每月统计的数据 2、时间跨度:2004-2021年9月 3、区域范围:全国 4、指标说明: 全社会用电量 第一产业用电量 第二产业用电量 第三产业用电量 城乡居民生活用电量…

时序数据-LSTM模型-实现用电量预测

作者: 明天依旧可好 QQ交流群: 807041986 原文链接: https://mtyjkh.blog.csdn.net/article/details/115612319 深度学习系列:深度学习 我的环境: win10、jupyter notebook、tensorflow2 0.导入相关包设置相关参数 i…

电网大屏报表的制作--全国用电量分析

2018 年已经过半,各省又开始比考试成绩了,考试科目就叫 GDP,排在前面的自然扬眉吐气,排在后面的,就灰头土脸了,同样都是大省份,同样都是直辖市,为啥你排名靠前,我却垫了底…