发布于2023-02-27 13:53 阅读(1172) 评论(0) 点赞(18) 收藏(1)
我有一个如下所示的数据列表:
[['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
这是 train_test_split 类不能接受的..
我需要这样的输出
[1.0 0.0 0.0 2017]
我怎样才能让它像上面那样给我输出。还是我的代码或数据集有问题?
OneHotEncoder
默认情况下返回一个稀疏矩阵,因此当您用 包装返回值时np.array
,您会得到一个不需要的表示。你有两个选择:
sparse=False
给OneHotEncoder
即ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(sparse=False), [0])], remainder='passthrough')
toarray
,即X = ct.fit_transform(X).toarray()
得到第二种方式(我把它包装成pd.DataFrame
更容易检查结果):
>>> pd.DataFrame(X)
0 1 2 3 4 5 6 7 8 9 10 11 12
0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 2017.0
1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 2017.0
2 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 2017.0
3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 2017.0
4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 2017.0
5 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2017.0
6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 2017.0
7 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2017.0
8 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2017.0
9 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2017.0
10 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 2017.0
11 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2017.0
12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 2018.0
13 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 2018.0
14 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 2018.0
15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 2018.0
作者:黑洞官方问答小能手
链接:http://www.phpheidong.com/blog/article/495118/7d633ac74c58b0dcbe2c/
来源:php黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!