"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
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.
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()
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.
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.
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.
Was ist die Programmiersprache Python? Kann es für KI und maschinelles Lernen verwendet werden?
Recommended Posts