肝炎数据集分析

import numpy as np
import pandas as pd
df = pd.read_csv(r'hepatitis.data',encoding='utf-8')
# print(df.head())
df.columns=['是否生还', '年龄', '性别', '类固醇', '抗病毒药','疲惫','不适','厌食','肝大','肝硬化','脾可触','蛛状','腹腔积水','静脉曲张','胆红素'
           ,'碱性磷酸酯','谷草转氨酶','血蛋白','凝血酶原时间','组织学']
# print(df.head())
#查看数据的总体情况:
print(df.shape)
print(df.describe())
#数值替换
df=df.replace('?',np.nan)
df[['是否生还', '年龄', '性别', '类固醇', '抗病毒药','疲惫','不适','厌食','肝大','肝硬化','脾可触','蛛状','腹腔积水','静脉曲张','胆红素'
           ,'碱性磷酸酯','谷草转氨酶','血蛋白','凝血酶原时间','组织学']]=df[['是否生还', '年龄', '性别', '类固醇', '抗病毒药','疲惫','不适','厌食','肝大','肝硬化','脾可触','蛛状','腹腔积水','静脉曲张','胆红素'
           ,'碱性磷酸酯','谷草转氨酶','血蛋白','凝血酶原时间','组织学']].astype('float')

print(df.info())


#开始填充空缺值
df_mode=['类固醇','疲惫','不适','厌食','肝大','肝硬化','脾可触','蛛状','腹腔积水','静脉曲张']
for i in df_mode:
    df.loc[:,i]=df.loc[:,i].fillna(df.loc[:,i].mode()[0])
#数据填充
#查看众数
num_zhong=df.loc[:,['类固醇','疲惫','不适','厌食','肝大','肝硬化','脾可触','蛛状','腹腔积水','静脉曲张']].mode()
print(num_zhong)
#众数填充
df_mode=['类固醇','疲惫','不适','厌食','肝大','肝硬化','脾可触','蛛状','腹腔积水','静脉曲张']
for i in df_mode:
    df.loc[:,i]=df.loc[:,i].fillna(df.loc[:,i].mode()[0])
df_mean=['胆红素','碱性磷酸酯','谷草转氨酶','血蛋白','凝血酶原时间']
#均值填充
for i in df_mean:
    df.loc[:,i]=df.loc[:,i].fillna(df.loc[:,i].mean())
print(df.isnull().sum())
#数据分析
from matplotlib import pyplot as plt

import seaborn as sns
sns.set()
'''1、计算数据集中的 治愈/死亡 病例占比

(在“是否生还”这一列中,1代表死亡病例,2代表治愈病例。)
'''

df_counts=df['是否生还'].replace([1,2],['死亡','治愈']).value_counts()
print(df_counts)
print(df['是否生还'].replace([1,2],['死亡','治愈']).value_counts(normalize=True))
explode = (0, 0.2)  # 各类别的偏移半径
color = ['g', 'r']
labels =['治愈','死亡']
plt.pie(df_counts, colors=color, explode=explode,labels=labels,
         shadow=True, autopct='%1.1f%%')     #设置阴影,偏移度,颜色
# 饼状图呈正圆

plt.axis('equal')
plt.legend()
#病患者年龄的各项主要数据:
df_age=df['年龄'].agg(['min','max','mean'])
print(df_age)
#死亡病例年龄的各项主要数据:

df_age_dead = df[df['是否生还']==1]['年龄'].agg(['min','max','mean'])
print(df_age_dead)

#决策树
from sklearn import tree
from sklearn.model_selection import train_test_split
df_x=df.drop(labels='是否生还',axis=1)
df_y=df.loc[:,'是否生还']
print(df_y.head())
print(df_x.head())
#这里我们指定了拆分系数为0.3,也是说将7/10的数据作为训练集,剩下3/10的数据作为测试集。
X_train, X_test, Y_train, Y_test = train_test_split(df_x,df_y,test_size=0.3)
clf = tree.DecisionTreeClassifier(criterion="entropy")
clf = clf.fit(X_train, Y_train)
#查看一下在测试集上的准确度
score = clf.score(X_test, Y_test)
print('决策树的得分情况',score)

#使用GridSearchCV 网格搜索对决策树进行调参并返回最佳参数:

#先计算最优深度:

from sklearn.model_selection import GridSearchCV
from sklearn.tree import DecisionTreeClassifier, export_graphviz
tree_params = {'max_depth': range(5, 12)}

locally_best_tree = GridSearchCV(DecisionTreeClassifier(random_state=17),
                                 tree_params, cv=5)

