文本分类实战:KNN 和 SVM 算法 Python 代码示例
以下是使用 KNN 算法和 SVM 算法实现文本分类的 Python 代码示例:
KNN 算法实现文本分类:
from sklearn.neighbors import KNeighborsClassifier
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 读取数据
with open('data.txt', 'r', encoding='utf-8') as f:
data = f.readlines()
# 分离文本和标签
texts = [line.strip().split(' ')[0] for line in data]
labels = [line.strip().split(' ')[1] for line in data]
# 将文本转换为 TF-IDF 特征向量
vectorizer = TfidfVectorizer()
features = vectorizer.fit_transform(texts)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42)
# 训练 KNN 分类器
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)
# 预测测试集并计算准确率
y_pred = knn.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
SVM 算法实现文本分类:
from sklearn.svm import SVC
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 读取数据
with open('data.txt', 'r', encoding='utf-8') as f:
data = f.readlines()
# 分离文本和标签
texts = [line.strip().split(' ')[0] for line in data]
labels = [line.strip().split(' ')[1] for line in data]
# 将文本转换为 TF-IDF 特征向量
vectorizer = TfidfVectorizer()
features = vectorizer.fit_transform(texts)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42)
# 训练 SVM 分类器
svm = SVC(kernel='linear')
svm.fit(X_train, y_train)
# 预测测试集并计算准确率
y_pred = svm.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
需要注意的是,以上代码仅用于示例,实际应用中需要根据数据集的特点进行调参等优化。
原文地址: https://www.cveoy.top/t/topic/ocJt 著作权归作者所有。请勿转载和采集!