预测功率和电流之间的关系

预测功率和电流之间的关系

通常机器学习的开发流程包括:数据收集—数据清洗与转换—模型训练—模型测试—模型部署与整合

下面,通过一个例子进行完整的机器学习开发流程的学习。

工程中需要的库:

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
from sklearn.externals import joblib

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas as pd
from pandas import DataFrame

  

(1)首先数据的收集,获取数据:

<span>预测功率和电流之间的关系</span>

如上,可以看到,我们获得需要获取的是Global_active_power(有功功率)、Global_reactive_power(无功功率)和Global_intensity(电流)之间的关系。

path = 'household_power_consumption_1000.txt'
df = pd.read_csv(path,sep = ';',low_memory = False)

print(df.head())
print(df.info())

  

(2)然后进入数据清洗阶段

<span>预测功率和电流之间的关系</span>

如上, 如果存在空值或异常值的情况,我们可以在这个阶段进行处理。

new_df = df.replace('?',np.nan)
datas = new_df.dropna(axis = 0,how = 'any')
print(datas.describe().T)

  如上,可以看到,我们对于异常值和空值存在的情况下,直接删掉了该样本。

<span>预测功率和电流之间的关系</span>

可以看到,1000个样本只剩下了998个了。

然后继续进行特征工程处理:

#提取出相关数据
X = datas.iloc[:,2:4]
Y = datas['Global_intensity']
#划分训练集和测试集
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)

 Tips: 

  • random_state:是随机数的种子。随机数种子:其实就是该组随机数的编号,在需要重复试验的时候,保证得到一组一样的随机数。比如你每次都填1其他参数一样的情况下你得到的随机数组是一样的。但填0或不填,每次都会不一样。
  • StandardScaler:标准化需要计算特征的均值和标准差,公式表达为:<span>预测功率和电流之间的关系</span>。至于为什么要做标准化,https://zhuanlan.zhihu.com/p/24839177

 

 

 (3)模型训练

lr = LinearRegression()
lr.fit(X_train,Y_train)

  如上,我们可以通过sklearn封装好的简单的语句完成模型的训练。

(4)模型预测

y_predict = lr.predict(X_test)
print("训练:",lr.score(X_train,Y_train))#
print("测试:",lr.score(X_test,Y_test))

mse = np.average((y_predict-Y_test)**2)
rmse = np.sqrt(mse)
print(rmse)

  如上:score是一个评分函数,即R2

<span>预测功率和电流之间的关系</span>

数据的可视化:

## 设置字符集,防止中文乱码
mpl.rcParams['font.sans-serif']=[u'simHei']
mpl.rcParams['axes.unicode_minus']=False
t = np.arange(len(X_test))
plt.figure()
plt.plot(t,Y_test,'r-',label = u'真实值')
plt.plot(t,y_predict,'b-',label = u'预测值')
plt.legend(loc = 'upper right')
plt.title(u'线性回归预测功率与电流之间的关系')
plt.grid(b = True)
plt.show()

  对于Anaconda2和3同时装的情况下,执行3可以采用下面命令:

<span>预测功率和电流之间的关系</span>

 

 <span>预测功率和电流之间的关系</span>

(5)模型部署

joblib.dump(lr,"data_lr.model")

lr = joblib.load("data_lr.model")

  如上,可以将训练好的模型存下来,以后用的时候load进来即可。

 

PS:当然这里的模型选择也可以选择其他算法,譬如SVR

模型构建步骤改为:

rbf=svm.SVR(kernel='rbf',C=1, )
rbf.fit(X_train,Y_train)

  当然,这里的话就需要调参了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119458.html原文链接:https://javaforall.net

(0)
上一篇 2021年11月19日 下午7:00
下一篇 2021年11月19日 下午8:00


相关推荐

  • jquery监听浏览器刷新_jQuery刷新浏览器页面大小

    jquery监听浏览器刷新_jQuery刷新浏览器页面大小jquery监听浏览器刷新基本代码段,用于在使用JavaScript调整浏览器大小的情况下刷新页面。//refreshpageonbrowserresize$(window).bind(‘resize’,function(e){console.log(‘windowresized..’);this.location.reload(false);/*false…

    2022年7月18日
    52
  • 关于错误“将截断字符串或二进制数据。 语句已终止”「建议收藏」

    关于错误“将截断字符串或二进制数据。 语句已终止”「建议收藏」解决:   数据库的字符长度

    2022年10月7日
    4
  • Mysql中Profiling之性能分析

    Mysql中Profiling之性能分析MySQL5 0 37 版本以上支持了 Profiling 官方手册 此工具可用来查询 SQL 会执行多少时间 Systemlock 和 Tablelock 花多少时间等等 对定位一条语句的 I O 消耗和 CPU 消耗非常重要 从启动 profile 之后的所有查询包括错误的语句都会记录 关闭会话或者 setprofiling 0 就关闭了 开启 profilingmys gt se

    2026年3月18日
    2
  • mysql varbinary max_binary 和 varbinary 用法全解

    mysql varbinary max_binary 和 varbinary 用法全解在 SQLServer 中 使用数据类型 binary n 和 varbinary n 存储字节流 或称二进制数据 n 是指字节数量 binary n 固定长度为 n 字节 其中 n 值从 1 到 8 000 存储空间为 n 字节 varbinary n max 可变长度 n 的取值范围为 1 至 8 000 max 是指最大存储空间是 2 31 1 个字节 即最大 4GB n 在表列定

    2026年3月20日
    1
  • 哪些不符合python语言变量名_以下选项中不符合 Python 语言变量命名规则的是( )_学小易找答案…[通俗易懂]

    哪些不符合python语言变量名_以下选项中不符合 Python 语言变量命名规则的是( )_学小易找答案…[通俗易懂]【单选题】下列各项中,关于银行存款业务的表述中正确的是()。(2012年)【单选题】下列各项中,关于企业无法查明原因的现金溢余,经批准后应贷记的会计科目是()。【多选题】计价软件中,在人材机汇总界面广材助手中,可以进行的调价有()【单选题】1KB表示()。【多选题】在分部分项工程界面,添加一项清单的方法有()【多选题】在计价软件中新建三级项目管理后,可以进行的造价分析有()【判断题…

    2022年5月29日
    47
  • python 爬虫 美女_Python3爬取美女妹子图片

    python 爬虫 美女_Python3爬取美女妹子图片1.效果图先看效果图,哈哈哈,是不是很有学习的欲望了,开干。爬图的数量根据你输入的页数确定,纯洁的我只是适当的爬了几张学习技术。效果图2.爬取妹子图片准备工作Python3.xPycharm等随意一款编辑器os库、requests库、pyquery库2.1安装库2.1.1cmd安装方式打开cmd控制台打开cam控制台在控制台分别输入以下代码:pipinstallrequestspip…

    2025年11月17日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号