!pip install xgboost -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
!pip install lightgbm  -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
!pip install catboost -i https://pypi.tuna.tsinghua.edu.cn/simple/

from sklearn.svm import SVC #支持向量机分类器
from sklearn.neighbors import KNeighborsClassifier #K近邻分类器
from sklearn.linear_model import LogisticRegression #逻辑回归分类器
import xgboost as xgb #XGBoost分类器
import lightgbm as lgb #LightGBM分类器
from sklearn.ensemble import RandomForestClassifier #随机森林分类器
from catboost import CatBoostClassifier #CatBoost分类器
from sklearn.tree import DecisionTreeClassifier #决策树分类器
from sklearn.naive_bayes import GaussianNB #高斯朴素贝叶斯分类器
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score # 用于评估分类器性能的指标
from sklearn.metrics import classification_report, confusion_matrix #用于生成分类报告和混淆矩阵

print("="*60)
print("SVM分类器")
print("="*60)
svm = SVC(random_state=42)
svm.fit(X_train_scaled, y_train)
y_pred_svm = svm.predict(X_test_scaled)
print("混淆矩阵:")
print(confusion_matrix(y_test, y_pred_svm))
print("\n分类报告:")
print(classification_report(y_test, y_pred_svm))
svm_metrics = {
    "准确率": accuracy_score(y_test, y_pred_svm),
    "精确率": precision_score(y_test, y_pred_svm, average='binary'),
    "召回率": recall_score(y_test, y_pred_svm, average='binary'),
    "F1分数": f1_score(y_test, y_pred_svm, average='binary')
}
for k, v in svm_metrics.items():
    print(f"{k}: {v:.4f}")

# 2. K近邻分类器
print("\n" + "="*60)
print("K近邻分类器")
print("="*60)
knn = KNeighborsClassifier()
knn.fit(X_train_scaled, y_train)
y_pred_knn = knn.predict(X_test_scaled)
print("混淆矩阵:")
print(confusion_matrix(y_test, y_pred_knn))
print("\n分类报告:")
print(classification_report(y_test, y_pred_knn))
knn_metrics = {
    "准确率": accuracy_score(y_test, y_pred_knn),
    "精确率": precision_score(y_test, y_pred_knn, average='binary'),
    "召回率": recall_score(y_test, y_pred_knn, average='binary'),
    "F1分数": f1_score(y_test, y_pred_knn, average='binary')
}
for k, v in knn_metrics.items():
    print(f"{k}: {v:.4f}")

# 3. 逻辑回归分类器
print("\n" + "="*60)
print("逻辑回归分类器")
print("="*60)
lr = LogisticRegression(random_state=42, max_iter=1000)
lr.fit(X_train_scaled, y_train)
y_pred_lr = lr.predict(X_test_scaled)
print("混淆矩阵:")
print(confusion_matrix(y_test, y_pred_lr))
print("\n分类报告:")
print(classification_report(y_test, y_pred_lr))
lr_metrics = {
    "准确率": accuracy_score(y_test, y_pred_lr),
    "精确率": precision_score(y_test, y_pred_lr, average='binary'),
    "召回率": recall_score(y_test, y_pred_lr, average='binary'),
    "F1分数": f1_score(y_test, y_pred_lr, average='binary')
}
for k, v in lr_metrics.items():
    print(f"{k}: {v:.4f}")

# 4. XGBoost分类器
print("\n" + "="*60)
print("XGBoost分类器")
print("="*60)
xgb_clf = xgb.XGBClassifier(random_state=42, use_label_encoder=False, eval_metric='logloss')
xgb_clf.fit(X_train_scaled, y_train)
y_pred_xgb = xgb_clf.predict(X_test_scaled)
print("混淆矩阵:")
print(confusion_matrix(y_test, y_pred_xgb))
print("\n分类报告:")
print(classification_report(y_test, y_pred_xgb))
xgb_metrics = {
    "准确率": accuracy_score(y_test, y_pred_xgb),
    "精确率": precision_score(y_test, y_pred_xgb, average='binary'),
    "召回率": recall_score(y_test, y_pred_xgb, average='binary'),
    "F1分数": f1_score(y_test, y_pred_xgb, average='binary')
}
for k, v in xgb_metrics.items():
    print(f"{k}: {v:.4f}")

