Pytorch使用NN神经网络模型实现经典波士顿boston房价预测问题

使用Python和Numpy进行波士顿房价预测任务(二)【深度学习入门_学习笔记】 使用Python和Numpy进行波士顿房价预测任务–详解 阅读详情

Pytorch使用多层神经网络模型实现经典波士顿boston房价预测问题

波士顿房价数据集介绍

波士顿房价数据集是一个经典的机器学习数据集,用于预测波士顿地区房屋的中位数价格。该数据集包含了506个样本,每个样本有13个特征,包括城镇的各种指标,如犯罪率、住宅用地比例、每个城镇的非零售商业用地比例等。目标变量是房屋的中位数价格(以千美元为单位)。

以下是波士顿房价数据集的特征列表:

CRIM:城镇的犯罪率 ZN:住宅用地超过 25000 平方英尺的比例 INDUS:每个城镇的非零售商业用地比例
CHAS:查尔斯河虚拟变量(如果附近是河流,则为1;否则为0) NOX:一氧化氮浓度(每千万份) RM:每个住宅的平均房间数
AGE:1940 年之前建造的自住单位比例 DIS:到波士顿五个就业中心的加权距离 RAD:径向公路的可达性指数 TAX:每 10000
美元的全价值财产税率 PTRATIO:每个城镇的学生与教师比例 B:计算公式为1000(Bk - 0.63)^2,其中Bk是城镇的黑人比例
LSTAT:低收入人群的百分比
波士顿房价数据集通常用于回归问题的训练和测试,旨在预测房屋的中位数价格。这个数据集被广泛应用于机器学习和数据科学的教学和实践中,用于评估不同算法和模型的性能。

1、引入依赖库和模块

import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

2: 准备数据集

# 加载Boston房价数据集
data = load_boston()
X, y = data['data'], data['target']
C:\Users\Admin\AppData\Roaming\Python\Python37\site-packages\sklearn\utils\deprecation.py:87: FutureWarning: Function load_boston is deprecated; `load_boston` is deprecated in 1.0 and will be removed in 1.2.

    The Boston housing prices dataset has an ethical problem. You can refer to
    the documentation of this function for further details.

    The scikit-learn maintainers therefore strongly discourage the use of this
    dataset unless the purpose of the code is to study and educate about
    ethical issues in data science and machine learning.

    In this case special case, you can fetch the dataset from the original
    source::

        import pandas as pd
        import numpy as np


        data_url = "http://lib.stat.cmu.edu/datasets/boston"
        raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None)
        data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
        target = raw_df.values[1::2, 2]

    Alternative datasets include the California housing dataset (i.e.
    func:`~sklearn.datasets.fetch_california_housing`) and the Ames housing
    dataset. You can load the datasets as follows:

        from sklearn.datasets import fetch_california_housing
        housing = fetch_california_housing()

    for the California housing dataset and:

        from sklearn.datasets import fetch_openml
        housing = fetch_openml(name="house_prices", as_frame=True)

    for the Ames housing dataset.
    
  warnings.warn(msg, category=FutureWarning)

警告不用理会,也可以按照警告里的内容进行修改

#3、 划分训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

4、数据归一化

scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

5、转换为PyTorch张量

X_train = torch.tensor(X_train, dtype=torch.float32)
X_test = torch.tensor(X_test, dtype=torch.float32)
y_train = torch.tensor(y_train, dtype=torch.float32).view(-1, 1)
y_test = torch.tensor(y_test, dtype=torch.float32).view(-1, 1)

4、定义神经网络模型

class FeedforwardNN(nn.Module):
    def __init__(self, input_dim, hidden_dim, output_dim):
        super(FeedforwardNN, self).__init__()
        self.fc1 = nn.Linear(input_dim, hidden_dim)
        self.relu = nn.ReLU()
        self.fc2 = nn.Linear(hidden_dim, output_dim)

    def forward(self, x):
        x = self.fc1(x)
        x = self.relu(x)
        x = self.fc2(x)
        return x

5、定义训练和评估函数

def train(model, criterion, optimizer, X, y, num_epochs=100, batch_size=32):
    model.train()
    num_samples = X.shape[0]
    num_batches = num_samples // batch_size

    for epoch in range(num_epochs):
        total_loss = 0
        for batch_idx in range(num_batches):
            start_idx = batch_idx * batch_size
            end_idx = start_idx + batch_size
            batch_X = X[start_idx:end_idx]
            batch_y = y[start_idx:end_idx]

            optimizer.zero_grad()
            outputs = model(batch_X)
            loss = criterion(outputs, batch_y)
            loss.backward()
            optimizer.step()

            total_loss += loss.item()

        print(f"Epoch {epoch + 1}/{num_epochs}, Loss: {total_loss / num_batches:.4f}")

def evaluate(model, criterion, X, y):
    model.eval()
    with torch.no_grad():
        outputs = model(X)
        loss = criterion(outputs, y)
        rmse = torch.sqrt(loss)
        mae = torch.mean(torch.abs(outputs - y))
    return loss.item(), rmse.item(), mae.item()

6: 运行训练和评估

# 设置模型参数
input_dim = X_train.shape[1]
hidden_dim = 64
output_dim = 1

7、初始化模型

model = FeedforwardNN(input_dim, hidden_dim, output_dim)

8、定义损失函数和优化器

criterion = nn.MSELoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)

9、训练模型

