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 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 医学数据挖掘学习项目:他克莫司 -> 正文阅读

[人工智能]医学数据挖掘学习项目:他克莫司

目录

1. 报告

2. 代码1:从数据库中提取数据

lambda,匿名函数,快速定义单行函数,可以用在任何需要函数的地方。

pandas判断是否是空值NaN,isnull(),notnull()

pandas.reset_index()

pandas.astype()

pandas.Excel_Writer()输出到excel

mysql

pandas merge()方法

pandas rename()方法

pandas.drop_duplicates()方法

pandas DataFrame.sort_values()方法

pandas.groupby()方法

3. 代码2:初始方案数据清洗

pydotplus

pandas statsmodels

pylab

sklearn.model_selection

sklearn.metrics


1. 报告

know what, know how。知道是干什么的,怎么干的

目的:他克莫司用药日剂量

XGBoost, GBDT, Boosting, boosting,误分类样本的权值之和影响误差率,误差率影响分类器在最终分类器中的权重。

基分类器,h1的权重\alpha 1=\frac{1}{2}log\frac{1-\epsilon_{1}}{\epsilon_{1}}误差越大,权重越小

分类器:H(x)=\sum_{T}^{t=1}\alpha _{t}h_{t}(x)

样本权重更新:D_{1}(x)=\frac{D_{1}(x)e^{-\alpha _{1}y(x)h_{1}(x)}}{Z_{1}}

XGBoost输出变量重要性 -->xgb.importance返回由f分数测量的特征重要范围

stepwise regression逐步回归

propensity score倾向性评分 <--由于实验组和对照组两组病人的基线水平存在差异,倾向性评分匹配法消除数据集中的混杂因素。

==>两独立样本t检验:方差齐性检验,p,0.05;t检验/修正t检验

比较特征的差异显著性:连续特征,Mann-Whitney U检验;离散特征,卡方检验。

2. 代码1:从数据库中提取数据

(1) database:surgical_record

.ipynb文件为Jupyter notebook,是一个python交互式笔记本,包含代码、运行结果展示、其他内部设置

