数据分析流程:
(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)
异常值处理,取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)可视化:简美与繁美
暂无数据