lightgbm 文本二分类代码
时间: 2023-05-11 20:00:29 浏览: 134
LightGBM是一种高效的机器学习算法,适用于大规模数据集的分类和回归问题。下面是一个使用LightGBM进行文本分类的样例代码,具体步骤如下:
1.加载数据集
使用pandas库中的read_csv方法导入csv格式的数据集,并根据需要进行数据清洗和预处理。
```python
import pandas as pd
data = pd.read_csv('dataset.csv')
```
2.划分数据集
将数据集划分为训练集和测试集。
```python
from sklearn.model_selection import train_test_split
train_data, test_data, train_label, test_label = train_test_split(data['text'], data['label'], test_size=0.2)
```
3.特征提取
将文本数据转换为数字特征向量,以便进行计算。
```python
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf = TfidfVectorizer(stop_words='english', max_df=0.7) #定义tf-idf向量化器
train_feature = tfidf.fit_transform(train_data) #将训练集文本转换为特征向量
test_feature = tfidf.transform(test_data) #将测试集文本转换为特征向量
```
4.构建LightGBM模型
```python
import lightgbm as lgb
train_set = lgb.Dataset(train_feature, label=train_label) #创建训练集
test_set = lgb.Dataset(test_feature, label=test_label) #创建测试集
params = {
'boosting_type': 'gbdt',
'objective': 'binary',
'metric': 'binary_logloss',
'num_leaves': 31,
'learning_rate': 0.05,
'feature_fraction': 0.9,
'bagging_fraction': 0.8,
'bagging_freq': 5,
'verbose': 0
} #定义模型参数
num_round = 1000 #定义迭代轮数
model = lgb.train(params, train_set, num_round, valid_sets=[test_set], early_stopping_rounds=20) #训练模型
```
5.预测结果
使用训练好的模型对测试集进行预测,并计算分类准确率。
```python
preds = model.predict(test_feature)
preds = [1 if i > 0.5 else 0 for i in preds] #将预测概率转换为二分类结果
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(test_label, preds) #计算分类准确率
print('Accuracy:', accuracy)
```