发布于2021-01-23 19:51 阅读(715) 评论(0) 点赞(16) 收藏(3)
0
1
2
3
4
5
我正在使用sklearn导入数据:
from sklearn import datasets
dataset = datasets.fetch_openml('credit-g', version = 'active')
sklearn可以将分类数据转换为数字。
现在,我想将此数据集转换为Pandas DataFrame:
data = pd.DataFrame(dataset.data, columns = dataset.feature_names)
data['class'] = pd.Series(dataset.target)
但是此命令会删除所有分类数据-它们现在是数字。
我想要的是在转换后将原始文本标签替换为数字的数据框。因此,在将sklearn数据框转换为pandas数据框后,数据看起来应该相同,就像我只是使用以下命令下载了该数据一样:
pd.read_csv("https://www.openml.org/data/get_csv/31/dataset_31_credit-g.arff")
可能吗?
从的文档中fetch_openml
,返回的字典包含:
[...] data : np.array or scipy.sparse.csr_matrix of floats The feature matrix. Categorical features are encoded as ordinals. [...] categories : dict Maps each categorical feature name to a list of values, such that the value encoded as i is ith in the list. [...]
没有选项不对分类特征进行编码。只要您将用于sklearn
下载数据集,就将具有浮点数而不是字符串。
但是,由于还返回了类别,因此您可以使用如下所示的分类功能重建“基础”数据集(我不确定这是最快的解决方案,还是更优雅的解决方案):
from sklearn import datasets
import pandas as pd
import numpy as np
def main():
dataset = datasets.fetch_openml('credit-g', version = 'active')
raws = [
np.take(dataset['categories'][feature], dataset['data'][:,i].astype(int)) # Take string value for categorical features
if feature in dataset['categories'] else dataset['data'][:,i] # Else use the floats as is
for i, feature in enumerate(dataset['feature_names'])
]
data = pd.DataFrame(np.stack(raws, axis=1), columns=dataset.feature_names)
data['class'] = pd.Series(dataset.target)
print("Initial dtypes:")
print(data.dtypes)
dtypes = {
f: 'category' if f in dataset['categories'] else 'float'
for f in dataset['feature_names']
}
dtypes['class'] = 'category'
data = data.astype(dtypes)
print("\nFirst cast:")
print(data.dtypes)
int_cols = [1, 4, 12]
data.iloc[:, int_cols] = data.iloc[:, int_cols].astype('int64')
print("\nInt cast:")
print(data.dtypes)
if __name__ == '__main__':
main()
0
1
2
3
4
5
6
7
8
作者:黑洞官方问答小能手
链接: https://www.pythonheidong.com/blog/article/787086/ee696732a475414c24f9/
来源: python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系z452as@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!