# 5. LightGBM分类器
print("\n" + "="*60)
print("LightGBM分类器")
print("="*60)
lgb_clf = lgb.LGBMClassifier(random_state=42)
lgb_clf.fit(X_train_scaled, y_train)
y_pred_lgb = lgb_clf.predict(X_test_scaled)
print("混淆矩阵:")
print(confusion_matrix(y_test, y_pred_lgb))
print("\n分类报告:")
print(classification_report(y_test, y_pred_lgb))
lgb_metrics = {
    "准确率": accuracy_score(y_test, y_pred_lgb),
    "精确率": precision_score(y_test, y_pred_lgb, average='binary'),
    "召回率": recall_score(y_test, y_pred_lgb, average='binary'),
    "F1分数": f1_score(y_test, y_pred_lgb, average='binary')
}
for k, v in lgb_metrics.items():
    print(f"{k}: {v:.4f}")

# 6. 随机森林分类器
print("\n" + "="*60)
print("随机森林分类器")
print("="*60)
rf = RandomForestClassifier(random_state=42)
rf.fit(X_train_scaled, y_train)
y_pred_rf = rf.predict(X_test_scaled)
print("混淆矩阵:")
print(confusion_matrix(y_test, y_pred_rf))
print("\n分类报告:")
print(classification_report(y_test, y_pred_rf))
rf_metrics = {
    "准确率": accuracy_score(y_test, y_pred_rf),
    "精确率": precision_score(y_test, y_pred_rf, average='binary'),
    "召回率": recall_score(y_test, y_pred_rf, average='binary'),
    "F1分数": f1_score(y_test, y_pred_rf, average='binary')
}
for k, v in rf_metrics.items():
    print(f"{k}: {v:.4f}")

# 7. CatBoost分类器
print("\n" + "="*60)
print("CatBoost分类器")
print("="*60)
cb = CatBoostClassifier(random_state=42, verbose=False)
cb.fit(X_train_scaled, y_train)
y_pred_cb = cb.predict(X_test_scaled)
print("混淆矩阵:")
print(confusion_matrix(y_test, y_pred_cb))
print("\n分类报告:")
print(classification_report(y_test, y_pred_cb))
cb_metrics = {
    "准确率": accuracy_score(y_test, y_pred_cb),
    "精确率": precision_score(y_test, y_pred_cb, average='binary'),
    "召回率": recall_score(y_test, y_pred_cb, average='binary'),
    "F1分数": f1_score(y_test, y_pred_cb, average='binary')
}
for k, v in cb_metrics.items():
    print(f"{k}: {v:.4f}")# 8. 决策树分类器
print("\n" + "="*60)
print("决策树分类器")
print("="*60)
dt = DecisionTreeClassifier(random_state=42)
dt.fit(X_train_scaled, y_train)
y_pred_dt = dt.predict(X_test_scaled)
print("混淆矩阵:")
print(confusion_matrix(y_test, y_pred_dt))
print("\n分类报告:")
print(classification_report(y_test, y_pred_dt))
dt_metrics = {
    "准确率": accuracy_score(y_test, y_pred_dt),
    "精确率": precision_score(y_test, y_pred_dt, average='binary'),
    "召回率": recall_score(y_test, y_pred_dt, average='binary'),
    "F1分数": f1_score(y_test, y_pred_dt, average='binary')
}
for k, v in dt_metrics.items():
    print(f"{k}: {v:.4f}")
# 9. 高斯朴素贝叶斯分类器
print("\n" + "="*60)
print("高斯朴素贝叶斯分类器")
print("="*60)
gnb = GaussianNB()
gnb.fit(X_train_scaled, y_train)
y_pred_gnb = gnb.predict(X_test_scaled)
print("混淆矩阵:")
print(confusion_matrix(y_test, y_pred_gnb))
print("\n分类报告:")
print(classification_report(y_test, y_pred_gnb))
gnb_metrics = {
    "准确率": accuracy_score(y_test, y_pred_gnb),
    "精确率": precision_score(y_test, y_pred_gnb, average='binary'),
    "召回率": recall_score(y_test, y_pred_gnb, average='binary'),
    "F1分数": f1_score(y_test, y_pred_gnb, average='binary')
}
for k, v in gnb_metrics.items():
    print(f"{k}: {v:.4f}")

结果:

@浙大疏锦行

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