没有合适的资源?快使用搜索试试~ 我知道了~
首页数据处理,数据分析,特征处理
数据处理,数据分析,特征处理
需积分: 42 202 浏览量
更新于2023-05-30
评论
收藏 1.76MB PDF 举报
作图分析,数据分析,特征筛选常用方法集合,结合scikit-learn当中的特征处理的方法,有code实例讲解!!!
资源详情
资源评论
资源推荐

基本数据分析
1 stats=[]
2 forcolintrain.columns:
3 stats.append((col,train[col].nunique(),train[col].isnull().sum()*100/train.shape[0],t
rain[col].value_counts(normalize=True,dropna=False).values[0]*100,train[col].dtype))
4
5 stats_df=pd.DataFrame(stats,columns=['Feature','Unique_values','Percentageofmissingva
lues','Percentageofvaluesinthebiggestcategory','type'])
6 stats_df.sort_values('Percentageofmissingvalues',ascending=False)[:10]
结果图:
(1)该功能是吧数据当中的,类别熟练,缺失值所占的比例,和主要类别所占的比例展现出来,后面跟上
数据的type,然后将训练数据和测试数据都输出一下看一下,然后可以适当的删除确实值太多feature,删除
单一类别所占比例比较高的feature,适当的删除那些类别单一的feature。然后进行一下缺失值的填充操作,
一般来说可以用均值填充,众数填充,中位数填充等多种填充方法。
1 target_col="收率"
2
3 plt.figure(figsize=(8,6))
4 plt.scatter(range(train.shape[0]),np.sort(train[target_col].values))
5 plt.xlabel('index',fontsize=12)
6 plt.ylabel('yield',fontsize=12)
7 plt.show()

1 plt.figure(figsize=(12,8))
2 sns.distplot(train[target_col].values,bins=50,kde=False,color="red")
3 plt.title("Histogramofyield")
4 plt.xlabel('yield',fontsize=12)
5 plt.show()
模仿操作代码
(2)
在线性回归问题当中,通过如上代码,将target数据排序后连续输出做散点图,然后观察那些较为离散的数
据,可以将其适当的删除。
(3)
可以根据一些方法构造新的feature,eg:
1 #有风的冬老哥,在群里无意爆出来的特征,让我提升了三个个点,当然也可以顺此继续扩展
2 data['b14/a1_a3_a4_a19_b1_b12']=data['B14']/(data['A1']+data['A3']+data['A4']+data['A19']+d
ata['B1']+data['B12'])
(4)
数据连接与分离,但是在连接之后的数据处理当中,不能够打乱数据的顺序。
1 data=pd.concat([train,test],axis=0,ingore_index=True)
2 train=data[:train.shape[0]]
3 test=data[train.shape[0]:]
(5)
数据的模型化

(5)
将训练数据和测试数据的feature数据分布图像画出来进行分析
1 #Explorefeaturedistibution
2 #fig=plt.figure(figsize=(6,6))
3 forcolumnindata_all.columns[0:‐2]:
4 g=sns.kdeplot(data_all[column][(data_all["oringin"]=="train")],color="Red",shade=Tru
e)
5 g=sns.kdeplot(data_all[column][(data_all["oringin"]=="test")],ax=g,color="Blue",shad
e=True)
6 g.set_xlabel(column)
7 g.set_ylabel("Frequency")
8 g=g.legend(["train","test"])
9 plt.show()
结果图:
结果图:

1 fig=plt.figure(figsize=(10,10))
2 foriinrange(len(data_all.columns)‐2):
3 g=sns.FacetGrid(data_all,col='oringin')
4 g=g.map(sns.distplot,data_all.columns[i])
结果图:
从而可以适当的删除那些训练集合测试集数据分布不一致的feature
(6)观察feature数据的散点图和数据分布图
1 #figureparameters
2 data_train1=data_all[data_all["oringin"]=="train"].drop("oringin",axis=1)
3
4 fcols=2
5 frows=len(data_train.columns)
6 plt.figure(figsize=(5*fcols,4*frows))
7
8 i=0
9 forcolindata_train1.columns:
10 i+=1
11 ax=plt.subplot(frows,fcols,i)
12 sns.regplot(x=col,y='target',data=data_train,ax=ax,
13 scatter_kws={'marker':'.','s':3,'alpha':0.3},
14 line_kws={'color':'k'});
15 plt.xlabel(col)
16 plt.ylabel('target')
17
18 i+=1
19 ax=plt.subplot(frows,fcols,i)
20 sns.distplot(data_train[col].dropna(),fit=stats.norm)
21 plt.xlabel(col)
结果图:
剩余18页未读,继续阅读










LSC的博客
- 粉丝: 72
- 资源: 10
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制

评论0