train(model, criterion, optimizer, X_train, y_train, num_epochs=500, batch_size=32)
Epoch 1/500, Loss: 7.6713
Epoch 2/500, Loss: 7.6533
Epoch 3/500, Loss: 7.6367
Epoch 4/500, Loss: 7.6191
Epoch 5/500, Loss: 7.6038
Epoch 6/500, Loss: 7.5861
Epoch 7/500, Loss: 7.5701
Epoch 8/500, Loss: 7.5533
Epoch 9/500, Loss: 7.5396
Epoch 10/500, Loss: 7.5219
Epoch 11/500, Loss: 7.5071
Epoch 12/500, Loss: 7.4910
Epoch 13/500, Loss: 7.4769
Epoch 14/500, Loss: 7.4604
Epoch 15/500, Loss: 7.4455
Epoch 16/500, Loss: 7.4301
Epoch 17/500, Loss: 7.4159
Epoch 18/500, Loss: 7.3997
Epoch 19/500, Loss: 7.3860
Epoch 20/500, Loss: 7.3718
Epoch 21/500, Loss: 7.3559
Epoch 22/500, Loss: 7.3419
Epoch 23/500, Loss: 7.3277
Epoch 24/500, Loss: 7.3155
Epoch 25/500, Loss: 7.3003
Epoch 26/500, Loss: 7.2862
Epoch 27/500, Loss: 7.2728
Epoch 28/500, Loss: 7.2588
Epoch 29/500, Loss: 7.2454
Epoch 30/500, Loss: 7.2323
Epoch 31/500, Loss: 7.2186
Epoch 32/500, Loss: 7.2040
Epoch 33/500, Loss: 7.1909
Epoch 34/500, Loss: 7.1771
Epoch 35/500, Loss: 7.1646
Epoch 36/500, Loss: 7.1500
Epoch 37/500, Loss: 7.1361
Epoch 38/500, Loss: 7.1248
Epoch 39/500, Loss: 7.1110
Epoch 40/500, Loss: 7.0965
Epoch 41/500, Loss: 7.0860
Epoch 42/500, Loss: 7.0732
Epoch 43/500, Loss: 7.0594
Epoch 44/500, Loss: 7.0482
Epoch 45/500, Loss: 7.0353
Epoch 46/500, Loss: 7.0239
Epoch 47/500, Loss: 7.0115
Epoch 48/500, Loss: 6.9981
Epoch 49/500, Loss: 6.9871
Epoch 50/500, Loss: 6.9741
Epoch 51/500, Loss: 6.9618
Epoch 52/500, Loss: 6.9509
Epoch 53/500, Loss: 6.9365
Epoch 54/500, Loss: 6.9262
Epoch 55/500, Loss: 6.9139
Epoch 56/500, Loss: 6.9012
Epoch 57/500, Loss: 6.8910
Epoch 58/500, Loss: 6.8762
Epoch 59/500, Loss: 6.8628
Epoch 60/500, Loss: 6.8507
Epoch 61/500, Loss: 6.8350
Epoch 62/500, Loss: 6.8210
Epoch 63/500, Loss: 6.8089
Epoch 64/500, Loss: 6.7953
Epoch 65/500, Loss: 6.7840
Epoch 66/500, Loss: 6.7698
Epoch 67/500, Loss: 6.7570
Epoch 68/500, Loss: 6.7478
Epoch 69/500, Loss: 6.7344
Epoch 70/500, Loss: 6.7222
Epoch 71/500, Loss: 6.7105
Epoch 72/500, Loss: 6.6986
Epoch 73/500, Loss: 6.6863
Epoch 74/500, Loss: 6.6732
Epoch 75/500, Loss: 6.6629
Epoch 76/500, Loss: 6.6499
Epoch 77/500, Loss: 6.6392
Epoch 78/500, Loss: 6.6261
Epoch 79/500, Loss: 6.6136
Epoch 80/500, Loss: 6.6037
Epoch 81/500, Loss: 6.5918
Epoch 82/500, Loss: 6.5786
Epoch 83/500, Loss: 6.5673
Epoch 84/500, Loss: 6.5566
Epoch 85/500, Loss: 6.5462
Epoch 86/500, Loss: 6.5339
Epoch 87/500, Loss: 6.5224
Epoch 88/500, Loss: 6.5124
Epoch 89/500, Loss: 6.5001
Epoch 90/500, Loss: 6.4900
Epoch 91/500, Loss: 6.4794
Epoch 92/500, Loss: 6.4690
Epoch 93/500, Loss: 6.4578
Epoch 94/500, Loss: 6.4471
Epoch 95/500, Loss: 6.4381
Epoch 96/500, Loss: 6.4284
Epoch 97/500, Loss: 6.4176
Epoch 98/500, Loss: 6.4070
Epoch 99/500, Loss: 6.3981
Epoch 100/500, Loss: 6.3892
Epoch 101/500, Loss: 6.3782
Epoch 102/500, Loss: 6.3686
Epoch 103/500, Loss: 6.3586
Epoch 104/500, Loss: 6.3521
Epoch 105/500, Loss: 6.3401
Epoch 106/500, Loss: 6.3315
Epoch 107/500, Loss: 6.3212
Epoch 108/500, Loss: 6.3127
Epoch 109/500, Loss: 6.3046
Epoch 110/500, Loss: 6.2946
Epoch 111/500, Loss: 6.2848
Epoch 112/500, Loss: 6.2760
Epoch 113/500, Loss: 6.2675
Epoch 114/500, Loss: 6.2588
Epoch 115/500, Loss: 6.2495
Epoch 116/500, Loss: 6.2413
Epoch 117/500, Loss: 6.2320
Epoch 118/500, Loss: 6.2219
Epoch 119/500, Loss: 6.2147
Epoch 120/500, Loss: 6.2047
Epoch 121/500, Loss: 6.1957
Epoch 122/500, Loss: 6.1858
Epoch 123/500, Loss: 6.1764
Epoch 124/500, Loss: 6.1671
Epoch 125/500, Loss: 6.1602
Epoch 126/500, Loss: 6.1496
Epoch 127/500, Loss: 6.1408
Epoch 128/500, Loss: 6.1315
Epoch 129/500, Loss: 6.1248
Epoch 130/500, Loss: 6.1140
Epoch 131/500, Loss: 6.1068
Epoch 132/500, Loss: 6.0980
Epoch 133/500, Loss: 6.0892
Epoch 134/500, Loss: 6.0806
Epoch 135/500, Loss: 6.0731
Epoch 136/500, Loss: 6.0651
Epoch 137/500, Loss: 6.0563
Epoch 138/500, Loss: 6.0487
Epoch 139/500, Loss: 6.0428
Epoch 140/500, Loss: 6.0331
Epoch 141/500, Loss: 6.0275
Epoch 142/500, Loss: 6.0188
Epoch 143/500, Loss: 6.0125
Epoch 144/500, Loss: 6.0041
Epoch 145/500, Loss: 5.9995
Epoch 146/500, Loss: 5.9901
Epoch 147/500, Loss: 5.9834
Epoch 148/500, Loss: 5.9781
Epoch 149/500, Loss: 5.9689
Epoch 150/500, Loss: 5.9638
Epoch 151/500, Loss: 5.9542
Epoch 152/500, Loss: 5.9498
Epoch 153/500, Loss: 5.9417
Epoch 154/500, Loss: 5.9355
Epoch 155/500, Loss: 5.9283
Epoch 156/500, Loss: 5.9228
Epoch 157/500, Loss: 5.9137
Epoch 158/500, Loss: 5.9079
Epoch 159/500, Loss: 5.8998
Epoch 160/500, Loss: 5.8935
Epoch 161/500, Loss: 5.8862
Epoch 162/500, Loss: 5.8799
Epoch 163/500, Loss: 5.8727
Epoch 164/500, Loss: 5.8673
Epoch 165/500, Loss: 5.8595
Epoch 166/500, Loss: 5.8540
Epoch 167/500, Loss: 5.8460
Epoch 168/500, Loss: 5.8405
Epoch 169/500, Loss: 5.8328
Epoch 170/500, Loss: 5.8278
Epoch 171/500, Loss: 5.8194
Epoch 172/500, Loss: 5.8159
Epoch 173/500, Loss: 5.8087
Epoch 174/500, Loss: 5.8011
Epoch 175/500, Loss: 5.7945
Epoch 176/500, Loss: 5.7897
Epoch 177/500, Loss: 5.7834
Epoch 178/500, Loss: 5.7748
Epoch 179/500, Loss: 5.7701
Epoch 180/500, Loss: 5.7621
Epoch 181/500, Loss: 5.7586
Epoch 182/500, Loss: 5.7515
Epoch 183/500, Loss: 5.7426
Epoch 184/500, Loss: 5.7382
Epoch 185/500, Loss: 5.7301
Epoch 186/500, Loss: 5.7249
Epoch 187/500, Loss: 5.7165
Epoch 188/500, Loss: 5.7118
Epoch 189/500, Loss: 5.7042
Epoch 190/500, Loss: 5.6969
Epoch 191/500, Loss: 5.6916
Epoch 192/500, Loss: 5.6836
Epoch 193/500, Loss: 5.6790
Epoch 194/500, Loss: 5.6699
Epoch 195/500, Loss: 5.6653
Epoch 196/500, Loss: 5.6584
Epoch 197/500, Loss: 5.6511
Epoch 198/500, Loss: 5.6476
Epoch 199/500, Loss: 5.6388
Epoch 200/500, Loss: 5.6354
Epoch 201/500, Loss: 5.6268
Epoch 202/500, Loss: 5.6211
Epoch 203/500, Loss: 5.6145
Epoch 204/500, Loss: 5.6094
Epoch 205/500, Loss: 5.6006
Epoch 206/500, Loss: 5.5967
Epoch 207/500, Loss: 5.5900
Epoch 208/500, Loss: 5.5822
Epoch 209/500, Loss: 5.5770
Epoch 210/500, Loss: 5.5698
Epoch 211/500, Loss: 5.5644
Epoch 212/500, Loss: 5.5561
Epoch 213/500, Loss: 5.5518
Epoch 214/500, Loss: 5.5444
Epoch 215/500, Loss: 5.5366
Epoch 216/500, Loss: 5.5314
Epoch 217/500, Loss: 5.5268
Epoch 218/500, Loss: 5.5187
Epoch 219/500, Loss: 5.5131
Epoch 220/500, Loss: 5.5068
Epoch 221/500, Loss: 5.5014
Epoch 222/500, Loss: 5.4941
Epoch 223/500, Loss: 5.4913
Epoch 224/500, Loss: 5.4829
Epoch 225/500, Loss: 5.4784
Epoch 226/500, Loss: 5.4715
Epoch 227/500, Loss: 5.4671
Epoch 228/500, Loss: 5.4601
Epoch 229/500, Loss: 5.4572
Epoch 230/500, Loss: 5.4490
Epoch 231/500, Loss: 5.4446
Epoch 232/500, Loss: 5.4384
Epoch 233/500, Loss: 5.4348
Epoch 234/500, Loss: 5.4285
Epoch 235/500, Loss: 5.4223
Epoch 236/500, Loss: 5.4176
Epoch 237/500, Loss: 5.4119
Epoch 238/500, Loss: 5.4079
Epoch 239/500, Loss: 5.4014
Epoch 240/500, Loss: 5.3977
Epoch 241/500, Loss: 5.3904
Epoch 242/500, Loss: 5.3862
Epoch 243/500, Loss: 5.3814
Epoch 244/500, Loss: 5.3757
Epoch 245/500, Loss: 5.3704
Epoch 246/500, Loss: 5.3649
Epoch 247/500, Loss: 5.3605
Epoch 248/500, Loss: 5.3544
Epoch 249/500, Loss: 5.3508
Epoch 250/500, Loss: 5.3437
Epoch 251/500, Loss: 5.3401
Epoch 252/500, Loss: 5.3322
Epoch 253/500, Loss: 5.3285
Epoch 254/500, Loss: 5.3220
Epoch 255/500, Loss: 5.3158
Epoch 256/500, Loss: 5.3105
Epoch 257/500, Loss: 5.3039
Epoch 258/500, Loss: 5.2994
Epoch 259/500, Loss: 5.2937
Epoch 260/500, Loss: 5.2889
Epoch 261/500, Loss: 5.2810
Epoch 262/500, Loss: 5.2789
Epoch 263/500, Loss: 5.2728
Epoch 264/500, Loss: 5.2654
Epoch 265/500, Loss: 5.2600
Epoch 266/500, Loss: 5.2539
Epoch 267/500, Loss: 5.2494
Epoch 268/500, Loss: 5.2418
Epoch 269/500, Loss: 5.2374
Epoch 270/500, Loss: 5.2297
Epoch 271/500, Loss: 5.2260
Epoch 272/500, Loss: 5.2195
Epoch 273/500, Loss: 5.2145
Epoch 274/500, Loss: 5.2074
Epoch 275/500, Loss: 5.2024
Epoch 276/500, Loss: 5.1976
Epoch 277/500, Loss: 5.1900
Epoch 278/500, Loss: 5.1856
Epoch 279/500, Loss: 5.1795
Epoch 280/500, Loss: 5.1757
Epoch 281/500, Loss: 5.1690
Epoch 282/500, Loss: 5.1647
Epoch 283/500, Loss: 5.1580
Epoch 284/500, Loss: 5.1540
Epoch 285/500, Loss: 5.1486
Epoch 286/500, Loss: 5.1452
Epoch 287/500, Loss: 5.1385
Epoch 288/500, Loss: 5.1349
Epoch 289/500, Loss: 5.1301
Epoch 290/500, Loss: 5.1254
Epoch 291/500, Loss: 5.1208
Epoch 292/500, Loss: 5.1149
Epoch 293/500, Loss: 5.1120
Epoch 294/500, Loss: 5.1068
Epoch 295/500, Loss: 5.1030
Epoch 296/500, Loss: 5.0981
Epoch 297/500, Loss: 5.0925
Epoch 298/500, Loss: 5.0896
Epoch 299/500, Loss: 5.0844
Epoch 300/500, Loss: 5.0810
Epoch 301/500, Loss: 5.0757
Epoch 302/500, Loss: 5.0706
Epoch 303/500, Loss: 5.0670
Epoch 304/500, Loss: 5.0618
Epoch 305/500, Loss: 5.0584
Epoch 306/500, Loss: 5.0533
Epoch 307/500, Loss: 5.0499
Epoch 308/500, Loss: 5.0440
Epoch 309/500, Loss: 5.0412
Epoch 310/500, Loss: 5.0359
Epoch 311/500, Loss: 5.0297
Epoch 312/500, Loss: 5.0271
Epoch 313/500, Loss: 5.0206
Epoch 314/500, Loss: 5.0179
Epoch 315/500, Loss: 5.0127
Epoch 316/500, Loss: 5.0063
Epoch 317/500, Loss: 5.0025
Epoch 318/500, Loss: 4.9961
Epoch 319/500, Loss: 4.9925
Epoch 320/500, Loss: 4.9870
Epoch 321/500, Loss: 4.9816
Epoch 322/500, Loss: 4.9774
Epoch 323/500, Loss: 4.9718
Epoch 324/500, Loss: 4.9690
Epoch 325/500, Loss: 4.9634
Epoch 326/500, Loss: 4.9600
Epoch 327/500, Loss: 4.9557
Epoch 328/500, Loss: 4.9497
Epoch 329/500, Loss: 4.9470
Epoch 330/500, Loss: 4.9420
Epoch 331/500, Loss: 4.9392
Epoch 332/500, Loss: 4.9343
Epoch 333/500, Loss: 4.9289
Epoch 334/500, Loss: 4.9265
Epoch 335/500, Loss: 4.9225
Epoch 336/500, Loss: 4.9191
Epoch 337/500, Loss: 4.9143
Epoch 338/500, Loss: 4.9098
Epoch 339/500, Loss: 4.9061
Epoch 340/500, Loss: 4.9012
Epoch 341/500, Loss: 4.8987
Epoch 342/500, Loss: 4.8925
Epoch 343/500, Loss: 4.8909
Epoch 344/500, Loss: 4.8861
Epoch 345/500, Loss: 4.8809
Epoch 346/500, Loss: 4.8776
Epoch 347/500, Loss: 4.8720
Epoch 348/500, Loss: 4.8688
Epoch 349/500, Loss: 4.8648
Epoch 350/500, Loss: 4.8588
Epoch 351/500, Loss: 4.8551
Epoch 352/500, Loss: 4.8507
Epoch 353/500, Loss: 4.8480
Epoch 354/500, Loss: 4.8435
Epoch 355/500, Loss: 4.8379
Epoch 356/500, Loss: 4.8354
Epoch 357/500, Loss: 4.8316
Epoch 358/500, Loss: 4.8261
Epoch 359/500, Loss: 4.8241
Epoch 360/500, Loss: 4.8184
Epoch 361/500, Loss: 4.8157
Epoch 362/500, Loss: 4.8125
Epoch 363/500, Loss: 4.8074
Epoch 364/500, Loss: 4.8043
Epoch 365/500, Loss: 4.7990
Epoch 366/500, Loss: 4.7977
Epoch 367/500, Loss: 4.7932
Epoch 368/500, Loss: 4.7878
Epoch 369/500, Loss: 4.7859
Epoch 370/500, Loss: 4.7827
Epoch 371/500, Loss: 4.7775
Epoch 372/500, Loss: 4.7755
Epoch 373/500, Loss: 4.7704
Epoch 374/500, Loss: 4.7683
Epoch 375/500, Loss: 4.7643
Epoch 376/500, Loss: 4.7599
Epoch 377/500, Loss: 4.7584
Epoch 378/500, Loss: 4.7536
Epoch 379/500, Loss: 4.7489
Epoch 380/500, Loss: 4.7471
Epoch 381/500, Loss: 4.7434
Epoch 382/500, Loss: 4.7381
Epoch 383/500, Loss: 4.7366
Epoch 384/500, Loss: 4.7324
Epoch 385/500, Loss: 4.7282
Epoch 386/500, Loss: 4.7255
Epoch 387/500, Loss: 4.7224
Epoch 388/500, Loss: 4.7180
Epoch 389/500, Loss: 4.7157
Epoch 390/500, Loss: 4.7106
Epoch 391/500, Loss: 4.7096
Epoch 392/500, Loss: 4.7055
Epoch 393/500, Loss: 4.7005
Epoch 394/500, Loss: 4.6988
Epoch 395/500, Loss: 4.6958
Epoch 396/500, Loss: 4.6909
Epoch 397/500, Loss: 4.6896
Epoch 398/500, Loss: 4.6861
Epoch 399/500, Loss: 4.6805
Epoch 400/500, Loss: 4.6785
Epoch 401/500, Loss: 4.6765
Epoch 402/500, Loss: 4.6718
Epoch 403/500, Loss: 4.6694
Epoch 404/500, Loss: 4.6659
Epoch 405/500, Loss: 4.6616
Epoch 406/500, Loss: 4.6601
Epoch 407/500, Loss: 4.6558
Epoch 408/500, Loss: 4.6520
Epoch 409/500, Loss: 4.6503
Epoch 410/500, Loss: 4.6458
Epoch 411/500, Loss: 4.6415
Epoch 412/500, Loss: 4.6393
Epoch 413/500, Loss: 4.6360
Epoch 414/500, Loss: 4.6319
Epoch 415/500, Loss: 4.6295
Epoch 416/500, Loss: 4.6258
Epoch 417/500, Loss: 4.6210
Epoch 418/500, Loss: 4.6195
Epoch 419/500, Loss: 4.6164
Epoch 420/500, Loss: 4.6110
Epoch 421/500, Loss: 4.6090
Epoch 422/500, Loss: 4.6056
Epoch 423/500, Loss: 4.6016
Epoch 424/500, Loss: 4.5987
Epoch 425/500, Loss: 4.5957
Epoch 426/500, Loss: 4.5912
Epoch 427/500, Loss: 4.5901
Epoch 428/500, Loss: 4.5860
Epoch 429/500, Loss: 4.5819
Epoch 430/500, Loss: 4.5790
Epoch 431/500, Loss: 4.5764
Epoch 432/500, Loss: 4.5725
Epoch 433/500, Loss: 4.5704
Epoch 434/500, Loss: 4.5670
Epoch 435/500, Loss: 4.5631
Epoch 436/500, Loss: 4.5614
Epoch 437/500, Loss: 4.5584
Epoch 438/500, Loss: 4.5543
Epoch 439/500, Loss: 4.5525
Epoch 440/500, Loss: 4.5480
Epoch 441/500, Loss: 4.5468
Epoch 442/500, Loss: 4.5425
Epoch 443/500, Loss: 4.5391
Epoch 444/500, Loss: 4.5377
Epoch 445/500, Loss: 4.5347
Epoch 446/500, Loss: 4.5304
Epoch 447/500, Loss: 4.5291
Epoch 448/500, Loss: 4.5257
Epoch 449/500, Loss: 4.5212
Epoch 450/500, Loss: 4.5206
Epoch 451/500, Loss: 4.5174
Epoch 452/500, Loss: 4.5135
Epoch 453/500, Loss: 4.5117
Epoch 454/500, Loss: 4.5086
Epoch 455/500, Loss: 4.5052
Epoch 456/500, Loss: 4.5027
Epoch 457/500, Loss: 4.4995
Epoch 458/500, Loss: 4.4963
Epoch 459/500, Loss: 4.4940
Epoch 460/500, Loss: 4.4895
Epoch 461/500, Loss: 4.4880
Epoch 462/500, Loss: 4.4848
Epoch 463/500, Loss: 4.4806
Epoch 464/500, Loss: 4.4787
Epoch 465/500, Loss: 4.4740
Epoch 466/500, Loss: 4.4733
Epoch 467/500, Loss: 4.4693
Epoch 468/500, Loss: 4.4659
Epoch 469/500, Loss: 4.4641
Epoch 470/500, Loss: 4.4593
Epoch 471/500, Loss: 4.4580
Epoch 472/500, Loss: 4.4546
Epoch 473/500, Loss: 4.4510
Epoch 474/500, Loss: 4.4487
Epoch 475/500, Loss: 4.4448
Epoch 476/500, Loss: 4.4432
Epoch 477/500, Loss: 4.4394
Epoch 478/500, Loss: 4.4366
Epoch 479/500, Loss: 4.4344
Epoch 480/500, Loss: 4.4296
Epoch 481/500, Loss: 4.4279
Epoch 482/500, Loss: 4.4243
Epoch 483/500, Loss: 4.4202
Epoch 484/500, Loss: 4.4172
Epoch 485/500, Loss: 4.4134
Epoch 486/500, Loss: 4.4121
Epoch 487/500, Loss: 4.4074
Epoch 488/500, Loss: 4.4039
Epoch 489/500, Loss: 4.4017
Epoch 490/500, Loss: 4.3980
Epoch 491/500, Loss: 4.3955
Epoch 492/500, Loss: 4.3911
Epoch 493/500, Loss: 4.3900
Epoch 494/500, Loss: 4.3859
Epoch 495/500, Loss: 4.3812
Epoch 496/500, Loss: 4.3805
Epoch 497/500, Loss: 4.3768
Epoch 498/500, Loss: 4.3754
Epoch 499/500, Loss: 4.3711
Epoch 500/500, Loss: 4.3695

