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

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

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

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

工程中需要的库:

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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • plsqldev8.0下载和注册码「建议收藏」

    plsqldev8.0下载和注册码「建议收藏」[b]关键词:PL/SQL,下载,plsqldev,注册码,plsqldev711,汉化文件[/b]PL/SQLDeveloper是一种集成的开发环境,专门用于开发、测试、调试和优化OraclePL/SQL存储程序单元,比如触发器等。PL/SQLDeveloper功能十分全面,大大缩短了程序员的开发周期。[url]http://www.kutoku.info/software…

    2022年4月25日
    27
  • 谷歌搜索引擎使用语法大全收集软件_搜索引擎语法

    谷歌搜索引擎使用语法大全收集软件_搜索引擎语法目录google介绍关于谷歌语法的一些例子Google常用语法踩点:需要收集的十个方面Google的一些入口地址谷歌语法详解需要注意以下几点:详细描述看以下几条链接:最后总结一下:看图片更直观GoogleHack技术是现在最火暴的黑客技术之一。其原理很简单,就是利用搜索引擎强大的搜索能力,来查找一些存在漏洞的网站。要利用Google来查找网站的漏洞自然要学会Google这个搜索引擎的语法了。下…

    2022年9月10日
    0
  • shell语法简单介绍

    shell语法简单介绍

    2021年12月10日
    41
  • vdbench测试过程中遇到的小问题[通俗易懂]

    vdbench测试过程中遇到的小问题[通俗易懂]vdbench测试过程中遇到的小问题1.报Slavehd2-0prematurelyterminated错误 首先根据提示查看hd2-0.stdout.html文件获取更多的错误信息,这个问题一般是未安装vdbench或者路径不一致问题…

    2022年5月19日
    161
  • APP抓包——Fiddler工具

    APP抓包——Fiddler工具Fiddler简介:Fiddler是强大且好用的Web调试工具之一,它能记录客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据。Fiddler的运行机制其实就是本机上监听8888端口的http代理。对于PC端Fiddler启动的时候默认IE的代理设为了127.0.0.1:8888,而其他浏览器是需要手动设置的,所以如果需要监听PC端Chrome网络请求,…

    2022年5月29日
    46
  • IT牛人博客聚合 – Linode日本东京机房速度飞快 编程牛人 技术牛人

    IT牛人博客聚合 – Linode日本东京机房速度飞快 编程牛人 技术牛人为了应对亚太地域快速增加的需求,Linode起头把机房建在亚洲了!第一个Linode亚洲机房选择在日本东京.我测了下,速度比本来在美国加州快多了,应当首要得益于收集延时的削减.所以,我当即开了张SupportTicket将我的VPS迁到了日本.迁完以后,拜候速度飞快!和原来在国内某机房没有感受上的区分.大师可以反馈下你会见的速度是不是有晋升?注:Lino

    2022年7月12日
    19

发表回复

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

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