svm_spam_filter

# ------------------------------
# 导入所需库
# ------------------------------
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

# ------------------------------
# 加载数据集
# ------------------------------
df = pd.read_csv('/.../sms_spam_svm.csv')  # 替换为实际路径

# ------------------------------
# 准备标签:'spam' → -1,其他 → 1
# ------------------------------
y = df.iloc[:, 0].values
y = np.where(y == 'spam', -1, 1)

# ------------------------------
# 提取特征:选取第2和第3列作为输入特征
# ------------------------------
X = df.iloc[:, [1, 2]].values

# ------------------------------
# 拆分训练集和测试集
# ------------------------------
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, random_state=0
)

# ------------------------------
# 创建 SVM 模型并训练(使用线性核)
# ------------------------------
svm = SVC(kernel='linear', C=1.0, random_state=0)
svm.fit(X_train, y_train)

# ------------------------------
# 预测并评估准确率
# ------------------------------
y_pred = svm.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)

print(f"Accuracy : {accuracy:.2f}")

 

Scroll to Top