数据预处理:sklearn-preprocessing
-
from sklearn import preprocessing
preprocessing.scale(x)去均值的中心化(均值变为0);方差的规模化(方差变为1)。
-
# 这是相当好的一个功能。可以对训练数据,测试数据应用相同的转换,以后有新的数据进来也可以直接调用,不用再重新把数据放在一起再计算一次了。
# 调用fit方法,根据已有的训练数据 x 创建一个标准化的转换器
# 另外,StandardScaler()中可以传入两个参数:with_mean,with_std.这两个都是布尔型的参数,
# 默认情况下都是true,但也可以自定义成false.即不要均值中心化或者不要方差规模化为1.
scaler = preprocessing.StandardScaler().fit(x)
# 好了,比如现在又来了一组新的样本,也想得到相同的转换new_x = [[-1., 1., 0.]]
scaler.transform(new_x) -
x_normalized = preprocessing.normalize(x, norm='l2')
函数normalize 提供了一个快速有简单的方式在一个单向量上来实现这正则化的功能。正则化有l1,l2等。
-
x = np.array([[1., -1., 2.], [2., 0., 0.], [0., 1., -1.]]) binarizer = preprocessing.Binarizer(threshold=1.5) binarizer.transform(x)
将数值型的特征数据转换成0,1的值。
-
enc = preprocessing.OneHotEncoder() enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]]) # fit来学习编码 enc.transform([[0, 1, 3]]).toarray() # 进行编码
OneHot Encoder
-
from sklearn.Imputer import SimpleImputer
imp = SimpleImputer(missing_values=np.nan, strategy='mean')
x_0 = [[1, 2], [np.nan, 3], [7, 6]]imp.fit(x_0) x = [[np.nan, 2], [6, np.nan], [7, 6]] imp.transform(x) # 填补值为x_0各列的均值
# imp.fit_transform(x) 相当于fit() + transform()
弥补缺失数据
-
sex = pd.Series(["male", "female", "female", "male"]) le = preprocessing.LabelEncoder() #获取一个LabelEncoder le = le.fit(["male", "female"]) #训练LabelEncoder, 把male编码为0,female编码为1 sex = le.transform(sex) #使用训练好的LabelEncoder对原数据进行编码 print(sex) # [1 0 0 1] le.inverse_transform([1,0,0,1]) # array(['male', 'female', 'female', 'male'], dtype='<U6')
将n个类别编码为0~n-1之间的整数(包含0和n-1)。
参考链接:
https://blog.csdn.net/weixin_40807247/article/details/82793220
https://www.cnblogs.com/sench/p/10134094.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