实验一 基于支持向量机实现激酶抑制剂的分类

一、 问题描述

激酶抑制剂是一种能够抑制激酶活性的化合物,在药物研发中具有重要意义,特别是在癌症治疗领域。蛋白激酶参与调节细胞的多个功能,其抑制剂的研发对于理解疾病机制和开发新疗法至关重要。本实验旨在利用支持向量机(SVM)算法对激酶抑制剂进行分类,数据集包含2013个样本,每个样本具有5个特征,并分为四类。

二、 解决方案

采用支持向量机(SVM)算法对激酶抑制剂进行分类。SVM是一种强大的分类算法,特别适用于高维数据的分类问题。这里使用Python的sklearn库来构建和训练SVM模型,并对模型的结果进行分析。

三、 实验步骤

1、导入相关的库和创建支持向量机实例

首先需要导入Python中必要的库,如numpy、pandas和sklearn。然后创建SVM实例,并设置相关参数。

2、使用sklearn库直接调用机器学习模型并实例化

利用sklearn库中的SVM分类器,将数据集划分为训练集和测试集,对模型进行训练和测试。

四、 结果分析

训练完成后,对模型的分类结果进行分析,包括准确率、混淆矩阵等指标,以评估模型的性能。下面是程序运行截图:

对运行结果的解释:

五、 核心代码

python 复制代码
# 导入必要的库,用于机器学习模型和数据处理
from sklearn.ensemble import AdaBoostRegressor, RandomForestRegressor, RandomForestClassifier
data_url = "http://lib.stat.cmu.edu/datasets/boston"
from numpy import array
from pandas import read_csv
from sklearn.model_selection import train_test_split
import pandas as pd
import numpy as np
from sklearn.preprocessing import OneHotEncoder, StandardScaler

# 从CSV文件中读取激酶数据
dataframe = read_csv("kinase_selected.csv", delimiter=',')

# 将数据框转换为numpy数组
dataset = dataframe.values

# 分离特征(X),排除第一列(假设是标签或ID)
X = dataset[:, 1:]

# 初始化标准化器,用于特征缩放
scaler = StandardScaler()

# 拟合标准化器并转换特征数据
X_scaled = scaler.fit_transform(X)

# 打印缩放后特征数据的形状
print(X_scaled.shape)

# 从数据框中提取特征名称,排除第一列
feature_names = dataframe.columns.values[1:]

# 将特征名称转换为numpy数组以便于处理
features = array(feature_names)

# 打印所有特征及其总数
print("All features:")
print(features)
print("length of features:", len(features))

# 从另一个CSV文件中读取标签数据
label = pd.read_csv('label_kinase_selected.csv', sep=',')

from sklearn import preprocessing
from sklearn.preprocessing import OneHotEncoder, StandardScaler

# 初始化标签编码器,用于将分类标签转换为数值
le = preprocessing.LabelEncoder()

# 选择标签数据框的最后一列作为目标变量
y = label.iloc[:, -1]

# 打印标签的形状
print(y.shape)

# 拟合标签编码器并将标签转换为数值格式
Y = le.fit_transform(y)

# 打印转换后的标签
print(Y)

# 打印标签数据框中"Binding_Modes"列的每个唯一值的计数
print(label['Binding_Modes'].value_counts())

from sklearn.model_selection import train_test_split

# 将数据集分为训练集和测试集
# 输入特征为X_scaled,输出标签为Y
X_train, X_test, Y_train, Y_test = train_test_split(X_scaled, Y, test_size=0.2, random_state=42, stratify=Y)

# 打印训练特征数据的维度和训练标签中类的数量
print("Feature data dimension: ", X_train.shape)
print("Num of classes: ", Y_train.shape)

# 从sklearn导入支持向量分类器
from sklearn.svm import SVC

# 初始化支持向量分类器
estimator = SVC()

# 在训练数据上拟合模型
estimator.fit(X_train, Y_train)

# 打印模型在训练数据上的准确率
print("train score:", estimator.score(X_train, Y_train))

# 打印模型在测试数据上的准确率
print("test score:", estimator.score(X_test, Y_test))
相关推荐
省四收割者10 分钟前
Go语言入门(10)-数组
数据结构·经验分享·笔记·vscode·算法·golang
lxmyzzs23 分钟前
【图像算法 - 21】慧眼识虫:基于深度学习与OpenCV的农田害虫智能识别系统
人工智能·深度学习·opencv·算法·yolo·目标检测·计算机视觉
KeithTsui25 分钟前
GCC C语言整数转换的理解(Understanding of Integer Conversions in C with GCC)
c语言·开发语言·算法
WSSWWWSSW1 小时前
Seaborn数据可视化实战:Seaborn时间序列可视化入门
python·信息可视化·数据分析·matplotlib·seaborn
云天徽上2 小时前
【数据可视化-96】使用 Pyecharts 绘制主题河流图(ThemeRiver):步骤与数据组织形式
开发语言·python·信息可视化·数据分析·pyecharts
codeyanwu2 小时前
nanoGPT 部署
python·深度学习·机器学习
欧阳小猜2 小时前
深度学习②【优化算法(重点!)、数据获取与模型训练全解析】
人工智能·深度学习·算法
小欣加油2 小时前
leetcode 904 水果成篮
c++·算法·leetcode
有Li3 小时前
CXR-LT 2024:一场关于基于胸部X线的长尾、多标签和零样本疾病分类的MICCAI挑战赛|文献速递-深度学习人工智能医疗图像
论文阅读·人工智能·算法·医学生
quaer3 小时前
print(2 ** 3)
开发语言·python