# coding=utf-8
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from pylab import mpl
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import roc_curve
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_auc_score
def plot_roc_curve(fprs,tprs):
plt.figure(figsize=(8,6),dpi=80)
plt.plot(fprs,tprs)
plt.plot([0,1],linestyle='--')
plt.xticks(fontsize=13)
plt.yticks(fontsize=13)
plt.ylabel('TP rate',fontsize=15)
plt.xlabel('FP rate',fontsize=15)
plt.title('ROC曲线',fontsize=17)
plt.show()
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
df = pd.read_csv("../data/heart.csv")
print(df.info())
print(df.target.value_counts())
sns.countplot(x='target', data=df, palette="muted")
plt.xlabel("得病/未得病比例")
plt.show()
print(df.describe())
first = pd.get_dummies(df['cp'], prefix="cp")
second = pd.get_dummies(df['slope'], prefix="slope")
thrid = pd.get_dummies(df['thal'], prefix="thal")
df = pd.concat([df, first, second, thrid], axis=1)
df = df.drop(columns=['cp', 'slope', 'thal'])
print(df.head(3))
y = df.target.values
X = df.drop(['target'], axis=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=6)
standardScaler = StandardScaler()
standardScaler.fit(X_train)
X_train = standardScaler.transform(X_train)
X_test = standardScaler.transform(X_test)
rf_clf = RandomForestClassifier(n_estimators=500, random_state=666, oob_score=True, n_jobs=-1)
rf_clf.fit(X, y)
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
max_depth=None, max_features='auto', max_leaf_nodes=None,
min_impurity_decrease=0.0, min_impurity_split=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=500, n_jobs=-1,
oob_score=True, random_state=666, verbose=0, warm_start=False)
print(rf_clf.oob_score_)
print(rf_clf.score(X_test, y_test))
y_probabilities_rf = rf_clf.predict_proba(X_test)[:, 1]
print(roc_auc_score(y_test, y_probabilities_rf))
y_probabilities = rf_clf.predict_proba(X)[:, 1]
print(roc_auc_score(y, y_probabilities))
fprs4, tprs4, thresholds4 = roc_curve(y_test, y_probabilities_rf)
# 此处调用前面的绘制函数
plot_roc_curve(fprs4, tprs4)
rf_clf2 = RandomForestClassifier(n_estimators=500, max_leaf_nodes=16, random_state=666, oob_score=True, n_jobs=-1)
rf_clf2.fit(X,y)
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
max_depth=None, max_features='auto', max_leaf_nodes=16,
min_impurity_decrease=0.0, min_impurity_split=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=500, n_jobs=-1,
oob_score=True, random_state=666, verbose=0, warm_start=False)
没有合适的资源?快使用搜索试试~ 我知道了~
(python源码)完成基于sns预测心脏病算法实现
共4个文件
png:2个
py:1个
csv:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 12 浏览量
2024-05-15
16:10:45
上传
评论
收藏 32KB ZIP 举报
温馨提示
(python源码)[完成]基于sns预测心脏病算法实现:在Python中,使用seaborn(通常缩写为sns)库,结合pandas、matplotlib、seaborn以及机器学习库(如scikit-learn)来分析和预测心脏病。 数据准备:首先,你需要一个心脏病数据集。常见的数据集包括heart.csv(来自UCI机器学习仓库)。 数据加载和预处理:使用pandas加载数据集,并进行必要的预处理(如缺失值填充、特征编码等)。 数据探索:使用seaborn和matplotlib进行数据可视化,以了解数据的分布和特征之间的关系。 特征选择:选择对预测有贡献的特征。 模型训练:使用scikit-learn中的机器学习模型(如逻辑回归、随机森林等)进行训练。 模型评估:评估模型的性能(如准确度、召回率、F1分数等)。 预测:使用训练好的模型进行预测。
资源推荐
资源详情
资源评论
收起资源包目录
(python源码)[完成]基于sns预测心脏病算法实现.zip (4个子文件)
(python源码)[完成]基于sns预测心脏病算法实现
Figure_2.png 19KB
data
heart.csv 11KB
analysis
Analyze.py 3KB
Figure_1.png 11KB
共 4 条
- 1
资源评论
DRobot
- 粉丝: 936
- 资源: 150
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功