locally_best_tree.fit(X_train, Y_train)
print("最优深度:{}".format(locally_best_tree.best_params_))
#设置最优深度为6后,重新计算得分情况:
clf = tree.DecisionTreeClassifier(criterion="entropy",max_depth=6, random_state=17)
clf = clf.fit(X_train, Y_train)
score = clf.score(X_test, Y_test)
print("最优深度下的得分情况:{}".format(score))
'''
#根据结果,我们可以画出一个决策树
feature_name=[ '年龄', '性别', '类固醇', '抗病毒药','疲惫','不适','厌食','肝大','肝硬化','脾可触','蛛状','腹腔积水','静脉曲张','胆红素'
           ,'碱性磷酸酯','谷草转氨酶','血蛋白','凝血酶原时间','组织学']
import graphviz
clf = tree.DecisionTreeClassifier(criterion="entropy",max_depth=6, random_state=17)
clf = clf.fit(X_train, Y_train)
dot_data = tree.export_graphviz(clf
,out_file = None
,feature_names= feature_name
,class_names=["病逝","治愈"]
,filled=True
,rounded=True
)
graph = graphviz.Source(dot_data)
print(graph)
'''
#建立随机森林模型进行数据分析
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators=100, random_state=17)
rf.fit(X_train, Y_train)
#查看拟合的得分情况:
score = rf.score(X_test, Y_test)
print("随机森林的得分情况:{}".format(score))

#朴素贝叶斯分类
from sklearn.naive_bayes import GaussianNB

nb_model = GaussianNB() #高斯朴素贝叶斯,参数设置默认状态

nb_model.fit(X_train, Y_train) #使用训练集训练模型
score = nb_model.score(X_test, Y_test)
print('贝叶斯下得分情况',score)

'''
然后是KNN分类器:

from sklearn.neighbors import KNeighborsClassifier

knn_model = KNeighborsClassifier(n_neighbors=1)

knn_model.fit(feature_train,target_train) #使用训练集训练模型

predict_results_knn = knn_model.predict(feature_test) #使用模型对测试集进行预测

#查看预测结果

print("predict_results:",predict_results_knn)

print("target_test:",target_test)

print(accuracy_score(predict_results_knn,target_test))

其中,KNeighborClassifier的具体参数包括:

(1) n_neighbors :KNN中的k值,默认值是5

(2) weights :近邻权,标识每个样本的K个近邻样本的权重,可选’uniform’/‘distance’或自定义权重。

(3) metric :距离度量方法
————————————————
版权声明:本文为CSDN博主「蒙氏宝宝」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_33423069/article/details/114054335'''