10、评估模型

test_loss, test_rmse, test_mae = evaluate(model, criterion, X_test, y_test)
print(f"Test Loss: {test_loss:.4f}, Test RMSE: {test_rmse:.4f}, Test MAE: {test_mae:.4f}")

Test Loss: 12.0768, Test RMSE: 3.4752, Test MAE: 2.2279

【人工智能】保姆级波士顿房价预测 波士顿房价预测是一个经典的机器学习任务,类似于程序员世界的“Hello World”。和大家对房价的普遍认知相同,波士顿地区的房价是由诸多因素影响的。该数据集统计了13种可能影响房价的因素和该类型房屋的均价,期望构建一个基于13个因素进行房价预测的模型,如所示。对于预测问题,可以根据预测输出的类型是连续的实数值,还是离散的标签,区分为回归任务和分类任务。因为房价是一个连续值,所以房价预测显然是一个回归任务。下面我们尝试用最简单的线性回归模型解决这个问题,并用神经网络来实现这个模型。 阅读详情

相关推荐

BP神经网络实战指南:从原理到房价预测模型构建与调优

在机器学习领域,神经网络作为模拟人脑神经元连接的计算模型,其核心在于通过算法自动从数据中学习复杂模式。误差反向传播算法是训练多层前馈网络的关键原理,它通过正向传播计算输出、反向传播调整权重,使网络能够拟合非线性关系,这一机制赋予了模型解决分类、回归及预测问题的强大能力。其技术价值在于能够处理高维、非线性的数据,在诸如房价预测、用电负荷分析等实际应用场景中表现出色。本文以房价预测为例,深入解析了从数据预处理、模型构建到超参数调优的完整流程,并针对过拟合等常见问题提供了基于Dropout和正则化的实战解决方案,

