[PYTHON] Scikit-Lernen mit Chemoinfomatik

Einführung

"Matplotlib" ist eine der repräsentativen Bibliotheken von Python mit dem Thema Lipidomics (umfassende Analyse von Lipiden). Ich werde darüber erklären. Wir werden hauptsächlich praktische Beispiele für Chemoinfomatik erläutern. Wenn Sie also die Grundlagen überprüfen möchten, lesen Sie bitte den folgenden Artikel, bevor Sie diesen Artikel lesen.

Forscher eines Pharmaunternehmens haben scikit-learn zusammengefasst

Datensatzvorbereitung

scikit-learn ist eine Bibliothek für maschinelles Lernen.

Betrachten Sie hier die Vorhersage der Retentionszeit (RT) in der Flüssigkeitschromatographie (LC) anhand der physikalischen Eigenschaften einer Verbindung unter Verwendung der partiellen Regression der kleinsten Quadrate (PLS). Ich werde.

Erstellen Sie zunächst einen Datensatz für maschinelles Lernen.

import pandas as pd


params_fatty_acids = ['Heavy atoms', 'Rotatable Bonds', 'van der Waals Molecular Volume', 'logP', 'Molar Refractivity']

lauric = [14, 10, 231.10, 3.99, 59.48]
myristic = [16, 12, 265.70, 4.77, 68.71]
palmitic = [18, 14, 300.30, 5.55, 77.95]
palmitoleic = [18, 13, 297.66, 5.33, 77.85]
stearic = [20, 16, 334.90, 6.33, 87.18]
oleic = [20, 15, 332.26, 6.11, 87.09]
linoleic = [20, 14, 329.62, 5.88, 86.99]
linolenic = [20, 13, 326.98, 5.66, 86.90]
stearidonic = [20, 12, 324.34, 5.44, 86.81]
arachidic = [22, 18, 369.50, 7.11, 96.42]
bishomo_gamma_linolenic = [22, 15, 361.58, 6.44, 96.13]
arachidonic = [22, 14, 358.94, 6.22, 96.04]
eicosapentaenoic = [22, 13, 356.30, 5.99, 95.95]
behenic = [24, 20, 404.10, 7.89, 105.65]
adrenic = [24, 16, 393.54, 7.00, 105.27]
docosapentaenoic = [24, 15, 390.90, 6.77, 105.18]
docosahexaenoic = [24, 14, 388.26, 6.55, 105.09]

df_fatty_acids = pd.DataFrame([lauric, myristic, palmitic, palmitoleic, stearic, oleic, linoleic, linolenic, stearidonic, arachidic, bishomo_gamma_linolenic, arachidonic, eicosapentaenoic, behenic, adrenic, docosapentaenoic, docosahexaenoic], columns=params_fatty_acids)
df_fatty_acids['Experimental Retention Time (min)'] = [4.53, 7.52, 11.02, 10.59, 14.45, 11.86, 9.76, 8.31, 6.71, 17.52, 11.20, 9.96, 8.27, 20.40, 12.75, 11.52, 9.84]

print(df_fatty_acids)

