fuli2020

2020-08-01   阅读量: 754

python 统计 数据分析流

扫码加入数据分析学习群




  1. 图片.png

  2. 数据分析流程:

    (1)需求:搭建业务框架

    (2)y量化:连接业务和统计

    (3)特征选择:区分x的重要性,特征选择

    (4)描述:描述y和重要的x、不合理取值

    (5)预分析:缺失值、异常值、拟合判断、变量变换、取值编码、特征选择、共线性

    缺失值:a.如果y的缺失值在20%~50%,必须使用模型填充y值(data.isnull().sum()/data.shape[0])

    使用中位数填充准确率为77.5%,使用随机森林填充的准确率为79.2%

    from missingpy import KNNImputer,MissForest

    imput=MissForest(n_estimators=3,min_samples_leaf=20000,n_job=-1,copy=False)

    data5=imput.fit_transform(data.iloc[:,1:])

    data51=pd.DataFrame(data5,columns=data.iloc[:,1:].columns)


    from sklearn import linear_model

    x,y=data51.iloc[:,1:],data51['v残耗']

    reg=linear_model_LinearRegression()

    reg.fit(x,y)

    reg.score(x,y)

    图片.png

    异常值处理,取p范围内的两个点位值,将数据不在该范围内的替换为这两个点位值


特征筛选:

from sklearn.feature_selection import SelectKBest,SelectPercentile,f_regression #SelectKBest和SelectPercentile 都是框架,前者设置取特征数量,后者按照设置百分比取特征

x,y=data52.iloc[:,1:],data52['v残耗']

fit=SelectPercentile(score_func=f_regression,percentile=60) #按照特征的60%进行筛选

fitt=fit.fit_transform(x,y)

data53=pd.concat([data52['v=残耗'],x.iloc[:,fit.get_support(indices=True)]],axis=1)


变换y,当y偏度大时,通过log函数进行校正,data54['v残耗log']=np.log(data54['v残耗'])


编码是对数据分组的过程,data53['烟碱量02']=pd.qcut(data53['烟碱量01'],q=4)

(6)建模:可视化描述-》相关分析-》模型

可视化描述:

plt.subplots(1,2,figsize=(12,8))

plt.subplot(121)

r2=reg.score(x,y);plt.plot(y,reg.predict(x),'o',label=r2)

plt.legend()

plt.subplot(122)

resid=y-reg.predict(x)

std_resid=(resid-np.mean(resid))/np.std(resid)

plt.plot(reg.predict(x),std_resid,'o',label='残差图')

plt.legend()

(7)修正:假设条件、优缺点

异常值--多变量异常值处理

data54['标准化残差']=std_resid

data54_99=data54[np.abs(data54['标准化残差'])<=6]# 删除数量控制在1%以内

data54_2=data54_99.drop(['标准化残差'],axis=1)

print(data54_2.shape)


多变量特征筛选(Wrapper包装法RFE;Embedded嵌入法SelectFromModel)

from sklearn.feature_selection import RFE,SelectFromModel

from sklearn.ensemble import RandomForestRegressor

from sklearn.svm import LinearSVR


rfr=RandomForestRegressor(n_estimators=10,min_samples_leaf=10000)

selector=RFE(rfr,n_features_to_select=8).fit(x54_1,y54_1)

data54_3=pd.concat([data54_2['v残耗'],data54_2[data54_2.columns[selector.get_support(indices=True)]]],axis=1)


x,y=data54_3.iloc[:,1:],data54_3['v残耗']

reg=linear_model.LinearRegression().fit(x,y)

reg.coef_



(8)评估:拟合指标和业务评价

(9)应用:归因(主次归因和规则归因)、预测(老样本预测和新样本预测)

(10)可视化:简美与繁美


29.4888 5 2 关注作者 收藏

评论(0)


暂无数据

推荐课程