帮我优化下面程序import pandas as pd from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import MultinomialNB # 读取训练数据集 train_df = pd.read_csv('train.csv') # 读取测试数据集 test_df = pd.read_csv('test.csv') # 将文本数据转换成向量形式 vectorizer = CountVectorizer() train_vectors = vectorizer.fit_transform(train_df['text']) test_vectors = vectorizer.transform(test_df['text']) # 使用朴素贝叶斯分类器进行分类 classifier = MultinomialNB() classifier.fit(train_vectors, train_df['label']) # 对测试数据集进行预测 predictions = classifier.predict(test_vectors) # 输出预测结果 for i, prediction in enumerate(predictions): print(f"Prediction for news {i+1}: {prediction}")
时间: 2023-07-16 16:12:57 浏览: 109
这段代码看起来已经很简洁了,不过还是可以进行一些优化:
1. 在导入库时,可以将相同类型的库放在一起,如将所有的sklearn库放在一起,pandas库放在一起。
2. 可以将读取数据和转换向量的代码放在一个函数中,这样可以避免重复代码。
3. 可以使用Pipeline来简化代码,它可以将文本数据转换成向量形式并使用分类器进行分类。
下面是优化后的代码:
```python
import pandas as pd
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
def load_data(file_path):
"""读取数据并转换成向量形式"""
data = pd.read_csv(file_path)
vectorizer = CountVectorizer()
vectors = vectorizer.fit_transform(data['text'])
return vectors, data['label']
# 读取训练数据集和测试数据集
train_vectors, train_labels = load_data('train.csv')
test_vectors, test_labels = load_data('test.csv')
# 使用Pipeline来简化代码
classifier = Pipeline([
('vectorizer', CountVectorizer()),
('classifier', MultinomialNB())
])
# 对训练数据进行拟合
classifier.fit(train_vectors, train_labels)
# 对测试数据进行预测
predictions = classifier.predict(test_vectors)
# 输出预测结果
for i, prediction in enumerate(predictions):
print(f"Prediction for news {i+1}: {prediction}")
```
希望这个优化过的代码能够帮到你!
阅读全文