机器学习算法应用——神经网络回归任务、神经网络分类任务

发布于:2024-05-10 ⋅ 阅读:(25) ⋅ 点赞:(0)

神经网络回归任务(4-3)

神经网络回归任务,通常指的是使用神经网络模型进行回归分析。回归分析是一种统计学方法,用于研究一个或多个自变量(预测变量)与一个因变量(响应变量)之间的关系。神经网络回归模型结合了神经网络和回归分析的优点,能够处理复杂的非线性关系,并提供灵活的模型结构。

神经网络回归模型(如Quantile Regression Neural Network, QRNN)由Taylor于2000年提出,是一种非参数非线性方法。它不仅可以揭示响应变量的整个条件分布,还可以模拟金融系统等领域的非线性特征。神经网络回归模型的研究已经扩展到了多个领域,包括金融、电力、气象等,并取得了较好的研究成果。

在神经网络回归任务中,通常包括以下几个步骤:

  1. 数据准备:收集具有自变量和因变量标签的数据集,并进行必要的数据预处理和特征工程。
  2. 模型构建:选择适当的神经网络结构,并定义模型的参数和损失函数。
  3. 模型训练:使用训练数据对神经网络进行训练,通过反向传播算法和梯度下降等方法优化模型的参数。
  4. 模型评估:使用测试数据对训练好的神经网络进行评估,计算预测误差和其他性能指标。
  5. 模型应用:将训练好的神经网络应用于实际问题中,进行预测和分析。

需要注意的是,神经网络回归模型在处理非线性关系时具有很强的能力,但也可能存在过拟合和解释性不足的问题。因此,在实际应用中需要根据具体问题和数据集的特点选择合适的模型和参数,并进行充分的验证和测试。

  1. 数据
