只讨论性能,不考虑关联性,降噪数据未填补。

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的组合预测模型相关推荐

  1. 【项目实战】Python基于孤立森林算法(IsolationForest)实现数据异常值检测项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+代码讲解),如需数据+代码+文档+代码讲解可以直接到文章最后获取. 1.项目背景 孤立森林是基于Ensemble的快速异常检测方法,具有线性时间复 ...

  2. Python实现孤立森林 (Isolation Forest)

    文章目录 引入 代码 改进代码 引入   代码说明:   1)输入:给定数据集:   2)属性:tree,根据孤立森林建立的二叉树:   3)用法示例: # >>> np.rando ...

  3. Python实现灰狼优化算法(GWO)+SVR的组合预测模型

    1.导包 import csv import numpy as np from sklearn.preprocessing import StandardScaler from sklearn.mod ...

  4. 机器学习 - 异常检测算法之孤立森林(Isolation Forest)

    参考:https://blog.csdn.net/extremebingo/article/details/80108247 背景 现有的异常检测方法: 通过对正常样本的描述,给出一个正常样本在特征空 ...

  5. 孤立森林(IsolationForest)算法对数据进行异常检测

    1.摘要 本文主要讲解:使用孤立森林(IsolationForest)算法对数据进行异常检测 主要思路: 对数据进行处理,处理成算法能识别的二维数据 使用孤立森林(IsolationForest)算法 ...

  6. 孤立森林算法-异常点检测

    前言   在学习论文的过程中,出现了异常点的检测方法,异常点的检查方法有很多,例如基于偏差的方法(通过去除异常点,使得总体方差缩小).基于距离的方法(计算邻居距离,异常点一般距离比较远).基于密度的方 ...

  7. 孤立森林python实现

    孤立森林是近几年较为火热的检测异常数据算法,下面使用python来编写代码. 本人初学python,若有错误之处,欢迎指出(csdn再导入python代码时格式有些乱) ""&qu ...

  8. 孤立森林算法matlab实现,隔离林在MATLAB和python中的简单应用,isolationforest,上

    1 问题描述 数据中的异常值的检测 异常点,也称为离群点.离群点检测算法主要看到了isolation forest算法和local outlier factor(LOF)算法. LOF算法的具体原理在 ...

  9. 孤立森林:大数据背景下的最佳异常检测算法之一

    孤立森林或"iForest"是一个非常漂亮和优雅简单的算法,可以用很少的参数来识别异常.原始的论文对广大的读者来说是容易理解的,并且包含了很少的数学知识.在这篇文章中,我将解释为什 ...

最新文章

  1. MyCollection 程序 F&Q
  2. 【学时总结】 ◆学时·III◆ 二分图
  3. WinSock的recv返回值处理
  4. curl上传文件linux,在Linux中如何使用curl从一个服务器流式传输文件到另一个服务器(有限的服务器资源)...
  5. 如何分析SAP UI5应用的undefined is not a function错误
  6. 如何基于Restful ABAP Programming模型开发并部署一个支持增删改查的Fiori应用
  7. 【JS 逆向百例】无限 debugger 绕过,某网站互动数据逆向
  8. 设计模式-第三篇之工厂方法和抽象工厂
  9. Adjoin the Networks
  10. shp文件格式说明(二)
  11. 【云扩RPA】Timing
  12. MYSQL练习题:第二高的薪水(查找第N高的数)
  13. GD32F4—RTC闹钟及自动唤醒中断配置详解
  14. 【前端】手把手教你实现类似某bao的放大镜功能
  15. 常见的BeanUtils.populate异常 解决方案
  16. 强制推到远程git push
  17. SpringBoot 监控
  18. 【pymysql模块】
  19. python数字转换为大写中文_python 人民币数字转汉字大写金额
  20. 基于asp.net的员工出差管理信息系统#毕业设计#课程设计

热门文章

  1. 真实案例详述:丢手机太危险了
  2. 【C++习题笔记】谭浩强C++程序设计(第三版)第七章
  3. 工具收集 - 搜索工具
  4. Screenshots of Super Head Go-puzzle of colors
  5. bat 当前目录下 子目录文件 移动到当前目录 并 文件改名 改后缀名
  6. 缓存为王:老码农眼中的分布式缓存
  7. 厘米换算英尺英寸 (15 分)
  8. 记录JVM中Eden区、Survivor from区和Survivor to区及Minor GC和Major GC的理解
  9. zynq系列之-----PS端iic使用
  10. winform 打印快递电子面单_隐私电子面单demo