IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 机器学习入门-肝病预测分析 -> 正文阅读

[人工智能]机器学习入门-肝病预测分析

导入函数和支持包

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import IsolationForest

1、数据描述

该数据集包含416条肝脏患者记录和167条非肝脏患者记录,从印度安得拉邦东北部收集的。选择器是用于划分为组(肝脏患者与否)的类标签。该数据集包含441份男性患者记录和142份女性患者记录。任何年龄超过89岁的患者都被列为年龄"90"。
下载地址:UCI数据库

2、载入数据

因为数据集的特征与数据部分是分开的,因此我们需要人为增加上去。

data_col=['age', 'gender', 'total Bilirubin', 'direct Bilirubin'
          , 'total proteins', 'albumin', 'A/G ratio', 'SGPT','SGOT','Alkphos','Type']
data=pd.read_csv('Indian LiverPatient.csv',names=data_col)#加入你自己的路径,或者放在同一文件夹下也可

3、查看Type类型的数量

data['Type'].value_counts()#416条肝脏患者记录和167条非肝脏患者记录

416条肝脏患者记录和167条非肝脏患者记录

4、检查是否存在空值

data.isnull().sum()

在这里插入图片描述
可以看到Alkphos中存在空值

5、查看描述性统计量

data.describe()

在这里插入图片描述
对于上面的空值简单采取平均数填充

data=data.fillna(0.930000)

删除data中的重复值

data=data.drop_duplicates()

对于gender进行哑变量处理,机器学习中不支持中文或者空值的出现
在这里插入图片描述

dummy_gender= pd.get_dummies(data.iloc[:,1],prefix = "gender")
data= pd.concat([data,dummy_gender.iloc[:,0:2]], axis= 1)
data_new=data.drop(['gender'],axis=1)#获取新的特征并合并到原来的表上,并删除原来的gender列

6、画出热力图并分析特征相关性

def corr_map(df):
    var_corr = df.corr()
    mask = np.zeros_like(var_corr, dtype=np.bool)
    mask[np.triu_indices_from(mask)] = True
    cmap = sns.diverging_palette(220, 10, as_cmap=True)
    f, ax = plt.subplots(figsize=(20, 12))
    sns.set(font_scale=1)
    sns.heatmap(var_corr, mask=mask, cmap=cmap, vmax=1, center=0
               ,square=True, linewidths=.5, cbar_kws={"shrink": .5}
               ,annot=True,annot_kws={'size':12,'weight':'bold', 'color':'c'})
    plt.show()
corr_map(data_new)

在这里插入图片描述

7、对数据进行标准化

from sklearn import preprocessing
from sklearn.preprocessing import StandardScaler
features = ['age','gender_Female', 'gender_Male','total Bilirubin', 'direct Bilirubin', 'total proteins',
       'albumin', 'A/G ratio', 'SGPT', 'SGOT', 'Alkphos']
data_gyh= data_new[features]
data_gyh[features] = StandardScaler().fit_transform(data_gyh)
print(data_gyh.shape)
data_gyh.head()

8、划分数据集并进行模型的训练

X, y = data_new.iloc[:, 1:-1], data_new.iloc[:, -1] # 把数据与标签拆分开来
X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=0.3, random_state=0) 
from sklearn.ensemble import RandomForestClassifier# 使用随机森林分类
clf = RandomForestClassifier()
clf.fit(X_train,y_train) 
print(clf)
from sklearn import metrics
y_predict = clf.predict(X_test)
print(metrics.classification_report(y_test, y_predict))#输出模型的报告

在这里插入图片描述

9、模型调参

from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import cross_val_score

调整树的棵树参数得到最佳参数

scorel = []
for i in range(0,200,10):
    rfc = RandomForestClassifier(n_estimators=i+1,
                                 n_jobs=-1,
                                 random_state=90)
    score = cross_val_score(rfc,X_train,y_train,cv=10).mean()
    scorel.append(score)

print(max(scorel),(scorel.index(max(scorel))*10)+1)
plt.figure(figsize=[20,5])
plt.plot(range(1,201,10),scorel)
plt.show()

在这里插入图片描述
调整分割内部节点所需的最小样本数

scorel = []
for i in range(3,50):
    rfc = RandomForestClassifier(n_estimators=71,
                                 min_samples_split=i,
                                 n_jobs=-1,
                                 random_state=90)
    score = cross_val_score(rfc,X_train,y_train,cv=10).mean()
    scorel.append(score)

print(max(scorel),([*range(3,50)][scorel.index(max(scorel))]))
plt.figure(figsize=[20,5])
plt.plot(range(3,50),scorel)
plt.show()

在这里插入图片描述

10、输出特征重要性

importances = clf.feature_importances_
#计算随机森林中所有的树的每个变量的重要性的标准差 
std = np.std([tree.feature_importances_ for tree in clf.estimators_],axis=0)
#按照变量的重要性排序后的索引 
indices = np.argsort(importances)[::-1]
plt.figure()
plt.figure(figsize=(10,5))
plt.title("Feature importances")
plt.bar(range(X_train.shape[1]), importances[indices], color="c", yerr=std[indices], align="center")
plt.xticks(fontsize=14)
plt.xticks(range(X_train.shape[1]),data_new.columns.values[:-1][indices],rotation=40)
plt.xlim([-1,X_train.shape[1]])
plt.tight_layout()
plt.show()

在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-01-14 01:58:30  更:2022-01-14 02:01:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 22:33:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码