date price bedrooms bathrooms sqft_living sqft_lot floors waterfront view condition sqft_above sqft_basement yr_built yr_renovated street city statezip country
2014/5/2 0:00 313000 3 1.5 1340 7912 1.5 0 0 3 1340 0 1955 2005 18810 Densmore Ave N Shoreline WA 98133 USA
2014/5/2 0:00 2384000 5 2.5 3650 9050 2 0 4 5 3370 280 1921 0 709 W Blaine St Seattle WA 98119 USA
2014/5/2 0:00 342000 3 2 1930 11947 1 0 0 4 1930 0 1966 0 26206-26214 143rd Ave SE Kent WA 98042 USA
2014/5/2 0:00 420000 3 2.25 2000 8030 1 0 0 4 1000 1000 1963 0 857 170th Pl NE Bellevue WA 98008 USA
2014/5/2 0:00 550000 4 2.5 1940 10500 1 0 0 4 1140 800 1976 1992 9105 170th Ave NE Redmond WA 98052 USA
2014/5/2 0:00 490000 2 1 880 6380 1 0 0 3 880 0 1938 1994 522 NE 88th St Seattle WA 98115 USA
2014/5/2 0:00 335000 2 2 1350 2560 1 0 0 3 1350 0 1976 0 2616 174th Ave NE Redmond WA 98052 USA
2014/5/2 0:00 482000 4 2.5 2710 35868 2 0 0 3 2710 0 1989 0 23762 SE 253rd Pl Maple Valley WA 98038 USA
2014/5/2 0:00 452500 3 2.5 2430 88426 1 0 0 4 1570 860 1985 0 46611-46625 SE 129th St North Bend WA 98045 USA
2014/5/2 0:00 640000 4 2 1520 6200 1.5 0 0 3 1520 0 1945 2010 6811 55th Ave NE Seattle WA 98115 USA
2014/5/2 0:00 463000 3 1.75 1710 7320 1 0 0 3 1710 0 1948 1994 Burke-Gilman Trail Lake Forest Park WA 98155 USA
2014/5/2 0:00 1400000 4 2.5 2920 4000 1.5 0 0 5 1910 1010 1909 1988 3838-4098 44th Ave NE Seattle WA 98105 USA
2014/5/2 0:00 588500 3 1.75 2330 14892 1 0 0 3 1970 360 1980 0 1833 220th Pl NE Sammamish WA 98074 USA
2014/5/2 0:00 365000 3 1 1090 6435 1 0 0 4 1090 0 1955 2009 2504 SW Portland Ct Seattle WA 98106 USA
2014/5/2 0:00 1200000 5 2.75 2910 9480 1.5 0 0 3 2910 0 1939 1969 3534 46th Ave NE Seattle WA 98105 USA
2014/5/2 0:00 242500 3 1.5 1200 9720 1 0 0 4 1200 0 1965 0 14034 SE 201st St Kent WA 98042 USA
2014/5/2 0:00 419000 3 1.5 1570 6700 1 0 0 4 1570 0 1956 0 15424 SE 9th St Bellevue WA 98007 USA
2014/5/2 0:00 367500 4 3 3110 7231 2 0 0 3 3110 0 1997 0 11224 SE 306th Pl Auburn WA 98092 USA
2014/5/2 0:00 257950 3 1.75 1370 5858 1 0 0 3 1370 0 1987 2000 1605 S 245th Pl Des Moines WA 98198 USA
2014/5/2 0:00 275000 3 1.5 1180 10277 1 0 0 3 1180 0 1983 2009 12425 415th Ave SE North Bend WA 98045 USA
2014/5/2 0:00 750000 3 1.75 2240 10578 2 0 0 5 1550 690 1923 0 3225 NE 92nd St Seattle WA 98115 USA
2014/5/2 0:00 435000 4 1 1450 8800 1 0 0 4 1450 0 1954 1979 3922 154th Ave SE Bellevue WA 98006 USA
2014/5/2 0:00 626000 3 2.25 1750 1572 2.5 0 0 3 1470 280 2005 0 3140 Franklin Ave E Seattle WA 98102 USA
2014/5/2 0:00 612500 4 2.5 2730 12261 2 0 0 3 2730 0 1991 0 10212 NE 156th Pl Bothell WA 98011 USA
2014/5/2 0:00 495000 4 1.75 1600 6380 1 0 0 3 1130 470 1959 1989 2021 NE 100th St Seattle WA 98125 USA
2014/5/2 0:00 285000 3 2.5 2090 10834 1 0 0 4 1360 730 1987 0 27736 23rd Avenue South Federal Way WA 98003 USA
2014/5/2 0:00 615000 3 1.75 2360 7291 1 0 0 4 1360 1000 1948 0 8436-8438 41st Ave SW Seattle WA 98136 USA
2014/5/2 0:00 698000 4 2.25 2200 11250 1.5 0 0 5 1300 900 1920 0 1036 4th St Kirkland WA 98033 USA
2014/5/2 0:00 675000 5 2.5 2820 67518 2 0 0 3 2820 0 1979 2014 23525 SE 32nd Way Issaquah WA 98029 USA
2014/5/2 0:00 790000 3 2.5 2600 4750 1 0 0 4 1700 900 1951 1999 3314 NW 75th St Seattle WA 98117 USA
2014/5/2 0:00 382500 4 1.75 1560 8700 1 0 0 4 1560 0 1967 0 14104 119th Ave NE Kirkland WA 98034 USA
2014/5/2 0:00 499950 4 2.5 2860 3345 2 0 0 3 2190 670 2004 2003 20120 137th Ave NE Woodinville WA 98072 USA
2014/5/2 0:00 650000 4 2 1820 5000 1.5 0 1 3 1640 180 1945 2010 7201-7399 55th Ave NE Seattle WA 98115 USA
2014/5/2 0:00 625000 4 2.5 2820 8408 2 0 0 3 2820 0 2014 0 17052 4th Ave NE Shoreline WA 98155 USA
2014/5/2 0:00 400000 4 2.5 3630 42884 1.5 0 0 3 2300 1330 1979 2014 5172-5198 Heather Ave SE Auburn WA 98092 USA
2014/5/2 0:00 604000 3 2.5 3240 33151 2 0 2 3 3240 0 1995 0 30822 36th Ct SW Federal Way WA 98023 USA
2014/5/2 0:00 440000 2 1 800 4850 1 0 0 4 800 0 1944 0 4801-4899 6th Ave NW Seattle WA 98107 USA
2014/5/2 0:00 287200 3 3 1850 19966 1 0 0 4 1090 760 1992 0 23017 SE 281st Ct Maple Valley WA 98038 USA
2014/5/2 0:00 403000 3 2 1960 13100 1 0 2 5 1650 310 1957 0 17825 4th Ave SW Normandy Park WA 98166 USA
2014/5/2 0:00 750000 3 2.5 2390 6550 1 0 2 4 1440 950 1955 2009 3628 59th Ave SW Seattle WA 98116 USA
2014/5/2 0:00 335000 3 2.25 1580 16215 1 0 0 4 1580 0 1978 2000 4460 332nd Ave SE Fall City WA 98024 USA
2014/5/2 0:00 260000 4 2 1480 8625 1 0 0 4 1480 0 1974 0 2019 Aberdeen Pl SE Renton WA 98055 USA
2014/5/2 0:00 308500 2 1 850 6174 1 0 0 4 850 0 1950 1983 121 NE 147th St Shoreline WA 98155 USA
2014/5/2 0:00 439950 3 2.5 1770 2875 2 0 0 3 1770 0 1990 2009 4458 51st Ave SW Seattle WA 98116 USA
2014/5/2 0:00 235000 2 1 1210 9400 1 0 0 2 1210 0 1949 0 7542 21st Ave SW Seattle WA 98106 USA
2014/5/2 0:00 315000 3 1 1160 9180 1 0 0 3 1160 0 1968 1997 15804 198th Pl NE Woodinville WA 98077 USA
2014/5/2 0:00 437500 3 2.25 1970 35100 2 0 0 4 1970 0 1977 0 26069 SE 154th St Issaquah WA 98027 USA
2014/5/2 0:00 407500 3 2.5 1930 10460 2 0 0 3 1930 0 1996 0 4314 NE 6th Pl Renton WA 98059 USA
2014/5/2 0:00 445700 3 2.5 1270 1180 3 0 0 3 1270 0 2001 0 2640 NW 56th St Seattle WA 98107 USA
2014/5/2 0:00 838000 4 2.5 3310 42998 2 0 0 3 3310 0 2001 0 15712 NE 136th Pl Redmond WA 98052 USA
2014/5/2 0:00 630000 4 2.75 2710 37277 2 0 0 3 2710 0 2000 0 26429 SE 154th Pl Issaquah WA 98027 USA
2014/5/2 0:00 550000 3 1.75 2910 35200 1.5 0 0 3 2910 0 1979 2014 3923 229th Pl SE Sammamish WA 98075 USA
2014/5/2 0:00 805000 3 2 2710 4500 1.5 0 0 4 1880 830 1929 0 6222 30th Ave NE Seattle WA 98115 USA
2014/5/2 0:00 284000 3 1.75 1800 23103 1 0 0 3 1800 0 1968 1997 32418 NE 50th St Carnation WA 98014 USA
2014/5/2 0:00 470000 5 2.5 2210 9655 1 0 0 3 1460 750 1976 0 19334 89th Ave NE Bothell WA 98011 USA
2014/5/2 0:00 430000 4 1.5 1920 10000 1 0 0 4 1070 850 1954 1979 4071 156th Ave SE Bellevue WA 98006 USA
2014/5/2 0:00 491500 4 1.75 2190 125452 1 0 2 3 2190 0 1968 1997 36850 204th Ave SE Auburn WA 98092 USA
2014/5/2 0:00 785000 5 3.25 3660 11995 2 0 2 3 3660 0 2006 0 7425 Snowberry Ave SE Snoqualmie WA 98065 USA
2014/5/2 0:00 385000 3 3.25 1320 1327 2 0 0 3 1040 280 2008 0 3400 21st Ave W Seattle WA 98199 USA
2014/5/2 0:00 295000 2 2.5 1630 1368 2 0 0 3 1280 350 2009 0 5944-6082 Delridge Way SW Seattle WA 98106 USA
2014/5/2 0:00 555000 4 2.5 3310 6500 2 0 0 3 3310 0 2012 1912 35229 SE Terrace St Snoqualmie WA 98065 USA
2014/5/2 0:00 459990 3 2.5 2680 5539 2 0 0 3 2680 0 2013 1923 13800 453rd Ave SE North Bend WA 98045 USA
2014/5/2 0:00 625000 4 3.25 2730 54014 1 0 0 3 1560 1170 2007 0 9927 174th Ave SE Renton WA 98059 USA
2014/5/2 0:00 300000 3 2.5 2540 5050 2 0 0 3 2540 0 2006 0 29734 215th Terrace SE Kent WA 98042 USA
2014/5/3 0:00 625000 4 2.75 2920 6605 2 0 0 3 2920 0 2012 1912 5608 NE 5th Cir Renton WA 98059 USA
2014/5/3 0:00 553000 2 1 900 5000 1 0 0 3 900 0 1944 0 8053 29th Ave NW Seattle WA 98117 USA
2014/5/3 0:00 379880 3 2.5 1650 14054 1 0 0 4 1130 520 1986 0 13256 242nd Pl SE Issaquah WA 98027 USA
2014/5/3 0:00 310000 3 1 1010 9945 1 0 0 4 1010 0 1973 0 7528 N Fork Rd SE Snoqualmie WA 98065 USA
2014/5/4 0:00 775000 2 2.5 2680 7392 1 0 0 3 2680 0 2004 2003 13134 234th Ct NE Redmond WA 98053 USA
2014/5/4 0:00 365000 3 2.5 2200 7350 1 0 0 5 1570 630 1988 0 13420 SE 182nd St Renton WA 98058 USA
2014/5/4 0:00 331950 4 2.5 2530 9933 2 0 2 3 2010 520 1990 2009 925 48th Ct Auburn WA 98092 USA
2014/5/4 0:00 783500 3 2.5 2850 7130 2 0 0 3 1990 860 1980 0 151 Euclid Ave Seattle WA 98122 USA
2014/5/4 0:00 628000 4 2 2280 6010 1 0 0 3 1140 1140 1900 2005 205-206 Euclid Ave Seattle WA 98122 USA
2014/5/5 0:00 560000 3 2.5 1900 8744 2 0 0 3 1900 0 1987 2000 22314 NE 11th Pl Sammamish WA 98074 USA
2014/5/5 0:00 900000 3 1 1330 77972 1 0 0 3 1330 0 1928 1954 13615 NE 100th St Kirkland WA 98033 USA
2014/5/5 0:00 531000 2 3 1270 1175 2 0 0 3 1110 160 2000 0 1411 N 48th St Seattle WA 98103 USA
2014/5/5 0:00 831000 4 3 2170 4000 2 0 0 4 1610 560 1982 2011 120 31st Ave E Seattle WA 98112 USA
2014/5/5 0:00 780000 4 2.5 2730 10281 2 0 2 3 2730 0 1996 0 23140 NE 14th Ct Sammamish WA 98074 USA
2014/5/5 0:00 755000 4 2.5 2120 10202 1 0 0 4 1620 500 1960 2001 12645 SE 27th St Bellevue WA 98005 USA
2014/5/5 0:00 705380 3 2.5 2490 4343 2 0 0 3 2490 0 2003 0 3187 NE Larkspur Ln Issaquah WA 98029 USA
2014/5/5 0:00 627000 4 2.25 1990 7712 1 0 0 3 1210 780 1973 2013 18915 SE 42nd Pl Issaquah WA 98027 USA
2014/5/5 0:00 865000 4 3 3690 9892 2 0 0 3 3690 0 1998 2006 1765 267th Ct SE Sammamish WA 98075 USA
  1. 使用留出法划分数据集,训练集:测试集为7:3