weixin_34245082的博客 347

深度学习入门——波士顿房价预测

基于神经网络模型的波士顿房价预测 波士顿房价预测是一个经典的机器学习任务,类似于程序员世界的“Hello World”。以“波士顿房价预测”任务为例,我们学习如何使用Python语言和Numpy库来构建神经网络模型。 波士顿地区的房价受诸多因素影响。该数据集统计了13种可能影响房价的因素和该类型房屋的均价,期望构建一个基于13个因素进行房价预测的模型,如下所示。 对于预测问题,可以根据预测输出的类型是连续的实数值,还是离散的标签,区分为回归任务和分类任务。因为房价是一个连续值,所以房价预测是一个回归任务。

Barbara‘s Blog 2万+

机器学习实战:从核心算法到项目落地的完整指南

机器学习作为人工智能的核心分支,其本质是让计算机从数据中自动学习规律并做出预测。其工作原理通常遵循数据驱动的范式,通过算法模型在训练数据上优化参数,以最小化预测误差。这项技术的核心价值在于能够自动化复杂决策过程,从海量数据中挖掘潜在模式,广泛应用于金融风控、销售预测、图像识别和自然语言处理等领域。本文聚焦于监督学习中的决策树、逻辑回归、支持向量机(SVM)和神经网络等核心算法,通过Python和Scikit-learn库,详细拆解了从数据预处理、模型训练、评估到超参数调优的完整工程化流程,并针对模型过拟合、

