磁盘损坏预测的数据挖掘

数据导入与预处理

首先是导入本次数据挖掘所需用到的所有包

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
from sklearn.decomposition import PCA
from mpl_toolkits.mplot3d import Axes3D 
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import ExtraTreesClassifier
from sklearn.neighbors import KNeighborsClassifier,KNeighborsRegressor
from sklearn.preprocessing import StandardScaler
from sklearn import svm
import seaborn as sns

接着,我们导入磁盘数据,并对数据进行基本的处理

file_path='data\smart dataset sample.csv'
df=pd.read_csv(file_path)
data=df.iloc[:,3:]
X=data.iloc[:,1:]
Y=data.iloc[:,0]

# 删去特征全为空的样本
X.dropna(how='all',inplace=True)
Y=Y.iloc[X.index]

X=X.reset_index(drop=True)
Y=Y.reset_index(drop=True)

一开始导入的数据表df如下图所示
在这里插入图片描述

共有14个字段,11036个样本,我们先去除前三个无用的字段得到新的数据表data,再将smart特征和标签failure分开为X和Y

对于X,我们先删去特征值全为空的磁盘样本,总共删去一个样本之后,再同步更新数据集X和Y,最后reset X和Y的index,得到的X和Y如下图所示

X数据集
在这里插入图片描述
Y数据集
在这里插入图片描述

缺失值填补

我们有多种缺失值填补的方法(均值填补众数填补回归填补自编码神经网络填补

其中让我感到意外的是,采用均值填补的数据集在cross_val_score评估中,表现是最好的,关于这点的分析我会在之后进行分析

KNN_classifier填补

# KNN回归填补空缺值
from sklearn.neighbors import KNeighborsClassifier,KNeighborsRegressor

def knn_missing_filled(train_x,train_y,test,k=3,dispersed=True):
    if dispersed:
        clf=KNeighborsClassifier(n_neighbors=k,weights='distance',n_jobs=-1)
    else:
        clf=KNeighborsRegressor(n_neighbors=k,weights='distance',n_jobs=-1)
    clf.fit(train_x,train_y)
    return test.index,clf.predict(test)

RandomForest填补

# randomforest填补空缺值

from sklearn.ensemble import RandomForestRegressor,RandomForestClassifier  # 随机森林回归

def randomforest_missing_filled(train_x,train_y,test,dispersed=True):
    if dispersed:
        clf=RandomForestClassifier(n_estimators=10)
    else:
        clf=RandomForestRegressor(n_estimators=10)
    clf.fit(train_x,train_y)
    return test.index,clf.predict(test)

自编码神经网络填补

在这里插入图片描述

自编码神经网络的模型示例如上图所示,其将输入进行encode并压缩,提取重要特征,然后进行decode,恢复数据,本质上就是学习了一个函数 f W , b ( X ) = X f_{W,b} (X)=X fW,b(X)=X

我们可以将完整的数据作为训练集 X X X输入自编码神经网络进行学习,通过不断的迭代提取出数据的分布和特征,然后我们将含有缺失值的数据 X ′ X' X

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值