我有一个包含 122 列的数据集,如下所示:
train.head()
SK_ID_CURR TARGET NAME_CONTRACT_TYPE CODE_GENDER FLAG_OWN_CAR FLAG_OWN_REALTY CNT_CHILDREN AMT_INCOME_TOTAL AMT_CREDIT AMT_ANNUITY ... FLAG_DOCUMENT_18 FLAG_DOCUMENT_19 FLAG_DOCUMENT_20 FLAG_DOCUMENT_21 AMT_REQ_CREDIT_BUREAU_HOUR AMT_REQ_CREDIT_BUREAU_DAY AMT_REQ_CREDIT_BUREAU_WEEK AMT_REQ_CREDIT_BUREAU_MON AMT_REQ_CREDIT_BUREAU_QRT AMT_REQ_CREDIT_BUREAU_YEAR
0 100002 1 Cash loans M N Y 0 202500.0 406597.5 24700.5 ... 0 0 0 0 0 0 0 0 0 1
1 100003 0 Cash loans F N N 0 270000.0 1293502.5 35698.5 ... 0 0 0 0 0 0 0 0 0 0
2 100004 0 Revolving loans M Y Y 0 …Run Code Online (Sandbox Code Playgroud) 我想从我的数据集“train”中删除异常值,为此我决定使用 z-score 或 IQR。
我在 Microsoft Python Client for SQL Server 上运行 Jupyter notebook。
我试过 z-score:
from scipy import stats
train[(np.abs(stats.zscore(train)) < 3).all(axis=1)]
Run Code Online (Sandbox Code Playgroud)
对于 IQR:
Q1 = train.quantile(0.02)
Q3 = train.quantile(0.98)
IQR = Q3 - Q1
train = train[~((train < (Q1 - 1.5 * IQR)) |(train > (Q3 + 1.5 *
IQR))).any(axis=1)]
Run Code Online (Sandbox Code Playgroud)
...返回...
对于 z 分数:
类型错误:不支持 / 的操作数类型:'str' 和 'int'
对于 IQR:
类型错误:无法排序的类型:str() < float()
我的火车数据集如下所示:
# Number of each type of column
print('Training data shape: ', train.shape)
train.dtypes.value_counts() …Run Code Online (Sandbox Code Playgroud)