# 使用留出法划分数据集,训练集:测试集为7:3
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
  1. 使用多层感知机回归模型对训练集进行训练
# 初始化多层感知机回归模型,并设置参数
model = MLPRegressor(max_iter=1000, random_state=42, hidden_layer_sizes=(100,))
  1. 使用训练好的模型对测试集进行预测并输出预测结果模型的MSE和MAE
# 对训练集进行训练
model.fit(X_train, y_train)

# 使用训练好的模型对测试集进行预测
y_pred = model.predict(X_test)

# 计算模型的均方误差(MSE)和平均绝对误差(MAE)
mse = mean_squared_error(y_test, y_pred)
mae = mean_absolute_error(y_test, y_pred)

# 输出预测结果和模型的MSE和MAE
print("预测结果:", y_pred)
print("模型的均方误差(MSE):", mse)
print("模型的平均绝对误差(MAE):", mae)
  1. 使用训练好的模型对如下数据的房价进行预测并输出结果。
# 创建新数据
new_data = pd.DataFrame([[3.0, 2.5, 1490, 8102, 2.0, 0, 0, 4, 1490, 0, 1990, 0]], columns=feature_names)

# 使用训练好的模型对提供的数据进行预测
predicted_price = model.predict(new_data)
print("提供的数据的房价预测结果:", predicted_price)