数据集地址
github地址:git
https://archive.ics.uci.edu/ml/datasets/Hepatitis

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
背景描述 肝硬化是由长期的肝脏损伤引起的,导致广泛的疤痕,通常是由肝炎或慢性饮酒等疾病引起的。所提供的数据来源于梅奥诊所1974年至1984年进行的一项关于原发性胆汁性肝硬化(PBC)的研究。 预处理 1.删除“药物”列中存在未命中值(NA)的所有行 2.用平均结果输入缺失值 3.所有类别属性的一个热编码 问题描述 1974年至1984年间,424名PBC患者转诊至梅奥诊所,符合测试药物D-青霉素的随机安慰剂对照试验的资格。其中,最初的312名患者参加了试验,他们的数据大多很全面。其余112名患者没有参加临床试验,但同意记录基本指标并进行生存跟踪。其中6名患者在确诊后很快就无法追踪,除了312名参与随机试验的患者外,还留下了106名患者的数据。 字段介绍 ID: unique identifier N_Days: 从登记到1986年7月死亡、移植或研究分析时间的较早者之间的天数 Status: 患者C(审查)、CL(因肝脏tx而审查)或D(死亡)的状态 Drug: 药物类型D-青霉素或安慰剂 Age: age in [days] Sex: M (male) or F (female) Ascites: 是否存在腹水N(否)或Y(是) Hepatomegaly: 是否存在肝肿大N(否)或Y(是) Spiders: presence of spiders N (No) or Y (Yes) Edema:存在水肿N(无水肿且无水肿利尿剂治疗)、S(无利尿剂的水肿或通过利尿剂解决的水肿)或Y(尽管有利尿剂疗法的水肿) Bilirubin: 血清胆红素,单位为[mg/dl] Cholesterol: 血清胆固醇,单位为[mg/dl] Albumin: 白蛋白[gm/dl] Copper: 尿铜[微克/天] Alk_Phos: [单位/升]的碱性磷酸酶 SGOT: SGOT in [U/ml] Triglycerides: triglicerides in [mg/dl] Platelets: 甘油三酯含量[mg/dl] Prothrombin: 凝血酶原时间(秒) 引用格式 @misc{Cirrhosis3291, title = { 肝硬化患者生存预测 }, author = { z }, howpublished = { \url{https://www.heywhale.com/mw/dataset/654c7e570a2729882028b812} }, year = { 2023 }, }
目录列表: 2dplanes.arff abalone.arff ailerons.arff Amazon_initial_50_30_10000.arff anneal.arff anneal.ORIG.arff arrhythmia.arff audiology.arff australian.arff auto93.arff autoHorse.arff autoMpg.arff autoPrice.arff autos.arff auto_price.arff balance-scale.arff bank.arff bank32nh.arff bank8FM.arff baskball.arff bodyfat.arff bolts.arff breast-cancer.arff breast-w.arff breastTumor.arff bridges_version1.arff bridges_version2.arff cal_housing.arff car.arff cholesterol.arff cleveland.arff cloud.arff cmc.arff colic.arff colic.ORIG.arff contact-lenses.arff cpu.arff cpu.with.vendor.arff cpu_act.arff cpu_small.arff credit-a.arff credit-g.arff cylinder-bands.arff delta_ailerons.arff delta_elevators.arff dermatology.arff detroit.arff diabetes.arff diabetes_numeric.arff echoMonths.arff ecoli.arff elevators.arff elusage.arff eucalyptus.arff eye_movements.arff fishcatch.arff flags.arff fried.arff fruitfly.arff gascons.arff glass.arff grub-damage.arff heart-c.arff heart-h.arff heart-statlog.arff hepatitis.arff house_16H.arff house_8L.arff housing.arff hungarian.arff hypothyroid.arff ionosphere.arff iris.2D.arff iris.arff kdd_coil_test-1.arff kdd_coil_test-2.arff kdd_coil_test-3.arff kdd_coil_test-4.arff kdd_coil_test-5.arff kdd_coil_test-6.arff kdd_coil_test-7.arff kdd_coil_train-1.arff kdd_coil_train-3.arff kdd_coil_train-4.arff kdd_coil_train-5.arff kdd_coil_train-6.arff kdd_coil_train-7.arff kdd_el_nino-small.arff kdd_internet_usage.arff kdd_ipums_la_97-small.arff kdd_ipums_la_98-small.arff kdd_ipums_la_99-small.arff kdd_JapaneseVowels_test.arff kdd_JapaneseVowels_train.arff kdd_synthetic_control.arff kdd_SyskillWebert-Bands.arff kdd_SyskillWebert-BioMedical.arff kdd_SyskillWebert-Goats.arff kdd_SyskillWebert-Sheep.arff kdd_UNIX_user_data.arff kin8nm.arff kr-vs-kp.arff labor.arff landsat_test.arff landsat_train.arff letter.arff liver-disorders.arff longley.arff lowbwt.arff lung-cancer.arff lymph.arff machine_cpu.arff mbagrade.arff meta.arff mfeat-factors.arff mfeat-fourier.arff mfeat-karhunen.arff mfeat-morphological.arff mfeat-pixel.arff mfeat-zernike.arff molecular-biology_promoters.arff monks-problems-1_test.arff monks-problems-1_train.arff monks-problems-2_test.arff monks-problems-2_train.arff monks-problems-3_test.arff monks-problems-3_train.arff mushroom.arff mv.arff nursery.arff optdigits.arff page-blocks.arff pasture.arff pbc.arff pendigits.arff pharynx.arff pol.arff pollution.arff postoperative-patient-data.arff primary-tumor.arff puma32H.arff puma8NH.arff pwLinear.arff pyrim.arff quake.arff ReutersCorn-test.arff ReutersCorn-train.arff ReutersGrain-test.arff ReutersGrain-train.arff schlvote.arff segment-challenge.arff segment-test.arff segment.arff sensory.arff servo.arff sick.arff sleep.arff solar-flare_1.arff solar-flare_2.arff sonar.arff soybean.arff spambase.arff spectf_test.arff spectf_train.arff spectrometer.arff spect_test.arff spect_train.arff splice.arff sponge.arff squash-stored.arff squash-unstored.arff stock.arff strike.arff supermarket.arff triazines.arff unbalanced.arff vehicle.arff veteran.arff vineyard.arff vote.arff vowel.arff water-treatment.arff waveform-5000.arff weather.nominal.arff weather.numeric.arff white-clover.arff wine.arff wisconsin.arff zoo.arff

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YingJingh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值