分子AI預測賽筆記

#AI夏令營 #Datawhale #夏令營

Taks1 跑通baseline

根據task1跑通baseline

注冊賬號

直接注冊或登錄百度賬號,etc

fork 項目

零基礎入門 Ai 數據挖掘競賽-速通 Baseline - 飛槳AI Studio星河社區

啟動項目?

選擇運行環境,并點擊確定,沒有特殊要求就默認的基礎版就可以了

等待片刻,等待在線項目啟動

運行項目代碼

點擊 運行全部Cell

程序運行完生成文件 submit.csv

這個文件就最終提交的文件。

?Taks2 賽題深入解析

理解賽題,了解機器學習競賽通用流程

數據字段理解?

Docs

對 Smiles、Assay (DC50/Dmax)、Assay (Protac to Target, IC50)、Assay (Cellular activities, IC5、Article DOI、InChI字段學習分析

預測目標

選手需要預測PROTACs的降解能力,具體來說,就是預測Label字段的值。

根據DC50Dmax的值來判斷降解能力的好壞:如果DC50大于100nM且Dmax小于80%,則Label為0;如果DC50小于等于100nM或Dmax大于等于80%,則Label為1。

零基礎入門AI(機器學習)競賽 - 飛書云文檔
https://datawhaler.feishu.cn/wiki/Ue7swBbiJiBhsdk5SupcqfL7nLX

Docs

Task3初步調試參數

學習9群助教 【溫酒相隨】原創, 九月助教編輯調整, 首發于B站~

https://www.bilibili.com/read/cv35897986/?jump_opus=1

導入庫、訓練集和測試集

# 1. 導入需要用到的相關庫
# 導入 pandas 庫,用于數據處理和分析
import pandas as pd
# 導入 numpy 庫,用于科學計算和多維數組操作
import numpy as np
# 從 lightgbm 模塊中導入 LGBMClassifier 類
from lightgbm import LGBMClassifier# 2. 讀取訓練集和測試集
# 使用 read_excel() 函數從文件中讀取訓練集數據,文件名為 'traindata-new.xlsx'
train = pd.read_excel('./data/train.xlsx')
# 使用 read_excel() 函數從文件中讀取測試集數據,文件名為 'testdata-new.xlsx'
test = pd.read_excel('./data/test.xlsx')
train

?查看數據類型

data = train.info()data

部分數據的數據項比較少。可以篩掉減少擬合

# 篩選
train = train.iloc[:,1:]
test = test.iloc[:,1:]
# 行保留 列從第一個下標1開始
# train['lan'].value_counts()# language

查看object類型的列表


# 查看object類型的列表
train.select_dtypes(include = 'object').columns

缺失值查看

# 缺失值查看temp = train.isnull().sum()temp[temp > 0]

唯一值個數判斷?

# 唯一值個數判斷
# fea = train.columns
fea = train.columns.tolist()
fea

?輸出唯一值

# 輸出唯一值for f in fea:print(f,train[f].nunique());# nunique() 統計列中的唯一值

?篩選

# 定義了一個空列表cols,用于存儲在測試數據集中非空值小于10個的列名。
cols = []
for f in test.columns:if test[f].notnull().sum() < 10:cols.append(f)
cols# 使用drop方法從訓練集和測試集中刪除了這些列,以避免在后續的分析或建模中使用這些包含大量缺失值的列
train = train.drop(cols, axis=1)
test = test.drop(cols, axis=1)
# 使用pd.concat將清洗后的訓練集和測試集合并成一個名為data的DataFrame,便于進行統一的特征工程處理
data = pd.concat([train, test], axis=0, ignore_index=True)
newData = data.columns[2:]

將SMILES轉換為分子對象列表,并轉換為SMILES字符串列表??

data['smiles_list'] = data['Smiles'].apply(lambda x:[Chem.MolToSmiles(mol, isomericSmiles=True) for mol in [Chem.MolFromSmiles(x)]])
data['smiles_list'] = data['smiles_list'].map(lambda x: ' '.join(x))  

用TfidfVectorizer計算TF-IDF?

tfidf = TfidfVectorizer(max_df = 0.9, min_df = 1, sublinear_tf = True)res = tfidf.fit_transform(data['smiles_list'])

轉為dataframe格式?

# 將結果轉為dataframe格式
tfidf_df = pd.DataFrame(res.toarray())
tfidf_df.columns = [f'smiles_tfidf_{i}' for i in range(tfidf_df.shape[1])]
# 按列合并到data數據
data = pd.concat([data, tfidf_df], axis=1)

自然數編碼

# 自然數編碼
def label_encode(series):unique = list(series.unique())return series.map(dict(zip(unique, range(series.nunique()))))
# 對每個類轉換為其編碼
for col in cols:if data[col].dtype == 'object':data[col]  = label_encode(data[col])

構建訓練集和測試集?

# 提取data中label行不為空的,將其作為train的數據并更新索引
train = data[data.Label.notnull()].reset_index(drop=True)
# 提取data中label行為空的,將其作為teat的數據并更新索引
test = data[data.Label.isnull()].reset_index(drop=True)
# 特征篩選
features = [f for f in train.columns if f not in ['uuid','Label','smiles_list']]
# 構建訓練集和測試集
x_train = train[features]
x_test = test[features]
# 訓練集標簽
y_train = train['Label'].astype(int)

使用采用5折交叉驗證(KFold(n_splits=5

def cv_model(clf, train_x, train_y, test_x, clf_name, seed=2022):# 進行5折交叉驗證kf = KFold(n_splits=5, shuffle=True, random_state=seed)train = np.zeros(train_x.shape[0])test = np.zeros(test_x.shape[0])cv_scores = []# 每一折數據采用訓練索引和驗證索引來分割訓練集和驗證集for i, (train_index, valid_index) in enumerate(kf.split(train_x, train_y)):print('************************************ {} {}************************************'.format(str(i+1), str(seed)))trn_x, trn_y, val_x, val_y = train_x.iloc[train_index], train_y[train_index], train_x.iloc[valid_index], train_y[valid_index]# 配置CatBoost分類器的參數params = {'learning_rate': 0.05, 'depth': 8, 'l2_leaf_reg': 10, 'bootstrap_type':'Bernoulli','random_seed':seed,'od_type': 'Iter', 'od_wait': 100, 'random_seed': 11, 'allow_writing_files': False, 'task_type':'CPU'}# 使用CatBoost分類器訓練模型model = clf(iterations=20000, **params, eval_metric='AUC')model.fit(trn_x, trn_y, eval_set=(val_x, val_y),metric_period=100,cat_features=[],use_best_model=True,verbose=1)val_pred  = model.predict_proba(val_x)[:,1]test_pred = model.predict_proba(test_x)[:,1]train[valid_index] = val_predtest += test_pred / kf.n_splitscv_scores.append(f1_score(val_y, np.where(val_pred>0.5, 1, 0)))print(cv_scores)print("%s_score_list:" % clf_name, cv_scores)print("%s_score_mean:" % clf_name, np.mean(cv_scores))print("%s_score_std:" % clf_name, np.std(cv_scores))return train, testcat_train, cat_test = cv_model(CatBoostClassifier, x_train, y_train, x_test, "cat")

這段代碼是一個交叉驗證模型的函數,用于訓練和評估分類器模型。具體來說,它使用了CatBoost分類器,在給定的訓練數據集上進行了5折交叉驗證,并返回了訓練集和測試集的預測結果。

函數中的參數包括:

  • clf: 分類器模型的類對象,這里是CatBoostClassifier。
  • train_x, train_y: 訓練數據的特征和標簽。
  • test_x: 測試數據的特征。
  • clf_name: 分類器的名稱,用于輸出結果。
  • seed: 隨機種子,默認為2022。

函數的主要流程如下:

  1. 創建了一個5折交叉驗證器(KFold)。
  2. 初始化了訓練集和測試集的預測結果數組。
  3. 在每一折循環中,根據訓練索引和驗證索引分割訓練集和驗證集。
  4. 配置CatBoost分類器的參數,并使用訓練集訓練模型。
  5. 對驗證集和測試集進行預測,并將預測結果加入到結果數組中。
  6. 計算并保存每一折驗證集的F1分數。
  7. 輸出每一折的F1分數列表、平均分數和標準差。
  8. 返回訓練集和測試集的預測結果。

通過調用這個函數,可以得到CatBoost分類器在給定數據集上的交叉驗證結果,評估模型的性能以及獲取訓練集和測試集的預測結果。

輸出結果

from datetime import datetimecurrent_time = datetime.now()  # 獲取當前時間
formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")  # 格式化時間# print("當前時間:", current_time)
# print("格式化時間:", formatted_time)
# 5. 保存結果文件到本地
pd.DataFrame({'uuid': test['uuid'],'Label': pred}
).to_csv(formatted_time+ '.csv', index=None)

?本地torch部分未用

這個夏令營不簡單 #AI夏令營 #Datawhale #夏令營?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/39648.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/39648.shtml
英文地址,請注明出處:http://en.pswp.cn/web/39648.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

臺燈學生用哪個牌子最好?學生用臺燈品牌排行榜分析

臺燈學生用哪個牌子最好&#xff1f;護眼臺燈在近年來成為家長和長時間使用電子設備人群關注的家電/學生產品。對于家中有孩子或經常面對電子屏幕的人士來說&#xff0c;很多人可能已經對這類產品有所了解并進行了購買。然而&#xff0c;部分家長對護眼臺燈的認識還不夠深入&am…

不同類型uORF對mORF翻譯效率的影響

在您提供的文獻《不同類型的uORF在真核生物基因表達中的調控潛力》中&#xff0c;對于不同類型的起始密碼子的uORF及其對下游主開放閱讀框&#xff08;mORF&#xff09;翻譯效率的影響進行了詳細的討論。以下是這些影響的主要總結&#xff1a; uORF的起始密碼子類型&#xff1a…

FFT 簡單基礎(matlab

使用 fs 進行采樣&#xff0c;進行 N點FFT 選擇顯示0~N/21點的幅值 橫坐標對應頻率計算公式&#xff1a; fs * n / N 舉個梨子&#xff1a; 頻率2kHz采樣1s&#xff0c;得到2000個點的序列y(n) 對序列y(n)做4096點的FFT 幅值響應對應的橫坐標頻率…

機器人控制系列教程之Stewart平臺簡介和運動學分析

Stewart平臺簡介及應用場景 六自由度 Stewart 并聯機器人結構簡圖如下圖所示&#xff0c;主要有一個固定平臺和一個移動平臺以及六個可伸縮的推桿組成&#xff0c;通常情況下&#xff0c;固定平臺與底座連接&#xff0c;移動平臺在空間具有六個自由度&#xff0c;通過六個推桿…

數據結構——求兩個數的最大公因子

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> 數據結構——求兩個數的最大公因子 要求&#xff1a;必須采用遞歸和非遞歸兩種方法 非遞歸&#xff1a; int main() { int a 0; int b 0; scanf("%d %d", &a, &b); int c a…

攻防演練,怎么掃描一個網站

在 Ubuntu 22.04 上&#xff0c;你可以使用多種掃描工具來進行網站掃描。以下是一些常見的掃描工具以及它們的安裝方法&#xff1a; Nmap: Nmap 是一個開源的網絡掃描工具&#xff0c;用于發現網絡和安全審計。安裝命令&#xff1a;sudo apt update sudo apt install nmapNikto…

價格很實惠,希喂、愛立方、生生不息主食凍干抗得住實測嗎?

在挑選主食凍干時&#xff0c;許多寵物主人都會感到頭疼。盡管主食凍干相較于普通貓糧具有諸多優勢&#xff0c;但其價格也相對高昂。這導致許多寵物主人擔心高價購買的主食凍干可能營養價值并不理想。然而&#xff0c;在選擇時&#xff0c;我們還需要考慮其他重要因素&#xf…

Spring MVC 中 使用 RESTFul 實現用戶管理系統

1. Spring MVC 中 使用 RESTFul 實現用戶管理系統 文章目錄 1. Spring MVC 中 使用 RESTFul 實現用戶管理系統2. 靜態頁面準備2.1 user.css2.2 user_index.html2.3 user_list.html2.4 user_add.html2.5 user_edit.html 3. SpringMVC環境搭建3.1 創建module&#xff1a;usermgt3…

tapd 與國內外主流的8大項目管理軟件大對比

對比Tapd與8大項目管理工具&#xff1a;PingCode、Worktile、Redmine、Teambition、廣聯達、Jira、禪道、飛書。 Tapd 是騰訊推出的一款敏捷開發管理工具&#xff0c;特別適合那些需要高效協作和快速迭代的敏捷開發團隊。它支持多種敏捷方法論&#xff0c;包括Scrum和Kanban&am…

《詳細指南:本地部署Ollama大型模型的完整步驟》

《詳細指南&#xff1a;本地部署Ollama大型模型的完整步驟》 引言 Ollama是一個高性能的AI模型部署平臺&#xff0c;支持在本地輕松部署大型語言模型。本指南將詳細介紹如何在本地環境中部署Ollama&#xff0c;并運行一個大型模型。 環境要求 操作系統&#xff1a;Windows/…

數學建模------Matlab數據可視化

目錄 1.plot函數 &#xff08;1&#xff09;函數介紹 &#xff08;2&#xff09;參數介紹 &#xff08;3&#xff09;圖形美化 &#xff08;4&#xff09;背景更改 &#xff08;5&#xff09;多組繪制 &#xff08;6&#xff09;圖形疊加 &#xff08;7&#xff09;添加…

Elasticsearch備份數據到本地,并導入到新的服務 es 服務中

文章目錄 使用elasticsearch-dump工具備份安裝node.js(二進制安裝)解壓設置環境變量安裝elasticsearch-dump docker安裝使用ES備份文件到本地 使用elasticsearch-dump工具備份 這個工具備份時間比較長 安裝node.js(二進制安裝) wget https://nodejs.org/dist/v16.18.0/node-…

C語言 求分數序列的和

求分數序列2/1&#xff0c;3/2&#xff0c;5/3&#xff0c;8/5&#xff0c;13/8&#xff0c;21/13…。求出數列的n項和&#xff0c;n由鍵盤輸入&#xff0c;并計算n20的結果 這個程序計算分數序列的前 n 項和&#xff0c;并輸出 n 20 時的結果。 #include <stdio.h>in…

華為機試HJ13句子逆序

華為機試HJ13句子逆序 題目&#xff1a; 將一個英文語句以單詞為單位逆序排放。例如“I am a boy”&#xff0c;逆序排放后為“boy a am I”所有單詞之間用一個空格隔開&#xff0c;語句中除了英文字母外&#xff0c;不再包含其他字符 想法&#xff1a; 將輸入的字符串通過…

【2024最新華為OD-C/D卷試題匯總】[支持在線評測] 英文單詞聯想(100分) - 三語言AC題解(Python/Java/Cpp)

?? 大家好這里是清隆學長 ,一枚熱愛算法的程序員 ? 本系列打算持續跟新華為OD-C/D卷的三語言AC題解 ?? ACM銀牌??| 多次AK大廠筆試 | 編程一對一輔導 ?? 感謝大家的訂閱? 和 喜歡?? ??在線評測鏈接 https://app5938.acapp.acwing.com.cn/contest/2/problem/OD…

阿里云物聯網應用層開發:第二部分,云產品流轉

文章目錄 嗶哩嗶哩視頻教程1、云產品流轉概述2、我們需要創建多少個云產品流轉?3、阿里云物聯網平臺產品云流轉實現3-1 創建數據源3-2 創建數據目的3-2 創建解析器,并關聯數據、編寫腳本嗶哩嗶哩視頻教程 【阿里云物聯網綜合開發,STM32+ESP8266+微信小程序+web客戶端一篇教程…

自定義控件動畫篇(八)animateLayoutChanges與LayoutTransition的使用

在Android開發中&#xff0c;animateLayoutChanges 和 LayoutTransition 都是用來在布局改變時添加動畫效果的特性&#xff0c;但是它們的使用場景和方式有所不同。 animateLayoutChanges animateLayoutChanges 是一個布爾屬性&#xff0c;當它被設置為true時&#xff0c;會使…

jvm常見調優

FullGC的STW停頓時間長 單體應用一臺硬件上的jvm的部署策略 單獨的jvm管理堆內存 對于用戶停頓時間敏感的系統&#xff0c;并不是必須使用Shenandoah或者ZGC這些明確以控制延遲為目標的垃圾回收器才能解決問題&#xff08;當然&#xff0c;這是最好的方法&#xff09;&#…

centos7安裝寶塔面板

一、進入root模式 sudo su二、安裝寶塔面板 if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec

如何利用小程序容器技術搭建小程序生態?

小程序&#xff0c;作為現代移動互聯網生態中的重要基礎設施&#xff0c;正以其獨特的創新性和便捷性展現出勃勃生機。截至2021年&#xff0c;全網小程序的數量已經突破了700萬&#xff0c;其中微信小程序的開發者達到了300萬之多。這一數字不僅代表了小程序在技術層面的成熟度…