日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

支持向量回归代码_RDKit:基于支持向量回归(SVR)预测logP

發布時間:2023/12/4 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 支持向量回归代码_RDKit:基于支持向量回归(SVR)预测logP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

RDKit一個用于化學信息學的python庫。使用支持向量回歸(SVR)來預測logP。 分子的輸入結構特征是摩根指紋,輸出是logP。


代碼示例:


  • #導入依賴庫

  • import numpy as np

  • from rdkit import Chem

  • from rdkit.Chem.Crippen import MolLogP

  • from rdkit import Chem, DataStructs

  • from rdkit.Chem import AllChem

  • from sklearn.svm import SVR

  • from sklearn.metrics import mean_squared_error, r2_score

  • from scipy import stats

  • import matplotlib.pyplot as plt

  • 載入smile分子庫,計算morgan指紋和logP

  • num_mols = 5000

  • f = open('smiles.txt', 'r')

  • contents = f.readlines()

  • fps_total = []

  • logP_total = []

  • for i in range(num_mols):

  • smi = contents[i].split()[0]

  • m = Chem.MolFromSmiles(smi)

  • fp = AllChem.GetMorganFingerprintAsBitVect(m,2)

  • arr = np.zeros((1,))

  • DataStructs.ConvertToNumpyArray(fp,arr)

  • fps_total.append(arr)

  • logP_total.append(MolLogP(m))

  • fps_total = np.asarray(fps_total)

  • logP_total = np.asarray(logP_total)

  • 劃分訓練集和測試集

  • num_total = fps_total.shape[0]

  • num_train = int(num_total*0.8)

  • num_total, num_train, (num_total-num_train)

  • fps_train = fps_total[0:num_train]

  • logP_train = logP_total[0:num_train]

  • fps_test = fps_total[num_train:]

  • logP_test = logP_total[num_train:]

  • 將SVR模型用于回歸模型

    https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html

  • _gamma = 5.0

  • clf = SVR(kernel='poly', gamma=_gamma)

  • clf.fit(fps_train, logP_train)

  • 完成訓練后,應該檢查預測的準確性。對于評估,將使用r2和指標的均方誤差。

  • logP_pred = clf.predict(fps_test)

  • r2 = r2_score(logP_test, logP_pred)

  • mse = mean_squared_error(logP_test, logP_pred)

  • r2, mse

  • 模型結果可視化

  • slope, intercept, r_value, p_value, std_error = stats.linregress(logP_test, logP_pred)

  • yy = slope*logP_test+intercept

  • plt.scatter(logP_test, logP_pred, color='black', s=1)

  • plt.plot(logP_test, yy, label='Predicted logP = '+str(round(slope,2))+'*True logP + '+str(round(intercept,2)))

  • plt.xlabel('True logP')

  • plt.ylabel('Predicted logP')

  • plt.legend()

  • plt.show()

  • 參考:

    https://github.com/SeongokRyu/CH485---Artificial-Intelligence-and-Chemistry

    https://blog.csdn.net/zb123455445/article/details/78354489

    總結

    以上是生活随笔為你收集整理的支持向量回归代码_RDKit:基于支持向量回归(SVR)预测logP的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。