数据挖掘:降低汽油精制过程中的辛烷值损失模型(一)(下)

简介: 数据挖掘:降低汽油精制过程中的辛烷值损失模型(一)(下)

4.3附件一的处理:


1. data_325_all=pd.read_excel('附件一:325个样本数据.xlsx')
2. data_325_all_cao_zuo=data_325_all.iloc[:,0:]
3. data_325_all_cao_zuo

ad1779069c0441bfa21e9be029f45068.png

先对数据进行了简单的处理一下。中间的是不变的。  


def check_data(data_325_all_cao_zuo,min_values,max_values):
    if (data_325_all_cao_zuo > max_values) or (data_325_all_cao_zuo < min_values):
        return np.nan
    else:
        return data_325_all_cao_zuo
for j in range(data_range.shape[0]):
    names=data_range.iloc[j,1]
    data_min=data_range.iloc[j,6]
    data_max=data_range.iloc[j,7]
    data_325_all_cao_zuo[names]=data_325_all_cao_zuo[names].apply(lambda x:check_data(x,data_min,data_max))
data_325_all_cao_zuo


08a7169e08da42e493d43cb6e1566ea7.png

data_325_all_cao_zuo.isnull().sum()[data_325_all_cao_zuo.isnull().sum()>0]


955953afd41d45f4a247a7d333e7bf00.png

4.4 拉以达准则

cd64ae654c3f445fb9d77be3ab08a903.png

def three_sigma(df_col):
    """
    df_col:DataFrame数据的某一列
    """
    rule = (df_col.mean() - 3 * df_col.std() > df_col) | (df_col.mean() + 3 * df_col.std() < df_col)
    index = np.arange(df_col.shape[0])[rule]
    out_range_index=[pd.DataFrame(df_col.iloc[index]).columns,pd.DataFrame(df_col.iloc[index]).shape[0]]
    return out_range_index


# 285
out_range_285_idx=[]
for i in range(data.shape[1]):
    df_col=data.iloc[:,i]
    out_range_285=three_sigma(df_col)
    out_range_285_idx.append(out_range_285)
out_range_285_idx

cff105bf141f4501ba9417c54ca70e00.png

# 计算符合数据的个数
counts=0
for m in range(len(out_range_285_idx)):
    if out_range_285_idx[m][1]==0:
        counts+=1
    else:
        counts+=0
counts


354

31f11fb329dd4339bb51a8096d27be00.png

counts=0
for n in range(len(out_range_313_idx)):
    if out_range_313_idx[n][1]==0:
        counts+=1
    else:
        counts+=0
counts


313


找出异常数据。


# 找出异常数据
index_313=[]
for k in range(354):
    if out_range_313_idx[k][1]!=0:
        index_313.append((out_range_313_idx[k][0],out_range_313_idx[k][1]))
index_313


f86ef4559701495f8651e91e3a0c8237.png


处理完的数据:


链接: https://pan.baidu.com/s/11OL6B3d3FV8oJ2aQlBK3Kg 提取码: 8u4u


4.5 缺失值的处理


首先计算各位点数据的缺失值比率。将计算值与缺失值比率的阈值(20%)相比,按照其是否超过阈值将缺失数据分为两类:


(1)缺失值比率低的数据;


(2)数据缺失值比率高的数据。


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data_285=pd.read_excel('附件三:285号和313号样本原始数据.xlsx',sheet_name='操作变量285')
data_285=data_285.iloc[:,1:]
data_285


0a9c57628791454f8edb5a91426bfbe0.png

data_313=pd.read_excel('附件三:285号和313号样本原始数据.xlsx',sheet_name='操作变量313')
data_313=data_313.iloc[:,1:]
data_313

a2c24bf8e52541d8bc01f688598a34e7.png


检查不符合3σ原则的数据,并标记为空值


def three_sigma(data_input):
    for i in range(data_input.shape[0]):
        for j in range(data_input.shape[1]):
            mean=data_input.iloc[:,j].mean()
            std=data_input.iloc[:,j].std()
            if abs(data_input.iloc[i,j]-mean)>3*std:
                data_input.iloc[i,j]=np.nan
            else:
                continue
    return data_input

331645ac02a44816beda0c8996c0cf12.png


我们看一下313的数据集:


1. data_313_2=three_sigma(data_313)
2. data_313_2

c565349294c444b78517b84aea4b1341.png

data_313_2.isnull().sum()[data_313_2.isnull().sum()>0]

12e8e8692bf146d4bc003fba862f5b0f.png

第一列为索引位置,我们检查一下空值的位置:


isnull=[]
for i in data_313_2.columns:
    for j in data_313_2.index:
        if data_313_2.isnull().loc[j,i]:
            isnull.append((j,i))
isnull,len(isnull)
# 检查一下空值的位置 第一列为索引位置


8478e864d2d34097b68df57cc9233ead.png

尝试查看一个:


1. data_313_2.loc[37,'S-ZORB.FC_2801.PV']
2. # 尝试一个


nan


from scipy.interpolate import lagrange
#传入存在缺失值的列,缺失值所在0轴坐标index,按前后k个数来计算拉格朗日插值,返回index的拉格朗日插值
def lag_fill(df,i,k):
    r=0 if (i-k)<0 else (i-k) # python的三目运算符较为特殊
    l=len(df.index) if (i+1+k)>len(df.index) else (i+1+k)
    y=df.loc[list(range(r,i))+list(range(i+1,l))] #取index前后k个数据作为y代入拉格朗日函数进行拟合
    for j in y.index:
        if y.isnull().loc[j]:
            y.drop(index=j,inplace=True)
    x=y.index
    lag=lagrange(x.values,y.values)
    return lag(i)


