【发布时间】:2019-07-19 22:20:43
【问题描述】:
我有一个包含 37 个变量和 50,000 行的数据框。既有分类特征,也有数值特征。我想对数据框中的某些列执行规范化功能。
这是一个假数据集:
diagnosis gender area age weight score compactness class
447 1 95.88 50 117.66 674.8 80 0
167 0 109.3 65 118.8 886.3 35.6 2
444 0 117.5 80 160.85 990 64.2 2
100 0 88.05 35 94.98 582.7 35.23 1
227 1 97.45 40 15.51 684.5 70 1
我只想对面积、重量、分数、紧凑性进行归一化。我该怎么做?顺便说一句,我从here 找到了一个标准偏差方法,但它意味着对整个数据集进行规范化,代码是:
# identify outliers with standard deviation
from numpy.random import seed
from numpy.random import randn
from numpy import mean
from numpy import std
# calculate summary statistics
data_mean, data_std = mean(data), std(data)
# identify outliers
cut_off = data_std * 3
lower, upper = data_mean - cut_off, data_mean + cut_off
# identify outliers
outliers = [x for x in data if x < lower or x > upper]
print('Identified outliers: %d' % len(outliers))
# remove outliers
outliers_removed = [x for x in data if x >= lower and x <= upper]
print('Non-outlier observations: %d' % len(outliers_removed))
我的问题是如何仅对数据框中的某些列进行规范化?提前感谢您的帮助!
【问题讨论】:
-
在
baseR中,您可以使用您要使用的列的名称(v=c("weight","score" ...))创建一个向量,然后使用dataset[,v]=apply(dataset[,v],2, function(x){ ... }将函数仅应用于这些列 -
如果只是选择变量,那么可以使用
df[, grep("area|age|weight|score", names(df))]。 -
@boski 你愿意给我更多细节吗?我使用 R 尝试了这个,然后我迷路了 m
-
@tmfmnk 你能给我更多的提示吗? tks
-
grep()在 df 的列名中查找给定的变量。对于匹配的列,它返回它们的列索引,然后根据该列索引对 df 进行子集化。
标签: python r normalization