第一步:给训练集打标签(故障码):

由于是SPN,FMI俩个特征对应一个故障码,故采用下面语句来给训练集加标签(CODE)dataset为训练集,data_faultcode为故障码说明集;合并得到dataset_a;

dataset_a = pd.merge(dataset,data_faultcode, how='left', on=["SPN", "FMI"])
dataset_a['CODE']=dataset_a['CODE'].fillna(0)
dataset_a.to_csv(path_fault_dataset,index=False)

第二步:结合题目和测试集来提取训练集中有用的特征形成新的数据集:

dataset_a = pd.read_csv(path_fault_dataset,low_memory=False,encoding='GBK')
cols=['ACCRUNTIMES','AREA','CITY','COLLECTTIME','FAULTTIME','FRID','LAT','LNG','PROVINCE','READFLAG','UNIQUENO','CODE']
dataset_b=dataset_a[cols]
dataset_b.dropna(axis=0, how='any', inplace=True)
dataset_b.to_csv(path_dataset_b,index=False)

第三步:对新数据集以及测试集的时间特征进行时间转时间戳操作:

for i in range(0, len(dataset_b)):timeArray = time.strptime(dataset_b.iloc[i]['COLLECTTIME'], "%Y-%m-%d %H:%M:%S")dataset_b.loc[i, 'COLLECTTIME'] = int(time.mktime(timeArray))# timeArray = time.strptime(dataset_b.iloc[i]['FAULTTIME'], "%Y-%m-%d %H:%M:%S")# dataset_b.loc[i,'FAULTTIME'] = int(time.mktime(timeArray))
dataset_b[['COLLECTTIME']] = dataset_b[['COLLECTTIME']].apply(pd.to_numeric)
#dataset_b[['COLLECTTIME', 'FAULTTIME']] = dataset_b[['COLLECTTIME', 'FAULTTIME']].apply(pd.to_numeric)
dataset_b.to_csv(path_dataset_c,index=False)
for i in range(0, len(dataset_test)):timeArray = time.strptime(dataset_test.iloc[i]['COLLECTTIME'], "%Y-%m-%d %H:%M:%S")dataset_test.loc[i, 'COLLECTTIME'] = int(time.mktime(timeArray))
dataset_test[['COLLECTTIME']] = dataset_test[['COLLECTTIME']].apply(pd.to_numeric)

第三步:将训练集的特征和标签分开:

X=dataset_c.drop(['CODE'],axis=1,inplace=False)
Y=dataset_c[['CODE']]

对特征部分进行数据标准化操作:

scaler = preprocessing.StandardScaler().partial_fit(X)
dataset_d_X =pd.DataFrame(scaler.transform(X))
dataset_d_Y =Y

测试集也进行同样标准化操作:

test_X=dataset_test[['ACCRUNTIMES','AREA','CITY','COLLECTTIME','FRID','LAT','LNG','PROVINCE','READFLAG']]
dataset_test_X =pd.DataFrame(scaler.transform(test_X))

第四步:用朴素随机过采样处理训练集中的数据不平衡问题:

ros = RandomOverSampler(random_state=0)
train_X, train_Y= ros.fit_sample(dataset_d_X,np.array(dataset_d_Y).ravel())
X=pd.DataFrame(train_X)
Y=pd.DataFrame(train_Y)
X.to_csv(path_train_X,index=False)
Y.to_csv(path_train_Y,index=False)

第五步:准备好训练集X和Y以及测试集X,其中训练集Y有多个故障码,为方便模型训练以及最后的结果呈现,我们需要将标签先变为1,2,3,4,,,12。对于模型采用随机森林进行分类:

train_X=pd.read_csv(path_train_X)
train_Y=pd.read_csv(path_train_Y)
train_Y= train_Y.astype(int)
y=train_Y.replace([0,1122,1141,1145,1168,1182,1206,1209,1211,1215,1216,1239,1246,1341],[0,1,2,3,4,5,6,7,8,9,10,11,12,13])
test_X=pd.read_csv(path_dataset_test_X)
model = RandomForestRegressor(n_estimators=100, oob_score=True, n_jobs=-1, random_state=50,max_features="auto", min_samples_leaf=50)
model.fit(train_X, y)
Pred=pd.DataFrame(model.predict(test_X))
Pred.to_csv(path_pred,index=False)

第六步:将测试集中预测完的结果进行四舍五入取整,同时再把取整后的标签转化为我们需要呈现的故障码:

B=pd.read_csv(path_pred)
df_1=B.round(0).astype(int).replace([0,1,2,3,4,5,6,7,8,9,10,11,12,13],[0,1122,1141,1145,1168,1182,1206,1209,1211,1215,1216,1239,1246,1341])

为呈现最后提交的格式,把测试集序号和预测结果合并到一个csv中,对列名进行修改:

result= pd.merge(df_0,df_1,left_index=True,right_index=True,how='outer')
# result.set_axis(['idx','Pred'], axis='columns', inplace=False)
result=result.rename(index=str, columns={"idx": "idx", "0": "Pred"})
result.to_csv(path_result,index=False)