for i in isnull:
   fnum=lag_fill(data_313_2.loc[:,i[1]],i[0],1)
   data_313_2.loc[i[0],i[1]]=fnum

6a39e8dc4aec42b199a41cb1eb54037d.png


7298acb6e49b4be1872f296b416751d8.png

我们检验一下新数据据是否合适:


1. # 用3sigma 函数在检验一下
2. data_313_2_new=three_sigma(data_313_2)
3. data_313_2_new

c530352d063a48d4a72f8678d899ecc5.png


data_313_2_new.isnull().sum()[data_313_2_new.isnull().sum()>0]

d77f563ad7604f19a9d028afadc24316.png

isnull_2=[]
for i in data_313_2_new.columns:
    for j in data_313_2_new.index:
        if data_313_2_new.isnull().loc[j,i]:
            isnull_2.append((j,i))
isnull_2,len(isnull_2)


e72488e92ab54143bf762ba8ec892bc5.png

for j in isnull_2:
   fnum_1=lag_fill(data_313_2_new.loc[:,j[1]],j[0],1)
   data_313_2_new.loc[j[0],j[1]]=fnum_1

b77c0573e5b64ab3876299aeafedac5e.png

再次检查:


1. data_313_2_new_2=three_sigma(data_313_2_new)
2. data_313_2_new_2.isnull().sum()[data_313_2_new_2.isnull().sum()>0]

bba17ddd9a1741259712f610e71db558.png

isnull_3=[]
for i in data_313_2_new_2.columns:
    for j in data_313_2_new_2.index:
        if data_313_2_new_2.isnull().loc[j,i]:
            isnull_3.append((j,i))
isnull_3,len(isnull_3)

f74ddb22ac0f46c3a89eabd47fe1dac5.png

for m in isnull_3:
   fnum_2=lag_fill(data_313_2_new_2.loc[:,m[1]],m[0],1)
   data_313_2_new_2.loc[m[0],m[1]]=fnum_2

d8e04307fcc24ffe91b5547240edd4d5.png

isnull_4=[]
for i in data_313_2_new_3.columns:
    for j in data_313_2_new_3.index:
        if data_313_2_new_3.isnull().loc[j,i]:
            isnull_4.append((j,i))
isnull_4,len(isnull_4)

57a6b989431442cea56ace7c5b406e2a.png

for n in isnull_4:
   fnum_3=lag_fill(data_313_2_new_3.loc[:,n[1]],n[0],1)
   data_313_2_new_3.loc[n[0],n[1]]=fnum_3
data_313_2_new_4=three_sigma(data_313_2_new_3)
data_313_2_new_4.isnull().sum()[data_313_2_new_4.isnull().sum()>0]

02c0df817d15459696678772aaa7a21b.png 

至此,数据处理结束。

目录
相关文章
|
4月前
|
机器学习/深度学习 数据挖掘 Python
【数据挖掘】分类器模型性能评估讲解及iris数据集评估实战(超详细 附源码)
【数据挖掘】分类器模型性能评估讲解及iris数据集评估实战(超详细 附源码)
48 0
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【数据挖掘】模型选择中正则化、交叉验证详解及实战应用(超详细 附源码)
【数据挖掘】模型选择中正则化、交叉验证详解及实战应用(超详细 附源码)
40 0
|
6月前
|
机器学习/深度学习 数据采集 算法
【数据挖掘和机器学习技术】数据挖掘和机器学习相关的算法和模型,如聚类、分类、回归、神经网络
【数据挖掘和机器学习技术】数据挖掘和机器学习相关的算法和模型,如聚类、分类、回归、神经网络
102 0
|
10月前
|
机器学习/深度学习 算法 数据可视化
数据挖掘与决策树:特征选择和模型解释
数据挖掘是现代软件开发中的一个重要领域,它涉及从大量数据中提取有用信息和模式的过程。在数据挖掘中,决策树是一种广泛使用的机器学习算法,它可以用于分类和回归任务。在本文中,我们将探讨决策树中的特征选择和模型解释的重要性以及如何应用它们。
142 0
|
11月前
|
机器学习/深度学习 数据采集 存储
数据挖掘实践(金融风控):金融风控之贷款违约预测挑战赛(下篇)[xgboots/lightgbm/Catboost等模型]--模型融合:stacking、blending
数据挖掘实践(金融风控):金融风控之贷款违约预测挑战赛(下篇)[xgboots/lightgbm/Catboost等模型]--模型融合:stacking、blending
|
11月前
|
机器学习/深度学习 数据采集 运维
数据挖掘实践(金融风控):金融风控之贷款违约预测挑战赛(上篇)[xgboots/lightgbm/Catboost等模型]–模型融合:stacking、blending
数据挖掘实践(金融风控):金融风控之贷款违约预测挑战赛(上篇)[xgboots/lightgbm/Catboost等模型]–模型融合:stacking、blending
|
12月前
|
存储 数据采集 监控
【数据挖掘实战】——应用系统负载分析与容量预测(ARIMA模型)
项目地址:Datamining_project: 数据挖掘实战项目代码
495 0