数据:[3.0,2.5,1490,8102,2.0,0,0,4,1490,0,1990,0]

 完整代码:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPRegressor
from sklearn.metrics import mean_squared_error, mean_absolute_error

# 读取数据
df = pd.read_csv('house-price.csv')
df = df.drop(columns=['date', 'street', 'city', 'statezip', 'country'])

# 设置特征名称
feature_names = ['bedrooms', 'bathrooms', 'sqft_living', 'sqft_lot', 'floors', 'waterfront', 'view', 'condition', 'sqft_above', 'sqft_basement', 'yr_built', 'yr_renovated']
X = df[feature_names]
y = df['price']

# 使用留出法划分数据集,训练集:测试集为7:3
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 初始化多层感知机回归模型,并设置参数
model = MLPRegressor(max_iter=1000, random_state=42, hidden_layer_sizes=(100,))

# 对训练集进行训练
model.fit(X_train, y_train)

# 使用训练好的模型对测试集进行预测
y_pred = model.predict(X_test)

# 计算模型的均方误差(MSE)和平均绝对误差(MAE)
mse = mean_squared_error(y_test, y_pred)
mae = mean_absolute_error(y_test, y_pred)

# 输出预测结果和模型的MSE和MAE
print("预测结果:", y_pred)
print("模型的均方误差(MSE):", mse)
print("模型的平均绝对误差(MAE):", mae)