weixin_33857679的博客 318

基于线性回归的波士顿房价预测

波士顿数据集在sklearn中自带,使用的时候引入就可以直接使用 from sklearn.datasets import load_boston#加载波士顿数据集 获取特征值、目标值和列名称 数据以字典的形式保存,获取的时候需要按照字典的方式提取数据 feature = boston['data'] #特征值 feature_names = boston['featur...

qq_39112101的博客 7316

斯坦福CS229机器学习课程:中英双语字幕与课件资源全解析

机器学习作为人工智能的核心分支,其基础理论是理解现代智能系统的关键。其原理基于数据驱动,通过算法从数据中学习规律,从而实现对未知数据的预测或决策。掌握机器学习基础对于从事人工智能、数据分析等领域至关重要,它能帮助开发者构建更高效、更准确的模型。在实际工程中,扎实的理论知识是进行模型选择、调优和问题诊断的基石。无论是监督学习中的回归与分类,还是无监督学习中的聚类与降维,其核心概念都广泛应用于推荐系统、计算机视觉、自然语言处理等场景。本文聚焦于斯坦福大学经典的CS229《机器学习》课程资源,该资源提供了完整的视

weixin_30699955的博客 423

09丨线性回归与波士顿房价预测

波士顿房价数据源于美国某经济学杂志上,分析研究波士顿房价( Boston HousePrice)的数据集。数据集中的每一行数据都是对波士顿周边或城镇房价的情况描述,本实验以波士顿房价数据集为线性回归案例数据,进行模型训练,预测波士顿房价。房子作为居住的场所,对每个人而言是不可或缺的。而房价的高低也是受多种因素的影响。房子所处的城市是一线还是二线,房子周边的交通便利程度,房子附近是否存在医院或者学校等,众多因素都会影响房价。在拿到数据之后,先要查看数据的类型,是否有空值,数据的描述信息等等。

