scikit基础与机器学习入门(6)编码,增加多项式特征和缺失值处理

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了scikit基础与机器学习入门(6)编码,增加多项式特征和缺失值处理脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

分类特征编码_独热编码

了解决这个问题,我们可以使用一种叫做"one-of-K"或称做"one-hot"(独热)的编码方式。即两 个特征值来进行编码性别[1,0]表示"male",而[0,1]表示"female"。通常使用"one-hot"方式编码后会 增加数据的维度和稀疏性。

From sklearn import PReprocessing
X = [[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]]
onehot = preprocessing.OneHotEncoder()
onehot.fIT_transform(X).toarray() # 将稀疏矩阵转化为普通矩阵

如果训练集中有没有出现的实际存在的值,必须显式地设置(n_values)

# 如果训练集中有丢失的分类特征值,必须显式地设置 n_values
encoder = preprocessing.OneHotEncoder(n_values=[2,4,4])
encoder.fit_transform(X).toarray()

处理缺失值

除了DataFrame中的方法,sklearn也包括填充缺失值的方法

import numpy as np
from sklearn.preprocessing import Imputer
# 策略有 mean,most_frequent,median
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit([[1, 2], [np.nan, 3], [7, 6]])
#fit求得第一列特征均值为4,第二列特征均值为11/3
X = [[np.nan, 2], [6, np.nan], [7, 6]]
print(imp.transform(X))

scikit基础与机器学习入门(6)编码,增加多项式特征和缺失值处理

直接使用特征和无法找到分割决策边界,线性不可分 。使用多项式特征后,可以找到分割决策 边界:(X_1^{2}+X_2^{2}-1=0)

import numpy as np
from sklearn.preprocessing import PolynomialFeatures
X = np.arange(6).reShape(3, 2)
poly = PolynomialFeatures(2) #这是最高的多项式次数
print(X)
print(poly.fit_transform(X))

scikit基础与机器学习入门(6)编码,增加多项式特征和缺失值处理

X 的特征已经从((X_1,X_2))转换为((1,X_1,X_2,X_1^{2},X_1X_2,X_2^{2}))

在一些情况下,只需要特征间的交互项,这可以通过设置 interaction_only=True 来得到

poly2 = PolynomialFeatures(2,interaction_only=True)
print(poly2.fit_transform(X))

scikit基础与机器学习入门(6)编码,增加多项式特征和缺失值处理

X 的特征已经从((X_1,X_2))转换为((1,X_1,X_2,X_1X_2))

脚本宝典总结

以上是脚本宝典为你收集整理的scikit基础与机器学习入门(6)编码,增加多项式特征和缺失值处理全部内容,希望文章能够帮你解决scikit基础与机器学习入门(6)编码,增加多项式特征和缺失值处理所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。