機械学習メモ

化学を機械学習で何か

ChatGptで

「Xenonpyを使ったiQSPRコードを生成して」と聞いて生成されたコード。多分違う。

import pandas as pd
from xenonpy.descriptor import Compositions
from xenonpy.model import XGBRegressor
from xenonpy.utils import settings
from xenonpy.datatools import preset

# データの読み込み
data = pd.read_csv('solubility_data.csv')

# 分子記述子の生成
comp = Compositions(n_jobs=-1)
X = comp.transform(data['smiles'])

# モデルの構築
settings.general.seed = 1
model = XGBRegressor()
model.fit(X, data['logS'])

# モデルの評価
preset.regression(model, X, data['logS'])

これではダメなので、
「Xenonpyを使って、ElasticNetでモデリングして、LogLikelihood関数を作成して、N-gramを生成して、iQSPRで逆解析して、化学構造を得るコードを書いて」
と適当なことを質問してみた。

import pandas as pd
from xenonpy.descriptor import Fingerprints
from xenonpy.model import ElasticNet
from xenonpy.utils import settings
from xenonpy.datatools import preset

# データの読み込み
data = pd.read_csv('solubility_data.csv')

# Fingerprintsの生成
fp = Fingerprints(n_jobs=-1, type='morgan', n_bits=512, length=2)
X = fp.transform(data['smiles'])

# ElasticNetのモデルの構築
settings.general.seed = 1
model = ElasticNet()
model.fit(X, data['logS'])

# モデルの評価
preset.regression(model, X, data['logS'])

# LogLikelihood関数の作成
from xenonpy.inverse.iqsp import LogLikelihood
llh = LogLikelihood(model, fp, data['logS'], scale='standard')
n_gram = llh.get_ngram(5, 0.1)

# iQSPRで逆解析して化学構造を得る
from xenonpy.inverse.iqsp import iQSPR
iqspr = iQSPR(model, fp, scale='standard')
smiles = iqspr.inverse(n_gram)
print(smiles)

ChatGpy 3.0くらいなのかな、トライアル版だと。