Chapter 48

【6回目】Scikit-learnの練習

poclabweb
poclabweb
2022.11.03に更新

得られた構造情報や化学記述子の情報をもとに欲しい物性情報を予測する手法を学んでいきます。
ここでは、rdkitの復習とscikit-learn(サイキット・ラーン、旧称: scikits.learn)を用いて行っていきます。scikit-learn(サイキット・ラーン、旧称: scikits.learn)は、Pythonのオープンソース機械学習ライブラリ、Pythonのオープンソース機械学習ライブラリです。

scikit-learnについて

https://scikit-learn.org/stable/

今回使用するコード

https://github.com/chemoinformatics-lecture/lecture-beginner/blob/main/lesson06_scikit-learn/RandomForestRegressor.ipynb

講義動画

https://vimeo.com/showcase/8867477

今回のアウトライン

0. データの準備

化合物の溶解度のデータを使用する。

!wget 'http://modem.ucsd.edu/adme/data/databases/logS/data_set.dat'

読み込んだデータをpandasのデータフレームに入れる。

df = pd.read_csv('data_set.dat', sep='\t', header=None, names = ["smiles", "CAS", "logS"]) 

1. トレーニングデータとテストデータの分割: train_test_split

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.1, random_state = 10)
X_train = X_train.sort_index()
X_train

2. 学習: model.fit()

from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor(max_depth = 100, n_estimators = 500, n_jobs = -1, random_state = 100)
model.fit(X_train, y_train)

3. 重要度解析 model.feature_importances_

fi_rf = model.feature_importances_  
features_rf = pd.DataFrame({'feature': list(X_train.columns),
                            'feature_importance': fi_rf[:]}).sort_values('feature_importance', ascending = False)
features_rf = features_rf[features_rf['feature_importance'] != 0]
plt.scatter(features_rf.iloc[:10, :].feature, features_rf.iloc[:10, :].feature_importance);
features_rf