我认为当我开始将自己的数据提供给分类器时,您遇到了同样的问题。
您可以使用 function sklearn.datasets.load_files
,但要这样做,您需要创建以下结构:
train
├── science
│ ├── 0001.txt
│ └── 0002.txt
└── technology
├── 0001.txt
└── 0002.txt
其中的子目录train
被命名为标签,标签目录中的每个文件都是具有相应标签的文章。然后使用load_files
加载数据:
In [1]: from sklearn.datasets import load_files
In [2]: load_files('train')
Out[2]:
{'DESCR': None,
'data': ['iphone apple smartphone\n',
'linux windows ubuntu\n',
'biology astrophysics\n',
'math\n'],
'filenames': array(['train/technology/0001.txt', 'train/technology/0002.txt',
'train/science/0002.txt', 'train/science/0001.txt'],
dtype='|S25'),
'target': array([1, 1, 0, 0]),
'target_names': ['science', 'technology']}
返回的对象是 a sklearn.datasets.base.Bunch
,它是一个简单的数据包装器。这是开始使用分类器的一种简单方法,但是当您的数据较大且经常更改时,您可能希望停止使用文件并使用例如数据库来存储标记的文档,并且可能具有比普通文件更多的结构文本。基本上,您将需要生成您的类别(或target_names
)列表,并将列表中每个文档['science', 'technology', ...]
的值分配为列表中标记类别的索引。和的长度必须相同。target
data
target_names
data
target
您可以查看我之前编写的运行分类器的脚本:https ://github.com/darkrho/yatiri/blob/master/scripts/run_classifier.py#L267