Viele Bücher und Online-Lehrmaterialien zum Scikit-Lernen verwenden angehängte Datensätze wie Iris und Krebs. Natürlich gibt es ein Gefühl der Sicherheit, dass die gleichen Ergebnisse leicht erzielt werden können, aber ich denke, dass es vielen Menschen schwer fällt, tiefes Lernen im Einklang mit dem Zeitplan zu erlangen. In diesem Artikel werde ich vorstellen, wie Sie Ihre eigenen Daten oder externen Daten im Internet lesen und mit scicit-learn analysieren können. (Überprüfungsumgebung: Windows10, Anaconda3, Python3.7.6, Jupyter Notebook 6.0.3) Erster Entwurf veröffentlicht 2020/3/23
In diesem Artikel als Beispiel die Daten, die von der Community für maschinelles Lernen / Datenwissenschaft Kaggle [Link zum Weltglücksbericht ← Link](https: //www.kaggle) veröffentlicht wurden. .com / unsdsn / world-happy) wird verwendet. Ich habe mich für Kaggle entschieden, weil ich einen Datensatz habe, der für maschinelles Lernen einfach zu verwenden ist. Daher muss ich mich als Benutzer registrieren. Bitte laden Sie von der Schaltfläche "Download (79 KB)". Wenn Sie die Zip-Datei entpacken, finden Sie 5 CSV-Dateien, aber hier verwenden wir 2019.csv.
--2019.csv ist als "Feature-Name in der ersten Zeile, Daten in der zweiten und nachfolgenden Zeile" angeordnet, damit es von der Python-Datenanalysebibliothek ** pandas ** leicht gelesen werden kann. Für andere Daten bitte durch Löschen der Excel-Zeile formen.
--Wenn das Format anders ist, z. B. eine Excel-Datei (.xls), laden Sie es mit Excel usw., führen Sie dann "Datei speichern unter" aus und wählen Sie das CSV-Dateiformat aus. Wenn das Trennzeichen ausgewählt werden kann, belassen Sie es als (Komma).
――Es ist einfacher, es in dem Ordner zu speichern, in dem sich die ausführbaren Python-Dateien (py- und ipynb-Dateien) befinden.
Sie können es direkt laden, ohne die Bibliothek zu verwenden. Um den Rest des Prozesses zu vereinfachen, zeigt Ihnen dieser Artikel, wie Sie Pandas verwenden. (Wenn pandas noch nicht installiert ist, [dieser Artikel] Bitte beziehen Sie sich auf (https://www.sejuku.net/blog/75508) usw. )
import pandas as pd
df = pd.read_csv('2019.csv')
Wenn das Trennzeichen eine Registerkarte ist, fügen Sie das Argument sep = '\ t' hinzu, und wenn es Japanisch enthält, fügen Sie das Argument encoding = 'shift_jis' hinzu.
df = pd.read_csv ('filename.csv', sep = '\ t', encoding = 'shift_jis')
Wenn Sie die Datendatei an einem anderen Speicherort als die ausführbare Datei ablegen möchten, fügen Sie "df = pd.read_csv (" data / 2019.csv ")" und einen relativen Pfad hinzu. Referenz → Gegenseitige Umwandlung / Beurteilung des absoluten Pfades und des relativen Pfades mit Python, pathlib
print("Bestätigung des Datensatzschlüssels (Name des Funktionsbetrags)==>:\n", df.keys())
print('Überprüfen Sie die Anzahl der Zeilen und Spalten im Datenrahmen==>\n', df.shape)
Wenn Sie den obigen Befehl ausführen,
Bestätigung des Datensatzschlüssels (Name des Funktionsbetrags)==>:
Index(['Overall rank', 'Country or region', 'Score', 'GDP per capita',
'Social support', 'Healthy life expectancy',
'Freedom to make life choices', 'Generosity',
'Perceptions of corruption'],
dtype='object')
Überprüfen Sie die Anzahl der Zeilen und Spalten im Datenrahmen==>
(156, 9)
Es kann bestätigt werden, dass die Daten von 156 Proben mit 9 Merkmalen gelesen werden können.
Überprüfen Sie, ob in den Daten Werte (Null) fehlen, und überprüfen Sie den Datentyp, um festzustellen, ob es sich nur um einen ganzzahligen Wert (int) / einen numerischen Wert einschließlich eines Bruchs (float) / einer Zeichenfolge oder einer Mischung aus Zeichenfolgen und numerischen Werten (Objekt) handelt. Ich werde.
#Datenrahmen Überprüfen Sie die Anzahl der nicht fehlenden Daten und den Datentyp in jeder Spalte
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 156 entries, 0 to 155
Data columns (total 9 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Overall rank 156 non-null int64
1 Country or region 156 non-null object
2 Score 156 non-null float64
3 GDP per capita 156 non-null float64
4 Social support 156 non-null float64
5 Healthy life expectancy 156 non-null float64
6 Freedom to make life choices 156 non-null float64
7 Generosity 156 non-null float64
8 Perceptions of corruption 156 non-null float64
dtypes: float64(7), int64(1), object(1)
memory usage: 11.1+ KB
Sie können bestätigen, dass 156 Nicht-Null-Daten vorhanden sind ⇒ ** keine fehlenden Werte **. Der Gesamtrang ist eine Ganzzahl, das Land oder die Region ist eine Zeichenfolge, und ansonsten handelt es sich um einen numerischen Wert, der einen Bruch enthält, und der Datentyp ist wie beabsichtigt. Wenn die Spalte, die die Zahlen enthalten soll, zu einem Objekt geworden ist,
#Extraktion nicht numerischer Elemente
objectlist = df[['Geben Sie den Namen der Feature-Menge ein']][df['Geben Sie den Namen der Feature-Menge ein'].apply(lambda s:pd.to_numeric(s, errors='coerce')).isnull()]
objectlist
Durch Ausführen von ↑ können Sie die Daten extrahieren, die als Zeichenfolge behandelt werden.
Es gab keine Mischung aus Zeichenketten und numerischen Werten oder fehlenden Werten in diesen Daten, aber aus verschiedenen Gründen "Leerzeichen", "Zeichen / Symbole außer" 0 "bedeutet Null" und "Zahlen mit Einheiten". In vielen Fällen gibt es Werte, die für die Analyse so wie sie sind ungeeignet sind.
Bitte lesen Sie diesen Artikel usw. und führen Sie die entsprechende Verarbeitung durch (Feature-Mengen-Engineering).
import sklearn
worldhappiness = sklearn.utils.Bunch()
Bitte ändern Sie den Teil von "Weltglück", um den Datensatznamen anzugeben.
# 'Score'(Glück Punktzahl)Die Zielvariable'target'Zu
worldhappiness['target'] = df['Score']
#Erklärende Variablen'data'Einstellen
worldhappiness['data'] = df.loc[:, ['GDP per capita',
'Social support', 'Healthy life expectancy',
'Freedom to make life choices', 'Generosity',
'Perceptions of corruption']]
↑ Geben Sie 6 andere Spalten als die ersten 3 Spalten an (Funktionen, die nicht zur Analyse von Zielvariablen und IDs verwendet werden). Es ist einfach, die Datenausgabe unter "Bestätigung des Namens der Merkmalsmenge" zu kopieren und einzufügen.
#Wenn Sie den Namen des Feature-Betrags angeben, können Sie ihn für die Legende des Diagramms usw. verwenden. (Dies ist nicht erforderlich.)
worldhappiness['feature_names'] = ['GDP per capita',
'Social support', 'Healthy life expectancy',
'Freedom to make life choices', 'Generosity',
'Perceptions of corruption']
#Unterteilt in Trainingsset und Testset
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
worldhappiness['data'], worldhappiness['target'], random_state=0)
print("X_train shape:", X_train.shape)
print("X_test shape:", X_test.shape)
X_train shape: (117, 6)
X_test shape: (39, 6)
Es wurde in 117 Trainingsdaten und 39 Testdaten unterteilt. (6 ist die Anzahl der erklärenden Variablenelemente)
Ich denke, dies wird zur Maschinenanalyse führen. Wenn Sie Fehler oder Fragen haben, können Sie diese gerne kommentieren.
Recommended Posts