机器学习基础—集成学习Task1

说明:首先感谢Datawhale,一个专注于AI领域的开源组织,一次偶然的机会接触到了Datawhale,在其交流群、论坛以及公开课中学习到了很多有关AI的内容,感谢本次公开课程集成学习(上)的组织者们,感谢生滚牛牛粥团队的各位成员,最后要特别感谢一下猪猪,猪猪的耐心指导解决了我很多困惑,爱您。作者本人目前研一,专业为环境科学与工程。本文意义不仅仅是课程学习的汇报,同时也是结合自身研究方向的成果展示,希望各位给予批评指正。


前言

说明:每章节前半部分来于Datawhale的教程教学部分,其主要目的是为了配合处理自己数据时方便对照。本人数据为qHTS assay to identify small molecule antagonists of the thyroid receptor (TR) signaling pathway. 来源于U.S. Tox21 Program.其中特征通过EPIWEB 4.1, Algorithm Builder. 软件计算、整理获得的分子指纹(线性自由能)


一、Datawhale案例展示及代码分析

1.回归

# 引入相关科学计算包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt #画图
%matplotlib inline  # 魔法函数
plt.style.use("ggplot")      
import seaborn as sns #画图

首先,我们先来看看有监督学习中回归的例子,我们使用sklearn内置数据集Boston房价数据集。sklearn中所有内置数据集都封装在datasets对象内:
返回的对象有:

  • data:特征X的矩阵(ndarray)
  • target:因变量的向量(ndarray)
  • feature_names:特征名称(ndarray)
from sklearn import datasets
boston = datasets.load_boston()    # 返回一个类似于字典的类
X = boston.data                    # 由于作者数据由csv导入因此直接pandas
y = boston.target                  # 导入DataFrame并没有.data/.target功能
features = boston.feature_names    # 也因此通常需要使用.columns
boston_data = pd.DataFrame(X,columns=features)
boston_data["Price"] = y
boston_data.head()                 # 查看数据前5

.head() 输出:
.head()以查看数据前五行

sns.scatterplot(boston_data['NOX'],boston_data['Price'],color="r",alpha=0.6)
plt.title("Price~NOX")
plt.show()

绘图结果:
数据可视化

2.分类

from sklearn import datasets     # 分类案例导入的是鸢尾花数据
iris = datasets.load_iris()
X = iris.data
y = iris.target
features = iris.feature_names
iris_data = pd.DataFrame(X,columns=features)
iris_data['target'] = y
iris_data.head()                 # 同样是.head()查看前5行此处不再展示结果
# 可视化特征
marker = ['s','x','o']
for index,c in enumerate(np.unique(y)):
    plt.scatter(x=iris_data.loc[y==c,"sepal length (cm)"],y=iris_data.loc[y==c,"sepal width (cm)"],alpha=0.8,label=c,marker=marker[c])
plt.xlabel("sepal length (cm)")
plt.ylabel("sepal width (cm)")
plt.legend()
plt.show()

绘图结果:
数据可视化
我们可以看到:每种不同的颜色和点的样式为一种类型的鸢尾花,数据集有三种不同类型的鸢尾花。因此因变量是一个类别变量,因此通过特征预测鸢尾花类别的问题是一个分类问题。
各个特征的相关解释:

  • sepal length (cm):花萼长度(厘米)
  • sepal width (cm):花萼宽度(厘米)
  • petal length (cm):花瓣长度(厘米)
  • petal width (cm):花瓣宽度(厘米)

由于作者数据集虽可能再应用域问题方面涉及聚类,但由于尚未掌握且本次课程中聚类算法在后续课程不再介绍因此舍去该内容。


二、个人数据处理分析

1.回归

首先导入pandas读取位于桌面的数据集,即666.csv。由于数据集并不是字典的形式,因此需要自己对特征矩阵和标签进行提取。

import pandas as pd
data = pd.read_csv(r"C:\Users\Desktop\666.csv")
X = data.iloc[:,1:]
Y = data.iloc[:,0]

同样选择一个特征向量作图,当前数据的因变量同样为连续型变量

sns.scatterplot(X['MLOGP'],Y,color="r",alpha=0.6)
plt.title("Price~NOX")
plt.show()

半数抑制浓度为连续型变量(回归):
数据可视化

2.分类

本数据集同样带有分类标签,即因变量可作为离散型变量,化合物(小分子化合物)针对甲状腺激素受体信号通路是作为激活剂(0)亦或是拮抗剂(1)。

marker = ['s','x']
for index,c in enumerate(np.unique(y)):
    plt.scatter(x=X.loc[y==c,"MW"],y=X.loc[y==c,"AMW"],alpha=0.8,label=c,marker=marker[c]) 
plt.xlabel("MW")   # MW: molecular weight           分子量
plt.ylabel("AMW")  # AMW:average molecular weight  平均分子量
plt.legend()
plt.show()

根据分子量进行分类:
数据可视化
这里其实并未分类,特征选取的并不好,分子量、平均分子量其实可以理解为同一种特征,因此二者也有一定的共线性,二者的分布也相似


总结

本次内容初步展示了小分子化合物对于甲状腺受体信号通路的不同作用以及抑制作用程度基于回归、分类的初步数据可视化展示,后续课程作者数据结合相关模型后相比课程内容可能还要具体情况具体分析。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值