Python实现孤立森林(IForest)+SVR的组合预测模型
只讨论性能,不考虑关联性,降噪数据未填补。
1.引入数据集
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report
from sklearn.metrics import explained_variance_score
from sklearn.ensemble import RandomForestRegressor
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
import pandas as pd
import numpy as np
import timefrom sklearn import metricsimport csvdata=[]
traffic_feature=[]
traffic_target=[]
csv_file = csv.reader(open('turang.csv'))
for content in csv_file:content=list(map(float,content))if len(content)!=0:data.append(content)traffic_feature.append(content[0:4])traffic_target.append(content[-1])data=np.array(data)traffic_feature=np.array(traffic_feature)
traffic_target=np.array(traffic_target)df=pd.DataFrame(data=data,columns = ['土壤温度','空气湿度','空气温度','光照强度','土壤水分'])
df
土壤温度 | 空气湿度 | 空气温度 | 光照强度 | 土壤水分 | |
---|---|---|---|---|---|
0 | 37.77 | 27.00 | 39.90 | 68150.99 | 9.88 |
1 | 37.80 | 28.83 | 40.03 | 63989.96 | 9.85 |
2 | 37.82 | 26.82 | 40.20 | 63039.88 | 9.78 |
3 | 37.96 | 24.33 | 39.90 | 62988.95 | 9.77 |
4 | 37.77 | 24.03 | 39.60 | 59670.04 | 9.80 |
... | ... | ... | ... | ... | ... |
3078 | 28.57 | 91.17 | 17.23 | 861.47 | 28.30 |
3079 | 28.52 | 90.90 | 17.17 | 861.55 | 28.30 |
3080 | 28.50 | 89.80 | 17.15 | 861.76 | 28.28 |
3081 | 28.49 | 86.70 | 17.27 | 861.98 | 28.27 |
3082 | 28.46 | 84.50 | 17.43 | 860.32 | 28.28 |
3083 rows × 5 columns
2.标准化
scaler = StandardScaler() # 标准化转换
scaler.fit(traffic_feature) # 训练标准化对象
traffic_feature= scaler.transform(traffic_feature) # 转换数据集
feature_train,feature_test,target_train, target_test = train_test_split(traffic_feature,traffic_target,test_size=0.1,random_state=10)
3.SVR
from sklearn.svm import SVR
import matplotlib.pyplot as plt
start1=time.time()
model_svr = SVR(C=1,epsilon=0.1,gamma=10)
model_svr.fit(feature_train,target_train)
predict_results1=model_svr.predict(feature_test)
end1=time.time()SVRRESULT=predict_results1plt.plot(target_test)#测试数组
plt.plot(predict_results1)#测试数组
plt.legend(['True','SVR'])
fig = plt.gcf()
fig.set_size_inches(18.5, 10.5)
plt.title("SVR") # 标题
plt.show()
print("EVS:",explained_variance_score(target_test,predict_results1))
print("R2:",metrics.r2_score(target_test,predict_results1))
print("Time:",end1-start1)
EVS: 0.6563954626493961 R2: 0.6536622059850858 Time: 0.3603041172027588
4.引入IForest降噪
from sklearn.ensemble import IsolationForestmodel_isof = IsolationForest()
outlier_label = model_isof.fit_predict(df)
# 将array 类型的标签数据转成 DataFrame
outlier_pd = pd.DataFrame(outlier_label, columns=['outlier_label'])
# 将标签数据与原来的数据合并
data_merge = pd.concat((df, outlier_pd), axis=1)
normal_source = data_merge[data_merge['outlier_label']==1]
normal_source
5.测试效果
IF_traffic_feature=normal_source.values[:,[0,1,2,3]]
IF_traffic_target=normal_source.values[:,[4]]
scaler.fit(IF_traffic_feature) # 训练标准化对象
IF_traffic_feature= scaler.transform(IF_traffic_feature) # 转换数据集
feature_train,feature_test,target_train, target_test = train_test_split(IF_traffic_feature,IF_traffic_target,test_size=0.1,random_state=10)
from sklearn.svm import SVR
import matplotlib.pyplot as plt
start1=time.time()
model_svr = SVR(C=1,epsilon=0.1,gamma=10)
model_svr.fit(feature_train,target_train)
predict_results1=model_svr.predict(feature_test)
end1=time.time()plt.plot(target_test)#测试数组
plt.plot(predict_results1)#测试数组
plt.legend(['True','SVR'])
fig = plt.gcf()
fig.set_size_inches(18.5, 10.5)
plt.title("SVR") # 标题
plt.show()
print("EVS:",explained_variance_score(target_test,predict_results1))
print("R2:",metrics.r2_score(target_test,predict_results1))
print("Time:",end1-start1)
EVS: 0.5487895968648998 R2: 0.5255880566754088 Time: 0.2094569206237793
效果不怎么样...可能是数据集或者未数据填补的原因。
Python实现孤立森林(IForest)+SVR的组合预测模型相关推荐
- 【项目实战】Python基于孤立森林算法(IsolationForest)实现数据异常值检测项目实战
说明:这是一个机器学习实战项目(附带数据+代码+文档+代码讲解),如需数据+代码+文档+代码讲解可以直接到文章最后获取. 1.项目背景 孤立森林是基于Ensemble的快速异常检测方法,具有线性时间复 ...
- Python实现孤立森林 (Isolation Forest)
文章目录 引入 代码 改进代码 引入 代码说明: 1)输入:给定数据集: 2)属性:tree,根据孤立森林建立的二叉树: 3)用法示例: # >>> np.rando ...
- Python实现灰狼优化算法(GWO)+SVR的组合预测模型
1.导包 import csv import numpy as np from sklearn.preprocessing import StandardScaler from sklearn.mod ...
- 机器学习 - 异常检测算法之孤立森林(Isolation Forest)
参考:https://blog.csdn.net/extremebingo/article/details/80108247 背景 现有的异常检测方法: 通过对正常样本的描述,给出一个正常样本在特征空 ...
- 孤立森林(IsolationForest)算法对数据进行异常检测
1.摘要 本文主要讲解:使用孤立森林(IsolationForest)算法对数据进行异常检测 主要思路: 对数据进行处理,处理成算法能识别的二维数据 使用孤立森林(IsolationForest)算法 ...
- 孤立森林算法-异常点检测
前言 在学习论文的过程中,出现了异常点的检测方法,异常点的检查方法有很多,例如基于偏差的方法(通过去除异常点,使得总体方差缩小).基于距离的方法(计算邻居距离,异常点一般距离比较远).基于密度的方 ...
- 孤立森林python实现
孤立森林是近几年较为火热的检测异常数据算法,下面使用python来编写代码. 本人初学python,若有错误之处,欢迎指出(csdn再导入python代码时格式有些乱) ""&qu ...
- 孤立森林算法matlab实现,隔离林在MATLAB和python中的简单应用,isolationforest,上
1 问题描述 数据中的异常值的检测 异常点,也称为离群点.离群点检测算法主要看到了isolation forest算法和local outlier factor(LOF)算法. LOF算法的具体原理在 ...
- 孤立森林:大数据背景下的最佳异常检测算法之一
孤立森林或"iForest"是一个非常漂亮和优雅简单的算法,可以用很少的参数来识别异常.原始的论文对广大的读者来说是容易理解的,并且包含了很少的数学知识.在这篇文章中,我将解释为什 ...
最新文章
- MyCollection 程序 F&Q
- 【学时总结】 ◆学时·III◆ 二分图
- WinSock的recv返回值处理
- curl上传文件linux,在Linux中如何使用curl从一个服务器流式传输文件到另一个服务器(有限的服务器资源)...
- 如何分析SAP UI5应用的undefined is not a function错误
- 如何基于Restful ABAP Programming模型开发并部署一个支持增删改查的Fiori应用
- 【JS 逆向百例】无限 debugger 绕过,某网站互动数据逆向
- 设计模式-第三篇之工厂方法和抽象工厂
- Adjoin the Networks
- shp文件格式说明(二)
- 【云扩RPA】Timing
- MYSQL练习题:第二高的薪水(查找第N高的数)
- GD32F4—RTC闹钟及自动唤醒中断配置详解
- 【前端】手把手教你实现类似某bao的放大镜功能
- 常见的BeanUtils.populate异常 解决方案
- 强制推到远程git push
- SpringBoot 监控
- 【pymysql模块】
- python数字转换为大写中文_python 人民币数字转汉字大写金额
- 基于asp.net的员工出差管理信息系统#毕业设计#课程设计
热门文章
- 真实案例详述:丢手机太危险了
- 【C++习题笔记】谭浩强C++程序设计(第三版)第七章
- 工具收集 - 搜索工具
- Screenshots of Super Head Go-puzzle of colors
- bat 当前目录下 子目录文件 移动到当前目录 并 文件改名 改后缀名
- 缓存为王:老码农眼中的分布式缓存
- 厘米换算英尺英寸 (15 分)
- 记录JVM中Eden区、Survivor from区和Survivor to区及Minor GC和Major GC的理解
- zynq系列之-----PS端iic使用
- winform 打印快递电子面单_隐私电子面单demo