算法笔记(17)数据表达及Python代码实现

本节讲述数据表达方法:(1)使用哑变量转化类型特征(2)对数据进行装箱处理

原始数据

使用哑变量转化类型特征

哑变量:用来把某些类型变量转化为二值变量的方法。
下面使用get_dummies来将类型特征转化为只有0和1的二值数值特征。默认情况下是不会对数值特征进行转换的。

fruits = pd.DataFrame({'数值特征':[5,6,7,8,9],
                   '类型特征':['西瓜','香蕉','桔子','苹果','葡萄']})
fruits_dum = pd.get_dummies(fruits)
display(fruits_dum)

经过get_dummies转化的水果数据集

使用get_dummies对数值特征进行转换

fruits['数值特征'] = fruits['数值特征'].astype(str)
pd.get_dummies(fruits, columns=['数值特征'])

 get_dummies转换数值特征的结果

首先用.astype(str)指定了“数值特征”这一列是字符串类型的数据,然后在get_dummies中指定columns参数为“数值特征”这一列,这样get_dummies就会只转化数值特征了。

对数据进行装箱处理

利用one-hot编码来表达已经装箱的数据
one-hot编码优点:将离散型特征使用one-hot编码,确实会让特征之间的距离计算更加合理。
下面分别用MLP算法和KNN算法对数据集进行回归分析
Python代码实现:

new_line = onehot.transform(np.digitize(line,bins=bins))

new_mlpr = MLPRegressor().fit(X_in_bin, y)
new_knr = KNeighborsRegressor().fit(X_in_bin,y)

plt.plot(line, new_mlpr.predict(new_line),label='New MLP')
plt.plot(line, new_knr.predict(new_line),label='New KNN')

plt.plot(X,y,'o',c='r')
plt.legend(loc='best')
plt.show()

 特征装箱之前的MLP回归和KNN回归

 特征装箱之后的MLP回归和KNN回归

结果分析:MLP的回归模型变得更复杂,KNN模型变得更简单。对样本特征进行装箱的一个好处:它可以纠正模型过拟合或者欠拟合的问题。尤其是当针对大规模高维度的数据集使用线性模型的时候,装箱处理可以大幅提高线性模型的预测准确率。
注意:对于样本数据进行装箱的操作对于基于决策树的算法(如随机森林、梯度上升决策树,当然也包括决策树本身)没有太多的作用,因为这类算法本身就是不停在拆分样本的特征数据,所以不需要再使用装箱操作。

想要完整代码的朋友,可toutiao号搜索“编程研究坊”关注后s信我,回复“算法笔记17“获取

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2022年5月26日 下午1:52
下一篇 2022年5月26日

相关推荐