当前位置:   article > 正文

神经网络方法——美国波士顿房价(回归问题)_神经网络波士顿 房价

神经网络波士顿 房价

一、回归问题——线性回归和softmax回归

线性回归—指一类为一个或多个自变量之间的关系建立模型的方法。在自然科学领域和社会科学领域,回归经常表示输入和输出的关系。

美国波士顿房价(回归问题)

问题叙述:

       该数据集是一个回归问题。每个类的观察值数量是均等的,共有 506 个观察,13 个输入变量和1个输出变量。
  每条数据包含房屋以及房屋周围的详细信息。其中包含城镇犯罪率,一氧化氮浓度,住宅平均房间数,到中心区域的加权距离以及自住房平均房价等等。

  • CRIM:城镇人均犯罪率。
  • ZN:住宅用地超过 25000 sq.ft. 的比例。
  • INDUS:城镇非零售商用土地的比例。
  • CHAS:查理斯河空变量(如果边界是河流,则为1;否则为0)。
  • NOX:一氧化氮浓度。
  • RM:住宅平均房间数。
  • AGE:1940 年之前建成的自用房屋比例。
  • DIS:到波士顿五个中心区域的加权距离。
  • RAD:辐射性公路的接近指数。
  • TAX:每 10000 美元的全值财产税率。
  • PTRATIO:城镇师生比例。
  • B:1000(Bk-0.63)^ 2,其中 Bk 指代城镇中黑人的比例。
  • LSTAT:人口中地位低下者的比例。
  • MEDV:自住房的平均房价,以千美元计。

1.首先读入数据,代码如下:

  1. #1.数据读入
  2. from sklearn.datasets import load_boston
  3. import numpy as np
  4. import pandas as pd
  5. data=pd.read_csv('C:/Users/bby/机器学习/boston_house_prices.csv')#读入文件
  6. data.head()

2.将数据划分成测试数据集和训练数据集

  1. from sklearn.model_selection import train_test_split
  2. X=data.drop('MEDV',axis=1) #生成特征集
  3. y=data['MEDV'] #生成labels集
  4. X=X.values #转换为array
  5. y=y.values #转换为array
  6. X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=33,test_size=0.25)

3.将取值范围很大的数据输入神经网络,这是有问题的。网络可能会自动适应这种取值范围不同的数据,但学习很定会变得更困难。所以进行标准化处理数据。

  1. from sklearn.preprocessing import StandardScaler
  2. ss_X=StandardScaler()
  3. scaler_X=ss_X.fit(X_train)
  4. X_train=scaler_X.transform(X_train)
  5. X_test=scaler_X.transform(X_test)

4.建立模型,选择合适的优化方法,隐藏层的个数可以进行调节。

  1. from sklearn.neural_network import MLPRegressor#全连接
  2. model = MLPRegressor(solver='lbfgs', hidden_layer_sizes=(15,15), random_state=1)
  3. model.fit(X_train, y_train)

5.模型评估,回归问题最常用的损失函数是均方误差 MSE(mean  aquared error)代码如下:

  1. from sklearn.metrics import r2_score,mean_squared_error,mean_absolute_error
  2. print('训练集回归评估指标:')
  3. model_score1=model.score(X_train,y_train)
  4. print('The accuracy of train data is',model_score1) #拟合优度值
  5. print('测试集回归评估指标:')
  6. model_score2=model.score(X_test,y_test)
  7. print('The accuracy of test data is',model_score2)
  8. y_test_predict=model.predict(X_test)
  9. mse=mean_squared_error(y_test,y_test_predict) #均方误差
  10. print('The value of mean_squared_error:',mse)
  11. mae=mean_absolute_error(y_test,y_test_predict) #平均绝对值误差
  12. print('The value of mean_absolute_error:',mae)

试用数据超级大的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/549612
推荐阅读
相关标签
  

闽ICP备14008679号