# 创建新数据
new_data = pd.DataFrame([[3.0, 2.5, 1490, 8102, 2.0, 0, 0, 4, 1490, 0, 1990, 0]], columns=feature_names)

# 使用训练好的模型对提供的数据进行预测
predicted_price = model.predict(new_data)
print("提供的数据的房价预测结果:", predicted_price)

 

5.神经网络分类任务(4-3)

神经网络分类任务是指利用神经网络模型对输入数据进行分类。在分类任务中,神经网络通过学习输入数据中的特征和模式,将输入数据划分为不同的类别。这些类别可以是预定义的,也可以是神经网络在训练过程中自动学习得到的。

神经网络分类任务通常包括以下几个步骤:

  1. 数据准备:收集具有标签(即类别)的数据集,并进行必要的数据预处理和特征提取。
  2. 神经网络设计:选择合适的神经网络结构,如卷积神经网络(CNN)、循环神经网络(RNN)、递归神经网络(RNNs的一种)或图神经网络(GNN)等,并确定网络的层数、节点数、激活函数等参数。
  3. 训练神经网络:使用带有标签的训练数据对神经网络进行训练。在训练过程中,神经网络会学习输入数据中的特征和模式,并调整网络参数以最小化预测误差。
  4. 评估和优化:使用测试数据对训练好的神经网络进行评估,计算分类准确率、召回率、F1分数等指标。根据评估结果对神经网络进行优化,如调整网络结构、改变学习率等。
  5. 部署和应用:将训练好的神经网络部署到实际应用中,对新的输入数据进行分类和预测。

