1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
train['便利设施_num'] = train['便利设施'].str.split(',') int_equipments = [] for item in train['便利设施_num']: num = len(item) int_equipments.append(num) train['便利设施_num'] = int_equipments
test['便利设施_num'] = test['便利设施'].str.split(',') int_equipments_test = [] for item in test['便利设施_num']: num = len(item) int_equipments_test.append(num) test['便利设施_num'] = int_equipments_test
for key_words in ['Internet', 'Kitchen', 'Pets', 'Air', 'Washer', 'Aid', 'Heating', 'Dryer', 'Essentials', 'Hangers','TV','parking', '24-hour']: train[key_words] = train['便利设施'].str.contains(key_words).astype('str') test[key_words] = test['便利设施'].str.contains(key_words).astype('str')
train['民宿周边'] = train['民宿周边'].fillna(-999) test['民宿周边'] = test['民宿周边'].fillna(-999)
surround_train = [] for value in train['民宿周边']: if value == -999: new_value = 0 else: new_value = 1 surround_train.append(new_value) train['民宿周边'] = surround_train
surround_test = [] for value in test['民宿周边']: if value == -999: new_value = 0 else: new_value = 1 surround_test.append(new_value) test['民宿周边'] = surround_test
train['房主是否有个人资料图片'] = train['房主是否有个人资料图片'].fillna('f') test['房主是否有个人资料图片'] = test['房主是否有个人资料图片'].fillna('f') train['房主身份是否验证'] = train['房主身份是否验证'].fillna('f') test['房主身份是否验证'] = test['房主身份是否验证'].fillna('f')
str_cols = ['Internet', 'Kitchen', '房主是否有个人资料图片', '房主身份是否验证', 'Air', 'Pets', 'Washer', 'Aid', 'Heating', 'Dryer','Essentials', 'Hangers', 'TV', 'parking', '24-hour'] le = LabelEncoder() for col in str_cols: train[col] = le.fit_transform(train[col]) test[col] = le.fit_transform(test[col])
train['房主回复率'] = train['房主回复率'].fillna('20%') test['房主回复率'] = test['房主回复率'].fillna('20%') train['房主回复率'] = train['房主回复率'].str[:-1]
test['房主回复率'] = test['房主回复率'].str[:-1]
train['首次评论日期'] = train['首次评论日期'].fillna('2019-1-1') test['首次评论日期'] = test['首次评论日期'].fillna('2019-1-1') train['最近评论日期'] = train['最近评论日期'].fillna('2019-1-1') test['最近评论日期'] = test['最近评论日期'].fillna('2019-1-1')
time_cols = ['首次评论日期', '最近评论日期', '何时成为房主'] for col in time_cols: train[col] = pd.to_datetime(train[col]) test[col] = pd.to_datetime(test[col])
train['邮编'] = train['邮编'].fillna(0) test['邮编'] = test['邮编'].fillna(0) train['邮编'] = train['邮编'].astype('str') test['邮编'] = test['邮编'].astype('str')
cols = train.columns cont_cols = ['容纳人数', '便利设施_num', '床的数量', '卧室数量', '洗手间数量', '维度', '经度', '评论个数', '民宿评分','房主回复率'] cate_cols=['邮编','Internet','Kitchen','Air','Pets','Washer','Aid','Heating','Dryer','Essentials','Hangers',"TV",'parking', '24-hour','床的类型','民宿周边','取消条款','所在城市','清洁费','是否支持随即预订','房产类型','房型','房主是否有个人资料图片', '房主身份是否验证']
features = cont_cols + cate_cols
train[cate_cols] = train[cate_cols].astype('category') test[cate_cols] = test[cate_cols].astype('category')
for col in cate_cols: train[col]=train[col].fillna(train[col].mode()) test[col] = test[col].fillna(test[col].mode())
for col in ['洗手间数量','床的数量','卧室数量','民宿评分']: train[col]=train[col].fillna(train[col].median()) test[col] = test[col].fillna(test[col].median())
train=train.dropna().reset_index()
X_train=train[features] scaler=RobustScaler() scaler.fit(X_train[cont_cols])
X_train[cont_cols]=scaler.transform(X_train[cont_cols])
X_test=test[features] X_test[cont_cols]=scaler.transform(X_test[cont_cols]) y_train=train['价格'].astype('int')
|