Erläuterung: Dies ist ein praktisches Projekt zum maschinellen Lernen (mit Daten + Code + Dokumentation + Videoerklärung ). Wenn Sie Daten + Code + Dokumentation + Videoerklärung benötigen , können Sie diese direkt am Ende des Artikels abrufen.
1. Projekthintergrund _
Das als Faltungsnetzwerk bezeichnete Faltungs-Neuronale Netzwerk unterscheidet sich vom gewöhnlichen Neuronalen Netzwerk dadurch, dass die Neuronen in seiner Faltungsschicht nur den lokalen Bereich der Eingabemerkmale abdecken, mit spärlicher Konnektivität und geteilter Gewichtung. Merkmale und die darin enthaltenen Filter können Extrahieren Sie die Hauptmerkmale des Bildes. Aufgrund dieser Funktion können Faltungs-Neuronale Netze bessere Ergebnisse bei der Bilderkennung liefern.
Dieses Projekt implementiert das auf PyTorch basierende Faltungs-Neuronale-Netzwerk-Regressionsmodell.
2. Datenerfassung _
Die Modellierungsdaten für diesen Zeitraum stammen aus dem Internet (zusammengestellt vom Autor dieses Projekts), und die Statistiken der Datenelemente lauten wie folgt:
Die Datendetails lauten wie folgt (Teilanzeige):
3. Datenvorverarbeitung
3.1 Daten mit dem Pandas -Tool anzeigen
Verwenden Sie die head()-Methode des Pandas-Tools, um die ersten fünf Datenzeilen anzuzeigen:
Schlüsselcode:
3.2 Datenansicht fehlt
Verwenden Sie die info()-Methode des Pandas-Tools, um Dateninformationen anzuzeigen:
Wie aus der obigen Abbildung ersichtlich ist, gibt es insgesamt 11 Variablen, keine fehlenden Werte in den Daten und insgesamt 2000 Daten.
Schlüsselcode:
3.3 Daten deskriptive Statistik
Verwenden Sie die Methode discover() des Pandas-Tools, um den Mittelwert, die Standardabweichung, das Minimum, das Quantil und das Maximum der Daten anzuzeigen.
Der Schlüsselcode lautet wie folgt:
4. Explorative Datenanalyse
4.1 Histogramm von y-Variablen
Verwenden Sie die hist()-Methode des Matplotlib-Tools, um ein Histogramm zu zeichnen:
Wie aus der obigen Abbildung ersichtlich ist, konzentriert sich die y-Variable hauptsächlich zwischen -400 und 400.
4.2 Korrelationsanalyse
Wie aus der obigen Abbildung ersichtlich ist, ist die Korrelation umso stärker, je größer der Wert ist. Ein positiver Wert ist eine positive Korrelation und ein negativer Wert ist eine negative Korrelation.
5. Feature-Engineering
5.1 Erstellen Sie Funktionsdaten und Etikettendaten
Der Schlüsselcode lautet wie folgt:
5.2 Datensatzaufteilung
Verwenden Sie die Methode train_test_split (), um nach 80 % Trainingssatz und 20 % Testsatz zu dividieren. Der Schlüsselcode lautet wie folgt:
6. Konstruieren Sie ein Faltungs-Neuronales Netzwerk-Regressionsmodell
Der CNN-Regressionsalgorithmus wird hauptsächlich für die Zielregression verwendet.
6.1 Ein Modell bauen
6.2 Iterationsinformationen
7. Modellbewertung
7.1 Bewertungsindikatoren und Ergebnisse
Zu den Bewertungsindikatoren gehören hauptsächlich der erklärbare Varianzwert, der mittlere absolute Fehler, der mittlere quadratische Fehler, der R-Quadrat-Wert usw.
Aus der obigen Tabelle ist ersichtlich, dass das R-Quadrat 0,9813 beträgt, was ein gutes Modell ist.
Der Schlüsselcode lautet wie folgt:
7.2 Vergleichstabelle von tatsächlichem Wert und vorhergesagtem Wert
Aus der obigen Abbildung ist ersichtlich, dass die Schwankungen des tatsächlichen Werts und des vorhergesagten Werts grundsätzlich gleich sind und der Modellanpassungseffekt gut ist.
8. Fazit und Ausblick
Zusammenfassend implementiert dieser Artikel das auf PyTorch basierende Faltungs-Neuronale-Netzwerk-Regressionsmodell und beweist schließlich, dass das von uns vorgeschlagene Modell gut funktioniert. Dieses Modell kann zur Prognose von Alltagsprodukten verwendet werden.
# 定义前向传播方法
def forward(self, x):
x = self.pool(F.relu(self.conv1(x))) # 卷积层、最大池化层
x = self.pool(F.relu(self.conv2(x))) # 卷积层、最大池化层
# print('******************************')
# print(x.size())
x = x.view(-1, 32 * 2) # 维度变换
本次机器学习项目实战所需的资料,项目资源如下:
项目说明:
链接:https://pan.baidu.com/s/1dW3S1a6KGdUHK90W-lmA4w
提取码:bcbp
# y变量分布直方图
fig = plt.figure(figsize=(8, 5)) # 设置画布大小
plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文显示
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
data_tmp = df['y'] # 过滤出y变量的样本
# 绘制直方图 bins:控制直方图中的区间个数 auto为自动填充个数 color:指定柱子的填充色
plt.hist(data_tmp, bins='auto', color='g')
Weitere Projektpraxis finden Sie in der Liste der Praxissammlungen für maschinelles Lernen:
Liste der tatsächlichen Kampfsammlungen maschineller Lernprojekte