data: surgical_record['surgery_NAME'].str.contains('肾’)

  • .pandas.str.contains()筛选出包含特殊字符的数列,返回布尔值系列或索引
  • .numpy.unique()函数,去除列表或数组中重复的元素,并按元素从小到大返回一个新的无重复元素的新列表或元组。
  • .shape输出DataFrame行列数。shape[0] 行;shape[1] 列

lambda,匿名函数,快速定义单行函数,可以用在任何需要函数的地方。

lambda 参数 :操作(参数)

  • apply(),对数据框(DataFrame)(类似矩阵)的数据进行按行或按列操作时用apply(),默认axis=0,按行;axis=1,按列
  • map(),对series的每一个数据进行操作时用map()

np.nan,创建空值

pandas判断是否是空值NaN,isnull(),notnull()

pd.DataFrame([('bird',389), ('bird',24), ('mammal',80), ('mammal', np.nan)], index(行)=['falcon','parrot','lion','monkey'], columns=('class', 'max_speed')?)

classmax_speed
falconbird389
parrotbird24
lionmanmmal80.5
monkeyhmanmmalNaN

pandas.reset_index()

把就索引列添加为列,并使用心得顺序索引。drop参数=True,避免将旧索引添加为列,默认为False

  • pandas.set_index,把数据列设为索引列

pandas.astype()

因为多个表合并到一个表,输出列Excel表发生数据错误,e.g.数值型数据末尾变0,所以python强制类型转换。

df.astype('数据类型')

df['列名'].astype('数据类型')? --一列数据类型改变

pandas.Excel_Writer()输出到excel

writer=pd.ExcelWriter(project_path + '/data/data_from_mysql/df_检验序号索引.xlsx')
test_record_tcms.to_excel(writer)
writer.save()

(2) 用药医嘱表单

mysql

# 连接mysql数据库
conn = MySQLDB.connect(host='localhost', port=3306, user='root', password='123456', db='mdnov_ciip_ipharma_zdy', charset='UTF8')
cursor = conn.cursor()
cursor.execute("Select version()")
for i in cursor:
    print(i)

try:
    sql = 'select TEST_RECORD_ID,PROJECT_CODE,PROJECT_NAME,TEST_RESULT,RESULT_UNIT,IS_NORMAL,REFER_SCOPE from test_result;'
    test_result = pd.read_sql(sql, conn)
except MySQLDB.err.ProgrammingError as e:
    print('test_result Error is ' + str(e))
    sys.exit()

where子句,有条件的从表中选取数据

pandas DataFrame.head(),返回数据帧或序列的前n行(默认值为5)

pandas merge()方法

left,拼接的左侧DataFrame对象。

right,拼接的右侧DataFrame对象。

on,要加入的列或索引级别名称

how,inner,交集;outer,并集;left只用左侧;right只用右侧keys

pandas rename()方法

修改DataFrame的个别列名或索引,e.g. df.rename({'表1':'纬度'})

pandas.concat()函数

用来连接DataFrame对象,行列相同或行列不同,缺失部分为NaN

pandas.DataFrame.columns

返回列标签

(3) 检验表单

pandas.loc[行,列]?

e.g. temp.loc[0:2,'Drug_Name'],loc表示location,.loc[['Drug_Name', 'Project_Name']]

pandas.iloc[行号,列号]

e.g. [0:3, [4:6]],第3行取不到,第6列能取到

pandas.drop()函数

DataFrame删除一行或一列。默认axis=0,行;axis=1,列

pandas.drop_duplicates()方法

.drop_duplicates(subset='列名',keep='first',inplace='True'),删除DataFrame某列中重复项的函数

  • subset='列名1' 或 ['列名1','列名2']
  • keep='first' 或 'last',保留第一个或最后一个

pandas.isnull() 和 .notnull()

判断缺失值一般采用isnull()和notnull()。

.isnull().sum(),每列缺失值的数量

(4) 检验结果表单

pandas.DataFrame.replace(to_place, value)

将to_replace数值/字符串替换为value

pandas数据透视表pivot_table(data,values,index,columns,aggfunc='mean')

  • values,可以对需要的计算数据进行筛选
  • 每个pivot_table必须拥有一个index, index=['对手'],
  • columns,类似index可以设置列层次字段,它不是必要参数,作为一种分割数据的可选方式
  • aggfunc,可以设置我们对数据聚合时进行的函数操作

pandas DataFrame.sort_values()方法

.sort_values(by='##', axis=0, ascending=True, inplace=Flase),根据指定列数据排序

  • by,指定列名(axis=0,行) 或 索引名(axis=1,列)
  • ascending, 默认True,升序
  • inplace,默认False,排序后数据不替换原来的数据

(5) 诊断表单

pandas.groupby()方法

.groupby(by=['列名'], axis=0, as_index)

  • as_index按某一列分组,相同字段分到同一组。将分组列名作为输出索引
  • mean()方法求平均值

pandas statsmodels

传统频率学派统计方法

  • statsmodels.api:模型和方法
  • statsmodels.tsa.api:统计和测试
  • statsmodels.formula.api:模型,从公式和数据框创建模型

pandas DataFrame.describe()

用于查看一些基本的统计信息,e.g. 百分位数,均值,标准差

3. 代码2:初始方案数据清洗

pydotplus

pydotplus -->绘图,比Graphviz支持中文

pylab

pylab是matplotlib的一个子包,适合交互式绘图

pylab.mpl -->rcParams解决matplotlib无法显示中文或负号的情况

# 支持显示中文
mpl.rcParams['font.sans-serif'] = ['SimHei'] ##绘图显示中文
mpl.rcParams['axes.unicode_minus'] = False

matplotlib

  • .pyplot:绘图模块,让用户绘制2D图表。

  • .ticker:用于配置刻度定位和格式的类。其中Locater类根据数据限制和刻度位置的选择处理视图限制的自动缩放

  • .rc:设置当前的rcParams,e.g. linewidth,color

Ipython.display.image

显示图像,Ipython是一个python的交互式shell,比python shell好用。利用python进行科学计算和交互可视化的一个最佳平台

  • 强大的python交互式shell
  • 共Jupyter notebooks使用的一个Jupyter内核(Ipython notebook)

time.time()

获取当前时间

datetime.datetime.strptime(x, %Y-%m-%d %H:%M:%S)

将数据转换为日期的方法

datetime.timedelta(days=2)

对象代表两个时间之间的时间差,两个date或datetime对象相减可以返回一个timedelta对象。

TDM

治疗药物监测,测定药物浓度,therapeutic drug monitoring

bug

  1. 295,数据清洗-->删除没有tdm检测的病人,需要人工设置patient_id
  2. 312,

python list(range(9))

可以把range()返回的可迭代对象转化为一个列表

(2) 筛选初始方案中tdm符合终点事件的用药和tdm检测组合

(3) 筛选调整方案中tdm符合终点事件的用药和tdm检测组合

(4) 初始方案所有变量数据清洗

  • BMI:身体质量指数
  • DataFrame取多列数据用[]把多个列名括起来,[['drug_name', 'project_name']]

(5) 其他用药

start_time <= TDM

end_time >= tcms_3 days前

4. 代码3:调整方案数据清洗

Graphviz -->开源的强大绘图工具,编写dot脚本

%matplotlib inline -->用再Jupyter notebook中具体作用是当你调用matplotlib.pyplot的绘图函数plot()进行绘图时,或者生成一个figure画布的时候,可以直接在你的python console里面生成图像。

5. 代码4:初始&调整方案建模

sklearn.model_selection

.model_selection,主要是对数据的分割,以及与数据分割相关的功能

train_test_split方法,将原始数据集划分成train和test两部分

sklearn.metrics

  • accuracy_score -->所有分类正确的百分比,
  • .log_log,对数损失或交叉熵损失
  • confusion_matrix --> 混淆矩阵
predictual class

Actual

class

sklearn.train_test_split

用来随机划分样本数据为训练集和测试集

train_x, test_x, train_y, test_y = train_test_split(train_data,train_target,test_size=0.2,random_state=5)
  • train_data,待划分样本数据
  • train_target,待划分样本数据结果标签
  • test_size:测试集占比
  • random_state:设置随机数种子。若为0或不填,则每次得到的数据都不同。随机数种子用于生成伪随机数,真随机数是指现实物理现象。

sklearn分类器classifier和回归其regressor的区别

标签数据labeled data

  • classification:which category,识别物体属于哪一类。Identifying which category an object belongs to。应用:垃圾邮件检测,图像识别等。score函数计算的是精确度,accuracy_score --> mean accuracy
  • regression:quantity,预测与物体相关的连续值属性。Predicting a continuous-valued attribute associated with an object.应用:药物反应、股票价格。score函数计算的是R^{2},r2_score -->预测的r2决定系数
  • clustering: Automatic grouping of similar objects into sets.应用:用户细分,分组实验结果。
  • Dimensionality relation:降维,reducing the number of random variables to consider。应用:可视化,提高效率
  • Model selection: comparing, validating and choosing parameters and models. 应用:通过参数调整提高精度
  • Processing:Feature extraction and normalization.应用:转换输入数据,例如用于机器学习算法的文本

sklearn选择合适的算法/sklearn中各种分类器regressor都适用于什么样的数据

选择合适的ML Algorithms。不存在一个再各方面都最好的模型/算法,需要针对具体问题,找到最好的机器学习算法

  1. 数据分析(Exploratory Data Analysis)。在选择具体的算法之前,最好对数据中每一个特征的模式和产生原理有一定的了解。e.g. 特征是连续的(real-valued)还是离散的(discrete)?
  2. 特征工程(Feature Engineering)。特征工程(根据现有的特征,制造出新的有价值的特征)决定了机器学习能力的上限,各种算法不过是在逼近这个上限而已。不同的ML Algorithms一般会有其对应的不同的特征工程。在实践中,特征工程,调整算法参数这两个步骤常常往复进行。
  3. 具体算法选择。3.1) General Linear Models(high bias高偏差, low variance低方差) 如果对超参数没什么特别要求,可以通过自动的交叉验证来确定超参的值。线性分类器中,最好用的是logistic regression和相应的logistic regression CV。3.2) Ensemble methods。Bagging(random forest),用数据不同部分训练一群high variance算法来降低算法整体的方差;boosting(XGBoost),通过以此建立high bias算法来提升整体的variance。3.3) SVM。sum表现不如XGBoost。3.4) Neural Network。sklearn的神经网络库不如tensorflow、keras、pytorch、theane等

