0
我已經通過sklearn OneHotEncoding方法轉換了訓練和測試數據集。但是,轉換後的結果具有不同的類型形狀。所以它不可能適用於邏輯迴歸等其他算法。訓練數據和測試數據之間的一次編碼映射問題
如何根據訓練數據集的形狀重塑測試數據?
最佳Regardings,克里斯
import pandas as pd
import numpy as np
from sklearn.preprocessing import OneHotEncoder, LabelEncoder
def data_transformation(data, dummy):
le = LabelEncoder()
# Encoding the columns with multiple categorical levels
for col1 in dummy:
le.fit(data[col1])
data[col1] = le.transform(data[col1])
dummy_data = np.array(data[dummy])
enc = OneHotEncoder()
enc.fit(dummy_data)
dummy_data = enc.transform(dummy_data).toarray()
if __name__ == '__main__':
data = pd.read_csv('train.data', delimiter=',')
data_test = pd.read_csv('test.data', delimiter=',')
dummy_columns = ['Column1', 'Column2']
data = data_transformation(data, dummy_columns)
data_test = data_transformation(data_test, dummy_columns)
# result
# data shape : (200000, 71)
# data_test shape : (15000, 32)
你確定壓痕嗎?我看到你正在對這篇文章進行大量編輯。 –
我完成了這篇文章.. –
你正在適應OneHotEncoder()和LabelEncoder()兩次:一個用於'data',另一個用於'data_test'。這就是爲什麼你的形狀不匹配。這些編碼器應該只是對train數據進行'fit()',並且只對測試數據調用'transform()'。 –