人工智能是一个主题,尝试使用神经网络作为模型建立化合物物理性质的预测模型。机器学习库是由Google开发和使用的TensorFlow。Keras是一个使TensorFlow的神经网络功能更易于使用的软件包。


<数据集文件见:https://download.csdn.net/download/u012325865/10670205>


代码示例


基于神经网络的溶解度预测

#导入依赖包
from rdkit import Chem
from rdkit.Chem.Draw import IPythonConsole
from mordred import descriptors, Calculator #pip install mordred
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn import model_selection
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.optimizers import SGD
calc = Calculator(descriptors, ignore_3D = True)
#加载数据
sdf = [ mol for mol in Chem.SDMolSupplier('solubility.sdf')]
#使用mordred计算sdf文件中的分子化学描述符
X = calc.pandas(sdf).astype('float').dropna(axis = 1)

#转换为Numpy格式数组
X = np.array(X, dtype = np.float32)
#转换为平均值0,每个描述符的色散1
st = StandardScaler()
X= st.fit_transform(X)
#保存到npy文件供以后重用
np.save("X_2d.npy", X)
#定义读取溶解度的函数
def getResponse( mols, prop= "SOL" ):Y = []for mol in mols:act = mol.GetProp( prop )Y.append( act )return Y
#从sdf文件中读取溶解度
Y = getResponse(sdf)
#转换为Numpy格式数组
Y = np.array(Y, dtype = np.float32)
#保存到npy文件供以后重用
np.save("Y_2d.npy", Y)
#重新随机划分训练集和测试集
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, Y, test_size=0.25, random_state=42)
np.save("X_train.npy", X_train)
np.save("X_test.npy", X_test)
np.save("y_train.npy", y_train)
np.save("y_test.npy", y_test)
model = Sequential()
#输入层。传递给下一层的维度为50。 输入数据维度(input_dim)是1114。
model.add(Dense(units = 50, input_dim = X.shape[1]))
model.add(Activation("sigmoid"))
#输出层。 维度1,即输出单个值。
model.add(Dense(units = 1))
model.summary()