在神经网络分类任务中,不同的神经网络结构适用于不同的数据类型和任务需求。例如,卷积神经网络在图像分类任务中表现出色,而循环神经网络则更适合处理序列数据(如文本、语音等)。图神经网络则特别适用于处理图结构数据,如社交网络、蛋白质结构等。

需要注意的是,神经网络分类任务的性能受到多种因素的影响,包括数据集的质量、网络结构的选择、参数的调整等。因此,在实际应用中需要根据具体情况进行选择和调整,以获得最佳的分类性能。

  1. 数据
企业编号 X1 X2 X3 Y
1 -62.8 -89.5 1.7 0
2 3.3 -3.5 1.1 0
3 -120.8 -103.2 2.5 0
4 -18.1 -28.8 1.1 0
5 -3.8 -50.6 0.9 0
6 43 16.4 1.3 1
7 47 16 1.9 1
8 -3.3 4 2.7 1
9 35 20.8 1.9 1
10 46.7 12.6 0.9 1
11 -61.2 -56.2 1.7 0
12 -20.3 -17.4 1 0
13 -194.5 -25.8 0.5 0
14 20.8 -4.3 1 0
15 -106.1 -22.9 1.5 0
16 20.8 12.5 2.4 1
17 33 23.6 1.5 1
18 26.1 10.4 2.1 1
19 68.6 13.8 1.6 1
20 37.3 33.4 3.5 1
21 -49.2 -17.2 0.3
22 -19.2 -36.7 0.8
23 40.6 5.8 1.8
24 34.6 26.4 1.8
25 19.9 26.7 2.3
  1. 用1-10行数据作为训练集,用11-20行数据作为测试集
# 加载数据
df = pd.read_excel('企业贷款审批数据表.xlsx')  # 请替换成你的数据文件路径

# 划分训练集和测试集
train_data = df.iloc[0:17]  # 使用1-10行数据作为训练集
test_data = df.iloc[17:20]  # 使用11-20行数据作为测试集

# 特征和标签
X_train = train_data.drop(columns=['Y'])  # 特征
y_train = train_data['Y']  # 标签
X_test = test_data.drop(columns=['Y'])  # 特征
y_test = test_data['Y']  # 标签
  1. 使用多层感知机分类模型对训练集进行训练
# 初始化多层感知机分类模型
model = MLPClassifier(max_iter=1000, random_state=42)

# 训练模型
model.fit(X_train, y_train)
  1. 使用训练好的模型对测试集进行预测并输出预测结果模型准确度
# 对测试集进行预测
y_pred = model.predict(X_test)

# 计算模型准确度
accuracy = accuracy_score(y_test, y_pred)
print("模型准确度:", accuracy)

  1. 使用模型对21-25行数据的贷款申请进行评估,输出评估结果(1为同意,0为拒绝)。
# 准备新数据
new_data = df.iloc[20:25].drop(columns=['Y'])

# 使用训练好的模型进行评估
evaluation_result = model.predict(new_data)
print("评估结果:", evaluation_result)

完整代码:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import accuracy_score

# 加载数据
df = pd.read_excel('企业贷款审批数据表.xlsx')  # 请替换成你的数据文件路径

# 划分训练集和测试集
train_data = df.iloc[0:17]  # 使用1-10行数据作为训练集
test_data = df.iloc[17:20]  # 使用11-20行数据作为测试集

# 特征和标签
X_train = train_data.drop(columns=['Y'])  # 特征
y_train = train_data['Y']  # 标签
X_test = test_data.drop(columns=['Y'])  # 特征
y_test = test_data['Y']  # 标签

# 初始化多层感知机分类模型
model = MLPClassifier(max_iter=1000, random_state=42)

# 训练模型
model.fit(X_train, y_train)

# 对测试集进行预测
y_pred = model.predict(X_test)

# 计算模型准确度
accuracy = accuracy_score(y_test, y_pred)
print("模型准确度:", accuracy)

# 准备新数据
new_data = df.iloc[20:25].drop(columns=['Y'])

# 使用训练好的模型进行评估
evaluation_result = model.predict(new_data)
print("评估结果:", evaluation_result)


网站公告

今日签到

点亮在社区的每一天
去签到