python auto_ml

用于生产和分析的自动化机器学习模块,包括:分析、特征工程、自动缩放、特征选择、模型选择、超参优化、大数据

from auto_ml import Predictor
from auto_ml.utils import get_boston_dataset
from auto_ml.utils_models import load_ml_model

误差(error),偏差(bias),方差(variance)有什么区别和联系?

error=bias + variance,反映的是整个模型的准确度。

  • bias,偏差。描述的是样本拟合出的model的输出预测结果的期望与样本真实结果的差距。简单讲,就是样本你和的好不好。(training set) 要想在bias上表现好,low bias,就得复杂化模型,增加模型的参数,但这样容易过拟合(overfitting),过拟合容易使正确的数据错分,造成方差过大high variance,点很分散。
  • variance,方差。描述的是样本上训练出来的模型在测试集上的表现,要想在variance上表现好,low variance,就要简化模型,减少模型的参数,但这样容易欠拟合(unfitting),欠拟合对应上面的high bias,错误的数据被误认为正确,点偏离中心。
  • bias可以理解为偏见,对数据是否一视同仁,高偏见high bias,准确但分散。high bias+low variance --> model太简陋,准确度低;low bias + high variance --> model普适性差
  • 在训练集上,可以进行交叉验证(cross-validation)。一种方法叫k-fold cross validation(k-折交叉验证);初始样本分割成k个子样本,一个单独的子样本被保留作为验证模型的数据,其他k-1个样本用来训练。交叉验证重复k次,每个子样本验证一次,平均k次的结果或使用其他结合方式,最终得到一个单一估测 ==> 降低异常数据对模型的影响。k大时,偏差越小,方差越大;k小时,偏差越大,方差越小。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-07 13:51:15  更:2021-10-07 13:51:37 
 
开发: 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/27 10:27:04-

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