我正在尝试将评论数据集分为两类,即 A 类和 B 类。我LightGBM
用来分类。
我已经多次更改分类器的参数,但我无法在结果中获得巨大差异。
我认为问题在于预处理步骤。我定义了一个如下所示的函数来处理预处理。我使用Stemming
并删除了stopwords
. 我不知道我错过了什么。我已经尝试LancasterStemmer
过PorterStemmer
stops = set(stopwords.words("english"))
def cleanData(text, lowercase = False, remove_stops = False, stemming = False, lemm = False):
txt = str(text)
txt = re.sub(r'[^A-Za-z0-9\s]',r'',txt)
txt = re.sub(r'\n',r' ',txt)
if lowercase:
txt = " ".join([w.lower() for w in txt.split()])
if remove_stops:
txt = " ".join([w for w in txt.split() if w not in stops])
if stemming:
st = PorterStemmer()
txt = " ".join([st.stem(w) for w in txt.split()])
if lemm:
wordnet_lemmatizer = WordNetLemmatizer()
txt = " ".join([wordnet_lemmatizer.lemmatize(w) for w in txt.split()])
return txt
是否有更多的预处理步骤需要做以获得更好的精度。?
数据集的 URL:数据集
编辑 :
我使用的参数如下所述。
params = {'task': 'train',
'boosting_type': 'gbdt',
'objective': 'binary',
'metric': 'binary_logloss',
'learning_rate': 0.01,
'max_depth': 22,
'num_leaves': 78,
'feature_fraction': 0.1,
'bagging_fraction': 0.4,
'bagging_freq': 1}
我和其他人一起改变了depth
和参数。num_leaves
但是准确度有点卡在一定水平..