Day 23
#只取類別值 (object) 型欄位, 存於 object_features 中
object_features = []
for dtype, feature in zip(df.dtypes, df.columns):
if dtype == 'object':
object_features.append(feature)
print(f'{len(object_features)} Numeric Features : {object_features}\n')
# 只留類別型欄位
df = df[object_features]
df = df.fillna('None')
train_num = train_Y.shape[0] ---> 不太了解此行的用意
df.head()
# 對照組 : 標籤編碼 + 邏輯斯迴歸
df_temp = pd.DataFrame()
for c in df.columns:
df_temp[c] = LabelEncoder().fit_transform(df[c])
train_X = df_temp[:train_num]---> 為什麼要加入 [:train_num],直接寫成df_temp 會有差異嗎?
estimator = LogisticRegression()
start = time.time()
print(f'shape : {train_X.shape}')
print(f'score : {cross_val_score(estimator, train_X, train_Y, cv=5).mean()}')
print(f'time : {time.time() - start} sec')
回答列表
-
2019/05/10 上午 11:20Edwin贊同數:0不贊同數:0留言數:0
1.因為 df 已經利用 pd.concat() 將 test_X 併入 train_X 下方
因此df row/index的數量是為train_X的row與test_X的row數量加總
train_num = train_Y.shape[0] 的用意是紀錄train_X的row數量
2.train_X = df_temp[:train_num]用意是萃取出原先train_X的範圍
單純只有df_temp則同時包含了原先train_X與test_X
-
2019/05/10 下午 05:13張維元 (WeiYuan)贊同數:1不贊同數:0留言數:0
train_num = train_Y.shape[0]---> 不太了解此行的用意
=> 還記得 .shape 是什麼嗎?會回傳資料的筆數 * 寬度,取出 0 表示顯示資料筆數。
-
2019/05/10 下午 05:14張維元 (WeiYuan)贊同數:1不贊同數:0留言數:0
train_X = df_temp[:train_num]---> 為什麼要加入 [:train_num],直接寫成df_temp 會有差異嗎?
=> 這樣寫是說只取 n 筆(0 到 train_num)資料作為 training data,直接寫成 df_temp 就是把全部資料當成 training data。