AIGC 1万+

深度学习入门:mnist分类和boston房价预测的简单实现

这是笔者在学习过程中跟着学习视频的教学写的代码,可以完整运行,希望能对小白有所帮助

2302_76774649的博客 586

PyTorch实战:波士顿房价预测与神经网络回归模型构建

机器学习中的回归分析是预测连续数值的核心技术,其原理是通过建立输入特征与目标变量之间的数学关系模型。在深度学习领域,前馈神经网络(FNN)是实现复杂非线性回归的强大工具,它通过多层感知机结构自动学习特征表示。这项技术的价值在于能够处理高维、非线性的数据关系,广泛应用于金融预测、销量预估、医疗诊断等场景。本文以经典的波士顿房价预测为切入点,详细解析了使用PyTorch框架构建回归模型的完整流程,涵盖了数据标准化、模型设计、训练优化等关键环节,并深入探讨了如何通过调整网络结构、优化超参数来提升模型性能,为初学者

weixin_34226706的博客 493

机器学习入门路线:从西瓜书精读到代码实践的全攻略

机器学习作为人工智能的核心技术,正深刻改变着数据分析、智能决策与自动化系统的构建方式。入门者常面临理论基础薄弱与工程实践脱节的困境,而系统化的算法原理与模型评估方法,正是打通从公式到代码的关键桥梁。线性回归、神经网络、支持向量机与集成学习等经典模型,不仅构成了现代数据科学的知识骨架,更在房价预测、图像识别、推荐系统等场景中发挥着直接价值。本文从模型评估、梯度下降、反向传播等基础概念出发,结合波士顿房价数据集与PyTorch实践,完整呈现了一套可复现的自学路线,并最终收敛到如何高效精读周志华《机器学习》(西瓜

weixin_34343308的博客 346

PyTorch实战:前馈神经网络预测波士顿房价全流程拆解

前馈神经网络(FNN)作为深度学习的基础架构,通过多层非线性变换学习数据中的复杂模式。其核心原理在于利用反向传播算法优化网络权重,以最小化预测误差。在工程实践中,FNN因其结构清晰、易于实现,成为解决回归与分类问题的通用技术方案,广泛应用于金融预测、销量预估等连续值预测场景。本文以经典的波士顿房价预测任务为切入点,详细演示了如何使用PyTorch框架,从数据预处理、模型构建、训练优化到评估部署的完整流程。过程中深入探讨了数据标准化、Dropout正则化等关键实践技巧,并针对过拟合、学习率设置等常见陷阱提供了

weixin_33850015的博客 285

PyTorch实战:波士顿房价预测项目全流程解析与神经网络回归实践

机器学习中的回归任务是预测连续数值输出的基础问题,其核心原理是通过建立输入特征与目标变量之间的映射关系来最小化预测误差。在深度学习框架中,PyTorch以其动态计算图和直观的API设计,为构建和训练神经网络模型提供了高效灵活的工具,特别适合教学和原型开发。通过实现经典的波士顿房价预测项目,可以贯通PyTorch的核心组件如Tensor、Dataset、DataLoader、Module、Optimizer和Loss Function,掌握从数据预处理、模型定义、训练循环到评估可视化的完整工作流。该项目不仅演

weixin_34095889的博客 618

深度学习回归实战:从数据到模型部署全流程

回归分析是机器学习中的基础任务,用于预测连续值输出,在房价预测、销量预估等场景广泛应用。深度学习通过神经网络自动提取特征,克服了传统方法依赖人工特征工程的局限,特别适合处理复杂的非线性关系。PyTorch框架为构建回归模型提供了完整工具链,涵盖数据预处理、模型设计、训练优化等关键环节。实战中,数据标准化、特征相关性分析等技术能显著提升模型性能,而损失函数选择、正则化策略则影响泛化能力。本案例以波士顿房价数据集为例,展示了从数据加载到模型部署的完整流程,涉及特征工程、网络架构设计、超参数调优等核心技术,最终通

weixin_33797791的博客 313

Markdown编辑器介绍

这篇文章介绍了Markdown编辑器的功能和使用方法。主要内容包括:Markdown的基本语法如标题、列表、链接插入等;新增功能如图片拖拽、数学公式支持、甘特图和UML图表绘制;常用快捷键说明;以及文本导出导入操作。文章详细说明了如何通过Markdown语法实现文本格式化、代码高亮、表格创建等功能,并提供了多种图表绘制的语法示例,帮助用户更好地利用Markdown编辑器进行写作和内容创作。

soso1968的博客 1178

TPOT 自动化机器学习全指南:基于遗传编程的流水线优化工具

TPOT(Tree-based Pipeline Optimization Tool)是一个基于 Python 的自动化机器学习(AutoML)工具,它把"数据科学家助理"这一角色落到实处——使用遗传编程(Genetic Programming, GP)自动探索成千上万条可能的机器学习流水线,并从中选出最适合你数据的那一条。本指南以 TPOT 项目主页([docs_sources/index.md

gitblog_00254的博客 684

FPGA笔试题知识点汇总(21~40)

FPGA笔试题知识点汇总(21~40)

weixin_52487896的博客 5871

智能工厂四大系统协同实战:ERP/PLM/MES/WMS集成架构与数据流解析

本文深入解析了智能工厂中ERP、PLM、MES、WMS四大核心系统的协同集成架构与数据流。通过实战案例,阐述了如何打通系统孤岛,实现从产品设计、资源计划、生产执行到仓储物流的数据无缝流转,从而构建高效、敏捷的智能工厂运营体系。

ujm567890的博客 674

设计矩阵在统计建模与机器学习中的应用解析

设计矩阵是统计建模和机器学习中的基础数学结构,它将预测变量组织成矩阵形式,为线性回归、广义线性模型等提供数据支撑。从原理上看,设计矩阵通过特征排列和数学运算,建立了自变量与因变量之间的映射关系。在技术价值方面,良好的设计矩阵能提升模型性能、增强解释性,并支持正则化等优化手段。典型应用场景包括房价预测、临床实验分析等实际工程问题。特别是在特征工程环节,设计矩阵处理分类变量编码、交互项构建等关键技术,直接影响模型效果。随着自动机器学习的发展,设计矩阵的智能化构建正成为新的技术趋势。

weixin_29188043的博客 271

SAP-PP MD04详解一

MD04是SAP运行MRP后的结果查询事务码,其他功能强大,标准功能比如:查询/更改物料主数据、转换计划订单到生产订单/采购申请、查询/更改各个MRP元素对应的单据等等。而且还可以附加标准的菜单或者自定义添加事务码上去。老铁将做一个MD04详细说明系列,本篇为第一篇之MRP元素说明。 我们来看看MD04基本界面 可以看到主要的数据显示界面,有日期、MRP元素、MRP元素数据、再计划日期、收货/需求、可用数量、工厂、库存地点等栏位。光标定位到MRP元素列,按F1即可看到各类MRP元素的说...

weixin_52158549的博客 1万+

机器学习实战:120案例从Python到CNN、Spark MLlib与大模型应用

机器学习作为人工智能的核心分支,通过算法让计算机从数据中自动学习规律并做出预测。其基本原理包括监督学习、无监督学习和强化学习三大范式,通过特征工程、模型训练和优化迭代实现智能决策。在技术价值层面,机器学习能够处理海量数据、发现隐藏模式,显著提升预测准确性和自动化水平。应用场景涵盖图像识别、自然语言处理、推荐系统、金融风控等众多领域。基于120个实战案例的系统学习路径,本文特别聚焦CNN卷积神经网络在图像处理中的核心作用,以及Spark MLlib分布式机器学习框架在大规模数据处理中的优势,为开发者提供从基础

weixin_34408717的博客 406

【东华大学oj】找到最大数(一维数组->中等)

一天,老师布置了一个作业,要求对一串数字各不相同的数字串进行排序,大的在前,小的在后。接着,我从数字串中的第二个数字开始往后找,找到最大的一个,然后与第二个数字交换,这样的话我就能够确定排序后数字串中的第二个数字;明明研究发现,他的这个想法中最重要的一环就是在一串数字中找到最大的那个,然后与第一个数字交换,可是明明毕竟刚刚开始学习程序设计不久,无法写出较复杂的程序,所以明明想让你这位程序设计专家帮他的忙,帮助他把这段核心程序写出来,然后明明只需模仿着写就可以了。时间限制: 1S类别: 一维数组->中等。

的博客 523

silvaco例子库学习—mos1ex02

mos1ex02相比于第一个例子,主要进行了mos的输出特性仿真,工艺结构是一样的,所以就只简单讨论一下atlas特性仿真的部分。

weixin_61913839的博客 852

DJL在Java中实现机器学习拟合:从原理到实践

机器学习中的拟合是指模型通过学习数据规律来预测新数据的过程,其核心在于参数优化。作为基础概念,拟合分为欠拟合、适度拟合和过拟合三种状态,直接影响模型泛化能力。DJL(Deep Java Library)作为Java生态的深度学习工具,支持PyTorch、TensorFlow等后端引擎,使开发者能在Java环境中完成模型构建、训练和部署。通过线性回归等基础算法,DJL实现了权重调整和偏置优化的完整流程,并提供了处理过拟合的正则化、Dropout等技术方案。该技术特别适合需要与企业级Java应用集成的AI场景,

weixin_33883104的博客 264

基于 YOLOv26 的食品包装缺陷检测系统:智能视觉质检方案

本文提出了一种基于YOLOv26深度学习的食品包装缺陷智能检测系统。该系统能够自动识别多种常见包装缺陷,包括密封不良、破损、污染、标签错误等8类问题。相比传统人工检测方法,该系统具有高精度、多类别分类、实时推理等优势。文章详细介绍了系统架构,包含数据采集、预处理、YOLOv26检测模型和后处理四个核心模块,并提供了完整的环境配置和数据处理代码实现。该系统为食品包装行业提供了一种高效、准确的智能视觉质检解决方案。

一键难忘的博客 682

机器学习数学三支柱:线性代数、微积分与概率论的工程化理解

机器学习中的数学不是抽象理论,而是支撑模型构建、调试与优化的核心工程语言。线性代数本质是高维空间变换与结构表达,决定特征表示、降维可行性和梯度计算稳定性;微积分提供梯度下降、链式求导与曲率感知等优化导航能力,直接影响收敛效率与泛化鲁棒性;概率论则构成不确定性建模基础,从分布假设、贝叶斯更新到KL散度对齐,贯穿损失设计、评估校准与决策解释。三者协同作用于数据预处理、模型训练与诊断分析全流程——例如特征缩放保障线性运算公平性,Hessian条件数预警优化病态,条件概率密度函数支撑医疗等高风险场景的决策边界设定。

weixin_34408624的博客 529

3.38 工业缺陷检测实战:物体表面缺陷检测,从图像处理到深度学习

本文介绍了工业缺陷检测的完整流程,从传统图像处理到深度学习方法。首先定义了缺陷检测任务的目标和应用场景,然后详细讲解了传统图像处理方法(边缘检测、阈值分割等)和深度学习方法(分类、检测、分割模型)。文章最后总结了核心要点,提出了思考题和实践建议,建议从简单方法开始逐步优化。下一篇将介绍工业视觉基础技术——相机标定与角点检测。

yonggeit的博客 2885

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: Scala按天写入日志文件
下一篇: Linux conda activate报错:CondaError: Run ‘conda init‘ before ‘conda activate‘
数智客栈
博客等级 码龄17年 5699粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值