Kesci--基于机器学习的故障检测系统相关推荐

  1. 论文研读-AI4VIS-可视化推荐-VizML: 一种基于机器学习的可视化推荐方法

    VizML: 一种基于机器学习的可视化推荐方法 1 论文概述 1.1 摘要 1.2 引言 2 问题陈述 3 相关工作 3.1 基于规则的可视化推荐系统 3.2 基于机器学习的可视化推荐系统 4 数据 ...

  2. python dag调度系统开发_基于机器学习的DAG调度平台

    什么是DAG? 有向无环图 树形结构:除根节点,每个节点有且仅有一个上级节点,下级节点不限.根节点没有上级节点. 图结构:每个节点上级.下级节点数不限. DAG调度平台的定义及场景 任务调度是在各行各 ...

  3. 基于机器学习的车牌识别系统

    基于机器学习的车牌识别系统 本文设计的车牌处理系统主要用于通过手机.路口监视器拍到的车牌照片进行识别.由图像处理.车牌定位.字符分割和字符识别四个模块组成,该四部分需要依次执行,其中的每一模块需要利用 ...

  4. 基于机器学习的天气数据分析与预测系统

    温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / QQ 名片 :) 1. 项目简介 本项目利用网络爬虫技术从某天气预报网站抓取某一城市的历史天气数据,构建天气数据分析与预测系统,实现对 ...

  5. 基于机器学习的电影票房分析与预测系统

    温馨提示:文末有 CSDN 平台官方提供的博主 Wechat / QQ 名片 :) 1. 项目简介 票房作为衡量电影能否盈利的重要指标受诸多因素共同作用影响且其影响机制较为复杂,电影票房的准确预测是比 ...

  6. 基于机器学习的车牌识别系统(Python实现基于SVM支持向量机的车牌分类)

    基于机器学习的车牌识别系统(Python实现基于SVM支持向量机的车牌分类) 一.数据集说明 训练样本来自于github上的EasyPR的c++版本,包含一万三千多张数字及大写字母的图片以及三千多张中 ...

  7. Python课程设计项目-基于机器学习的糖尿病风险预警分析系统

    这个东西是我大二时候做的,做的挺一般的,当时也没想着搭建界面啥的,测试的也不够,就是单纯的分享一下吧,不足之处大家多多指正,我会把所有的代码和数据在文章最后都放出来,喜欢的话点个赞吧! [摘 要] 糖 ...

  8. 用于安全医疗保健系统的基于机器学习的可伸缩区块链架构

    文章目录 背景 相关技术简介 区块链扩张性 电子病历数据安全 安全医疗保健的架构 基于可扩展区块链架构的机器学习概述 基于可扩展区块链架构的机器学习工作流程 小结 摘要 从3.0到4.0的工业革命已经 ...

  9. [系统安全] 三十三.恶意代码检测(3)基于机器学习的恶意代码检测技术

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

最新文章

  1. 自己动手实现操作系统引导程序(OS bootloader)——借助QEMU/GDB/losetup/dd等工具
  2. 算法:搜索插入的位置
  3. MySQL 语法问题:You can‘t specify target table ‘xxx‘ for update in FROM clause. 原因及解决方法
  4. Unity3D常见面试题
  5. 用科幻艺术描绘未知的魅力-环境篇
  6. 本想试试看,结果却拿到了京东的Offer
  7. 《大数据》第1期“动态”——站在大数据的风口上
  8. python中iloc的详细用法_python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)...
  9. 【AI视野·今日CV 计算机视觉论文速览 第237期】Thu, 30 Sep 2021
  10. linux调整网页视频声音,网络学员面试常见问题请你修改一下LINUX的视频驱动和声音.DOC...
  11. cdr添加节点快捷键_常用CDR快捷键
  12. Android studio引入XUI
  13. 大数据行业热门岗位有哪些
  14. C语言字母排序不分大小写,求助C语言字母不分大小写排序
  15. android 手机 投影,100吋1080p 看Android双核手机连投影
  16. Windows下安装 gmpy2
  17. 用户登录界面的测试用例
  18. win10如何添加或禁用开机自启动项
  19. 所见即所得编辑器_Froala所见即所得编辑器
  20. mktime 的选择

热门文章

  1. 机器学习常用的六种分类方法,Python代码详细都在这里!
  2. java试题汽车接口_Java接口和包的实现之小汽车实例
  3. 全国计算机等级考试 和ccf,【我与CCF】我与CCF的不解之缘
  4. python-某旗小说app的学习过程
  5. 区块链前景分析和学习建议
  6. Apache DolphinScheduler征稿 — 小Demo轻松入门DolphinSchedule大数据调度工具
  7. 车载网络基础——预备篇
  8. 万用表判断喇叭单元正负极
  9. joomla速度优化_WordPress v Joomla:搜索引擎优化
  10. 自媒体数据运营saas_向媒体宣传您的SaaS