我有一组4k个文本文件,它们属于10个不同的类别。我正在尝试使用随机森林方法进行分类。问题在于我的特征提取类提取了200k个特征(包括单词、二元组和短语等的组合)。这是高度稀疏的数据,而sklearn中的随机森林实现不能处理稀疏数据输入。
Q. 我有哪些选择?减少特征数量?如何减少? Q. 是否有任何可以处理稀疏数组的随机森林实现?
以下是我的相关代码:
import logging
import numpy as np
from optparse import OptionParser
import sys
from time import time
#import pylab as pl
from sklearn.datasets import load_files
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.ensemble import RandomForestClassifier
from special_analyzer import *
data_train = load_files(RAW_DATA_SRC_TR)
data_test = load_files(RAW_DATA_SRC_TS)
# split a training set and a test set
y_train, y_test = data_train.target, data_test.target
vectorizer = CountVectorizer( analyzer=SpecialAnalyzer()) # SpecialAnalyzer is my class extracting features from text
X_train = vectorizer.fit_transform(data_train.data)
rf = RandomForestClassifier(max_depth=10,max_features=10)
rf.fit(X_train,y_train)
sklearn.ensemble.RandomForestClassifier.fit
现在可以接受稀疏矩阵作为输入:参数: X : 形状为 [n_samples, n_features] 的数组或稀疏矩阵
。 - jul