我有一个如下所示的数据列表:
[['ocak' 2017]
['subat' 2017]
['mart' 2017]
['nisan' 2017]
['mayis' 2017]
['haziran' 2017]
['temuz' 2017]
['agustos' 2017]
['eylul' 2017]
['ekim' 2017]
['kasim' 2017]
['aralik' 2017]
['ocak' 2018]
['subat' 2018]
['mart' 2018]
['nisan' 2018]]
我想使用OneHotEncoder对列表的字符串部分('subat','mart'等…)进行编码,以便在我的回归模型中使用它
我使用的代码如下:
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [0])], remainder='passthrough')
X = np.array(ct.fit_transform(X))
但我的输出是这样的:
(0, 9) 1.0
(0, 13) 2017.0
(1, 10) 1.0
(1, 13) 2017.0
(2, 6) 1.0
(2, 13) 2017.0
(3, 8) 1.0
(3, 13) 2017.0
(4, 7) 1.0
(4, 13) 2017.0
(5, 4) 1.0
(5, 13) 2017.0
(6, 12) 1.0
(6, 13) 2017.0
(7, 0) 1.0
(7, 13) 2017.0
(8, 3) 1.0
列车试验分班不能接受的
我需要这样的输出
[1.0 0.0 0.0 2017]
我如何才能让它工作,给我的输出如上所述。或者我的代码或数据集有问题吗
OneHotEncoder
默认情况下返回一个稀疏矩阵,因此当使用np.array
包装返回值时,会得到一个不需要的表示形式。您有两个选择:sparse=False
传递给OneHotEncoder
,即toarray
将结果转换为numpy数组,即要使用第二种方法(我将其包装到
pd.DataFrame
中以便于检查结果):相关问题 更多 >
编程相关推荐