Shell 数据预处理 并分割为训练集,测试集,交叉验证集 (共两问)
原变量名称及属性:
@attribute 'age' real
@attribute 'sex' { female, male}
@attribute 'cipli' { typ_angina, asympt, non_anginal, atyp_angina}
@attribute 'trest' real
@attribute 'chololocate' real
@attribute 'fbshu' { t, f}
@attribute 'rest' { left_vent_hyper, normal, st_t_wave_abnormality}
@attribute 'thach' real
@attribute 'xang' { no, yes}
@attribute 'oldpipeak' real
@attribute 'slpe' { up, flat, down}
@attribute 'cait' real
@attribute 'that' { fixed_defect, normal, reversable_defect}
@attribute 'num' { '<50_1', '>50_4', '>50_5', '>51_8', '>59_9'}
问题一:将名词变量改为二进制
我使用的方法 如下:(存在BUG)其中所有带下划线变量无法被更改为二进制,并且所有带有t/f的词都被改变。该如何修改呢?
tail -n +315 data.arff|sed -e"s/female/0/g" |
sed -e"s/male/1/g" |
sed -e"s/typ_angina/0 0 0 1/g" |
sed -e"s/asympt/0 0 1 0/g" |
sed -e"s/non_anginal/0 1 0 0/g" |
sed -e"s/atyp_angina/1 0 0 0/g" |
sed -e"s/t/0/g" |
sed -e"s/f/1/g" |
sed -e"s/left_vent_hyper/0 0 1/g" |
sed -e"s/normal/0 1 0/g" |
sed -e"s/st_t_wave_abnormality/1 0 0/g" |
sed -e"s/no/0/g" |
sed -e"s/yes/1/g" |
sed -e"s/up/0 0 1/g" |
sed -e"s/flat/0 1 0/g" |
sed -e"s/down/1 0 0/g" |
sed -e"s/fixed_defect/0 0 1/g" |
sed -e"s/normal/0 0 1/g" |
sed -e"s/reversable_defect/1 0 0/g" |
sed -e"s/left_vent_hyper/0 0 1/g" |
sed -e"s/<50/0 0 0 0 1/g" |
sed -e"s/>50_1/0 0 0 1 0/g" |
sed -e"s/>50_2/0 0 1 0 0/g" |
sed -e"s/>50_3/0 1 0 0 0/g" |
sed -e"s/>50_4/1 0 0 0 0/g" >>train.pat
问题二:如何分割测试集和交叉验证
谢谢