#SGD是随机梯度下降法。 nesterov是Nesterov的加速度梯度下降法。
model.compile(loss = 'mean_squared_error', optimizer = SGD(lr = 0.01, momentum = 0.9, nesterov = True),metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs = 100, batch_size = 32,validation_data = (X_test, y_test))
score = model.evaluate(X_test, y_test, verbose = 0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
y_pred = model.predict(X_test)
rms = (np.mean((y_test - y_pred) ** 2)) ** 0.5
#s = np.std(y_test - y_pred)
print("Neural Network RMS", rms)

%matplotlib inline
import matplotlib.pyplot as plt
plt.figure()
plt.scatter(y_train, model.predict(X_train), label = 'Train', c = 'blue')
plt.title('Neural Network Predictor')
plt.xlabel('Measured Solubility')
plt.ylabel('Predicted Solubility')
plt.scatter(y_test, model.predict(X_test), c = 'lightgreen', label = 'Test', alpha = 0.8)
plt.legend(loc = 4)
plt.savefig('Neural Network Predictor.png', dpi=300)
plt.show()

import matplotlib.pyplot as plt
loss = history.history['loss']
val_loss = history.history['val_loss']
epochs = len(loss)
plt.plot(range(epochs), loss, marker = '.', label = 'loss')
plt.plot(range(epochs), val_loss, marker = '.', label = 'val_loss')
plt.legend(loc = 'best')
plt.grid()
plt.xlabel('epoch')
plt.ylabel('loss')
plt.show()

model.compile(loss = 'mean_squared_error', optimizer = SGD(lr = 0.01, momentum = 0.9, nesterov = True),metrics=['accuracy'])
from keras.callbacks import EarlyStopping
history = model.fit(X_train, y_train, epochs = 100, batch_size = 32,validation_data=(X_test, y_test), callbacks = [EarlyStopping()])
score = model.evaluate(X_test, y_test, verbose = 0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
y_pred = model.predict(X_test)
rms = (np.mean((y_test - y_pred) ** 2)) ** 0.5
#s = np.std(y_test - y_pred)
print("Neural Network RMS", rms)

PLSR分析:偏最小二乘回归法分析

import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn import model_selection
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score
from sklearn.cross_decomposition import PLSRegression
import sklearn
print("sklearn ver.", sklearn.__version__)
print("numpy ver.", np.__version__)
#加载保存的数据文件
X = np.load("X_2d.npy")
Y = np.load("Y_2d.npy")
#随机划分训练集和测试集
X_train, X_test, y_train, y_test = model_selection.train_test_split(X,Y, test_size = 0.25, random_state = 42)
#计算解释溶解度分散的因子并使用多达15的因子进行回归分析。
pls2 = PLSRegression(n_components = 15, scale = True)
pls2.fit(X_train, y_train)
pred_train = pls2.predict(X_train)
pred_test = pls2.predict(X_test)
rms = (np.mean((y_test - pred_test)**2))**0.5
#s = np.std(y_test - y_pred)
print("PLS regression RMS", rms)
PLS regression RMS 2.834230670918034
import pylab as plt
plt.figure()
plt.scatter(y_train, pred_train, label = 'Train', c = 'blue')
plt.title('PLSR Predictor')
plt.xlabel('Measured Solubility')
plt.ylabel('Predicted Solubility')
plt.scatter(y_test, pred_test, c = 'lightgreen', label = 'Test', alpha = 0.8)
plt.legend(loc = 4)
plt.savefig('PLSR Predictor.png', dpi=300)
plt.show()


参考资料:

http://www.ag.kagawa-u.ac.jp/charlesy/2017/07/21/keras%E3%81%A7%E5%8C%96%E5%90%88%E7%89%A9%E3%81%AE%E6%BA%B6%E8%A7%A3%E5%BA%A6%E4%BA%88%E6%B8%AC%EF%BC%88%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%A9%E3%83%AB%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC/


基于神经网络的溶解度预测和回归分析相关推荐

  1. RDKit | 基于神经网络的溶解度预测和回归分析

    人工智能是一个主题,尝试使用神经网络作为模型建立化合物物理性质的预测模型.机器学习库是由Google开发和使用的TensorFlow.Keras是一个使TensorFlow的神经网络功能更易于使用的软 ...

  2. 【负荷预测】基于神经网络的负荷预测和价格预测(Matlab代码实现)

    目录 1 概述 2 基于神经网络的负荷预测(Matlab实现) 2.1 代码 2.2 结果  2.3 回归树模型的进一步改进  3 基于神经网络的价格预测(Matlab代码实现)  4 阅读全文(Ma ...

  3. VCIP2021:基于神经网络的双向预测blending过程

    本文来自VCIP2021论文<Neural Network based Inter bi-prediction Blending> 介绍 双向预测最终会产生两个MV和两个参考块,这两个参考 ...

  4. 基于DeepChem的溶解度预测(图形卷积,神经网络)

    DeepChem是一个机器学习库,用于对化合物的图结构进行卷积. 环境 Python 3.6 DeepChem 1.1.0 TensorFlow 1.0.1 RDKit 2020.03.2 基于Dee ...

  5. 基于神经网络的房价预测,python数据分析房价预测

    Python 与深度学习有哪些与建筑设计相接轨的可能性 关注这个问题快一周了,到目前来说还是没发现什么太大的惊喜.我感觉建筑设计界还是要学习一个,不要看到深度学习很火,就弄个大新闻,把这玩意往建筑设计 ...

  6. 基于RDKit的溶解度预测的机器学习模型

    基于RDKit和Python3的化合物溶解度的机器学习模型小案例. 代码示例(仅供参考): # In[1]:导入依赖包 from rdkit import Chem, DataStructs from ...

  7. RDKit:基于RDKit的溶解度预测的机器学习模型

    基于RDKit和Python3的化合物溶解度的机器学习模型小案例. <仅供参考> # In[1]:导入依赖包from rdkit import Chem, DataStructs from ...

  8. 作为神经网络的输入_MATLAB实战|基于神经网络河南省降水量预测

    1 BP神经网络结构 神经网络旨在通过模仿动物的神经系统利用神经元作为连接结点的新型智能算法,神经网络本身包含三层结构,输入层,隐含层,输出层,每一层都有自己的特殊功能,输入层进行因子的输入与处理.由 ...

  9. 【负荷预测、电价预测】基于神经网络的负荷预测和价格预测(Matlab代码实现)

最新文章

  1. 在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: ‘文件路径’
  2. 计算机导论课程设计总结,大学计算机导论实践课程设计报告.doc
  3. 家庭用计算机选购调查报告,【调查报告】计算机选购调查报告.doc
  4. VM ware下载教程
  5. 安卓手机卸载手机自带软件(adb)
  6. dimm和udimm_服务器内存类型UDIMM、RDIMM和LRDIMM比较
  7. Centos7最小化安装升级至图形化
  8. 用一根线模拟浦丰投针实验——Java
  9. 计算机怎么搜索程序和文件格式,PDF软件如何快速搜索与查找文件?
  10. 推荐系统CTR技术的演变历史
  11. golang中的图像image处理详解
  12. 小米科技-运维工程师-面试经验
  13. PolynomialFeatures多项式转换
  14. Axure RP9——【导航栏二级菜单的展开效果】
  15. 联想卡在logo界面_[联想电脑卡在载入界面有什么解决方法]联想电脑卡在logo界面...
  16. 实用在线工具 - 在线工具集合 【程序员的工具箱】
  17. GitLab: 使用用户名/密码创建Access Token的暂定方法
  18. 如何在word2007中并排查看对比显示两个文档
  19. 2021电赛F题之openmv巡线(附代码)
  20. 《道德经》全文及译文

热门文章

  1. 我们用了两年的敏捷开发工具
  2. 年薪50万,副职级别!注册安全工程师的前途如此光明?
  3. HTTP Host 头攻击
  4. 微服务和 Serverless 如何强强联合?
  5. 图解 | 搞定分布式,程序员进阶之路
  6. 人性漫画:打工与创业的残酷区别……
  7. 异步化,高并发大杀器
  8. 微服务该如何设计缓存?
  9. 物竞天择,适者生存,架构进化之路
  10. 分享5个我「 最死忠 」的Windows10软件