Hier lautet die Liste der Parameternamen für physikalische Eigenschaften, die als erklärende Variablen verwendet werden, "params_fatty_acids". Jeder Wert der physikalischen Eigenschaft bezieht sich auf die Informationen, die in der Datenbank von LIPID MAPS gespeichert sind. Darüber hinaus wird RT auf der Website von PRIMe des Instituts für physikalische und chemische Forschung [RT-Daten in Umkehrphasen-LC](http: //prime.psc) veröffentlicht. .riken.jp / Metabolomics_Software / MrmDatabase / Detail% 20of% 20LCQqQMS% 20method% 20 (ODS-Lipide) .xlsx) wird referenziert. In Wirklichkeit denke ich auch, dass Sie häufig CSV-Dateien usw. mit pandas.read_csv usw. lesen. Darüber hinaus ist häufig eine Datenvorverarbeitung erforderlich, z. B. die Vervollständigung fehlender Werte.

Ein Modell bauen

Als nächstes werden wir ein Vorhersagemodell erstellen und den Vorhersagewert unter Verwendung des Modells berechnen.

from sklearn.cross_decomposition import PLSRegression


X = df_fatty_acids[params_fatty_acids] #Erklärende Variable
y = df_fatty_acids['Experimental Retention Time (min)'] #Objektive Variable

pls_rt = PLSRegression()
pls_rt.fit(X, y) #Erstellen Sie ein PLS-Vorhersagemodell

y_pred = pls_rt.predict(X) #Berechnen Sie den vorhergesagten Wert

df_fatty_acids['Predicted Retention Time (min)'] = y_pred
df_fatty_acids['Diff (min)'] = df_fatty_acids['Predicted Retention Time (min)'] - df_fatty_acids['Experimental Retention Time (min)']
df_fatty_acids['Accuracy (%)'] = (df_fatty_acids['Diff (min)'] / df_fatty_acids['Experimental Retention Time (min)']) * 100

print(df_fatty_acids)

Die Beziehung zwischen dem gemessenen Wert und dem vorhergesagten Wert ist unten gezeigt.

%matplotlib inline
import matplotlib.pyplot as plt


plt.scatter(y, y_pred)
plt.xlabel('Experimental Retention Time (min)')
plt.ylabel('Predicted Retention Time (min)')

plt.savefig('rts_fatty_acids.png')
plt.show()

rts_fatty_acids.png

In diesen Daten scheinen der gemessene Wert und der vorhergesagte Wert gut übereinzustimmen. Sie können den Anpassungsgrad des erstellten Modells mit r2_score überprüfen.

from sklearn.metrics import r2_score


print(r2_score(y, y_pred))

r2_score nimmt einen Wert zwischen 0 und 1 an und je näher er an 1 liegt, desto besser sind die gemessenen und vorhergesagten Werte. In diesen Daten ist "r2_score" ein Wert über 0,98, was ein ziemlich gutes Modell ist.

Dieses Mal haben wir 5 Arten von Parametern für physikalische Eigenschaften verwendet, um die RT vorherzusagen, aber lassen Sie uns sehen, welche davon wesentlich zur Vorhersage beitragen.

print(pls_rt.coef_)

Aus diesem Ergebnis ist ersichtlich, dass in diesen Daten der Koeffizient (absoluter Wert) für drehbare Anleihen mit 3,44 der größte ist und dieser Wert der physikalischen Eigenschaften stark zur Vorhersage der RT beiträgt.

Vorhersage anhand eines Modells

Wir haben die Vorhersagegenauigkeit der zum Erstellen des Vorhersagemodells verwendeten Daten erörtert, aber schließlich wollen wir sehen, wie genau die Daten, die nicht zum Erstellen des Modells verwendet werden, vorhergesagt werden können.

lignoceric = [26, 22, 438.70, 8.67, 114.88]
x_lignoceric = pd.DataFrame([lignoceric], columns=params_fatty_acids)
y_pred_lignoceric = pls_rt.predict(x_lignoceric)

y_exp_lignoceric = 22.31 #Gemessener Wert

print(y_exp_lignoceric)
print(y_pred_lignoceric)

Hier habe ich versucht, die RT von Lignocerinsäure vorherzusagen (FA 24: 0). Die Differenz zwischen dem vorhergesagten Wert und dem gemessenen Wert beträgt ungefähr 1,2 Minuten. Ich denke, es gibt verschiedene Ansichten darüber, ob dieser Unterschied groß oder klein ist, aber ich persönlich denke, dass die Vorhersagegenauigkeit eher gering ist. Der Grund dafür ist, dass Lignocerinsäure eine Molekülspezies ist, die hydrophober ist als alle Fettsäuremolekülspezies, die in dem für die Modellkonstruktion verwendeten Datensatz enthalten sind, und dass die Anpassung von Daten nahe an den physikalischen Eigenschaften von Lignocerinsäure in der Modellkonstruktionsphase durchgeführt wird. Es wird angenommen, dass es mit dem zusammenhängt, was nicht getan wurde.

Die PLS-Regression kann durch das obige Verfahren durchgeführt werden. Obwohl hier nicht erwähnt, ist die Anzahl der latenten Variablen "n_components" auch wichtig, wenn eine PLS-Regression durchgeführt wird. Dieses Mal habe ich den Standardwert "2" verwendet, aber durch Ändern dieses Werts ändert sich die Vorhersagegenauigkeit nach und nach. Ich würde es gerne zu einem anderen Zeitpunkt erklären.

Zusammenfassung

Hier haben wir Scikit-Learn erklärt und uns dabei auf praktisches Wissen konzentriert, das in der Chemoinfomatik verwendet werden kann. Lassen Sie uns die wichtigsten Punkte noch einmal überprüfen.

--Mit Scikit-Learn können Sie problemlos maschinelles Lernen durchführen.

Referenzmaterialien / Links

Was ist die Programmiersprache Python? Kann es für KI und maschinelles Lernen verwendet werden?

Recommended Posts

Scikit-Lernen mit Chemoinfomatik
Isomap mit Scikit-lernen
DBSCAN mit Scikit-Learn
Clustering mit Scikit-Learn (1)
Clustering mit Scikit-Learn (2)
PCA mit Scikit-Learn
kmeans ++ mit scikit-learn
Lerne Python mit ChemTHEATER
Mehrklassen-SVM mit Scikit-Learn
Lerne Zundokokiyoshi mit LSTM
Clustering mit scikit-learn + DBSCAN
Lernen Sie mit Chemo Informatics Matplotlib
DBSCAN (Clustering) mit Scikit-Learn
Lernen Sie mit Chemo Informatics NumPy
DCGAN mit TF Learn
Installieren Sie scikit.learn mit pip
Berechnen Sie tf-idf mit scikit-learn
Lernen Sie Pendulum-v0 mit DDPG
Lernen Sie Librosa mit einem Tutorial 1
Neuronales Netzwerk mit Python (Scikit-Learn)
Lernen Sie mit Chainer elliptische Bahnen
Lernen Sie neue Daten mit PaintsChainer
Parallele Verarbeitung mit Parallel von Scikit-Learn
[Python] Lineare Regression mit Scicit-Learn
Robuste lineare Regression mit Scikit-Learn
Rastersuche von Hyperparametern mit Scikit-learn
Erstellen eines bestimmten Baums mit Scikit-Learn
Lernen Sie mit Causal ML Package Meta-Learner
Bildsegmentierung mit Scikit-Image und Scikit-Learn
[TensorFlow 2] Lernen Sie RNN mit CTC-Verlust
Lass uns mit Selene Deep SEA lernen
Identifizieren Sie Ausreißer mit dem Random Forest Classifier von scikit-learn
Nicht negative Matrixfaktorisierung (NMF) mit Scikit-Learn
Lernen Sie die Kategorisierung von Dokumenten mit spaCy CLI
SVM versucht maschinelles Lernen mit Scikit-Learn
Python-Datenstruktur mit Chemoinfomatik gelernt
Scikit-learn DecisionTreeClassifier mit Datetime-Typwerten
Die grundlegendste Clusteranalyse mit Scikit-Learn
Erste Schritte mit Python3 # 1 Grundkenntnisse erlernen
Lernen Sie mit Chainer, monochrome Bilder einzufärben
Lassen Sie uns die Hyperparameter des Modells mit scikit-learn abstimmen!
[Scikit-learn] Ich habe mit der ROC-Kurve gespielt
Probieren Sie SVM mit scikit-learn auf Jupyter Notebook aus
Multi-Label-Klassifizierung nach Random Forest mit Scikit-Learn
Clustering repräsentativer Schulen im Sommer 2016 mit Scikit-Learn
Implementieren Sie einen minimalen selbst erstellten Schätzer mit scikit-learn
Python lernen! Vergleich mit Java (Grundfunktion)
Lerne mit übernervöser Schwäche! Graphentheorie
Füllen Sie fehlende Werte mit Scikit-learn impute aus
Lernen Sie das Entwurfsmuster "Singleton" mit Python
Vorbereitung auf das Erlernen technischer Indikatoren mit TFlearn
Lernen Sie das Designmuster "Facade" mit Python
Visualisieren Sie den Entscheidungsbaum von Scikit-Learn mit Plotlys Treemap