划分训练(80%)和测试集(20%) 在测试集上做疾病的预测,使用K近邻,支持向量机,随机森林,决策树,逻辑回归实现,选择AUC、正确率等指标评估五种算法的预测效果,并绘出五种算法的auc对比图,代码怎么写
时间: 2024-05-01 18:16:01 浏览: 146
好的,以下是一个简单的代码示例,用于划分训练集和测试集,并使用K近邻(KNN)、支持向量机(SVM)、随机森林(RF)、决策树(DT)和逻辑回归(LR)进行疾病预测,并评估各自的预测效果:
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score, accuracy_score
# 读取数据
data = pd.read_csv('data.csv')
# 划分训练集和测试集
train_data, test_data, train_labels, test_labels = train_test_split(
data.drop('disease', axis=1), data['disease'], test_size=0.2)
# 定义模型
models = {
'KNN': KNeighborsClassifier(),
'SVM': SVC(probability=True),
'RF': RandomForestClassifier(),
'DT': DecisionTreeClassifier(),
'LR': LogisticRegression()
}
# 训练模型并在测试集上进行预测
results = {}
for name, model in models.items():
model.fit(train_data, train_labels)
preds = model.predict(test_data)
probs = model.predict_proba(test_data)[:, 1]
auc = roc_auc_score(test_labels, probs)
acc = accuracy_score(test_labels, preds)
results[name] = {'AUC': auc, 'Accuracy': acc}
# 输出评估结果
print(pd.DataFrame(results).T)
# 绘制AUC对比图
import matplotlib.pyplot as plt
auc_scores = [result['AUC'] for result in results.values()]
plt.bar(list(models.keys()), auc_scores)
plt.xlabel('Model')
plt.ylabel('AUC')
plt.title('AUC Comparison')
plt.show()
```
其中,`data.csv` 是包含疾病和各种特征的训练数据集。我们首先使用 `train_test_split` 函数将其划分为训练集和测试集,然后定义了五种不同的分类算法,并在训练集上训练每个模型。接着,在测试集上进行预测,并计算模型的 AUC 和正确率。最后,我们输出了每个模型的评估结果,并绘制了一个 AUC 对比图,用于比较各个模型的预测效果。
阅读全文