# 基于pytorch的房价预测

• 绘制图像

## 构建神经网络训练

import torch
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import torch.optim as optim
import warnings
warnings.filterwarnings("ignore")

# In[4]:

features

# In[26]:

year = []
price = []
for i in range(0,12):
year.append([features['Year'][i]])
price.append([features['Price'][i]])

# In[27]:

year = np.array(year)
price = np.array(price)
year,price

# In[53]:

from sklearn import preprocessing

# 特征标准化处理
year = preprocessing.StandardScaler().fit_transform(year)
year[0]

# In[54]:

x = torch.tensor(year,dtype=float)
y = torch.tensor(price,dtype=float)
x,y

# In[62]:

learning_rate = 0.0001

losses = []

for i in range(0, 5000):
ans = x.mm(weights1) + bias1
#计算损失
criterion = torch.nn.MSELoss()  # 使用适当的损失函数
loss = criterion(ans, y)

losses.append(loss)

if i%100==0:

print(f'loss={loss},epoch={i},w={weights1}')

#反向传播
loss.backward()
#更新参数
#清空
# 使用 features['Year'] 和 features['Price'] 创建日期和价格的列表
year = features['Year']
price = features['Price']
# 将 ans 转换为 Python 列表
ans_list = ans.tolist()

# 提取列表中的每个元素（确保是单个的标量值）
predictions = [item[0] for item in ans_list]

# 创建一个表格来存日期和其对应的标签数值
true_data = pd.DataFrame(data={'date': year, 'actual': price})
predictions_data = pd.DataFrame(data={'date': year, 'prediction': predictions})
# 真实值
plt.plot(true_data['date'], true_data['actual'], 'b-', label='actual')

# 预测值
plt.plot(predictions_data['date'], predictions_data['prediction'], 'ro', label='prediction')
plt.xticks(rotation='60')
plt.legend()

# 图名
plt.xlabel('Date')
plt.ylabel('Price')  # 注意修改为你的标签
plt.title('Actual and Predicted Values')
plt.show()

THE END