## 用Mxnet对California房地产数据做线性回归分析 原

q
qinhui99

Mxnet和Tensorflow都是我正在学习的东西，因为不熟，所以想多做些练习来加深理解。于是就用California房地产数据来练练手。

```这里的California房地产数据引用自sklearn自带的数据集（2万多条数据）。该数据集比正规的版本做了简化，只有9个字段。

feature_names = ["MedInc", "HouseAge", "AveRooms","AveBedrms",
"Population", "AveOccup", "Latitude","Longitude"]```
`该数据的目标值是该区域的平均房价。也就是说需要预测的是精确的平均房价，而不是分类标签。具体代码如下：`
```# coding=utf-8
from sklearn.datasets import fetch_california_housing
from sklearn.preprocessing import StandardScaler
import numpy as np
import mxnet as mx
from sklearn.utils import shuffle
import logging

housing = fetch_california_housing()
m, n = housing.data.shape
housing_data_plus_bias = np.c_[np.ones((m, 1)), housing.data]

scaler = StandardScaler()
scaled_housing_data = scaler.fit_transform(housing.data)
scaled_housing_data_plus_bias = np.c_[np.ones((m, 1)), scaled_housing_data]

n_epochs = 15
learning_rate = 0.025
#刚开始的时候，batch_size越大，程序速度就越快。经过一个阈值后，就没多大效果了。而且最终的MSE也没有太多改进。
batch_size =128
# shuffle data
#X, y = shuffle(scaled_housing_data_plus_bias, housing.target)
X, y = (scaled_housing_data_plus_bias, housing.target)

# 定义符号
x_sym = mx.symbol.Variable('data')
y_sym = mx.symbol.Variable('softmax_label')

# 定义网络。这里可以根据需要定义多层网络，例如下面定义了3层网络，最后输出到线性回归处理器里
fc1 = mx.symbol.FullyConnected(data=x_sym, num_hidden=40, name='pre')
act1 = mx.symbol.Activation(data = fc1, name='act1', act_type="relu")
fc2 = mx.sym.FullyConnected(data=act1, name='fc2', num_hidden=20)
act2 = mx.symbol.Activation(data = fc2, name='act2', act_type="relu")
fc3 = mx.sym.FullyConnected(data=act2, name='fc3', num_hidden=1)
# mxnet自带的线性回归
loss = mx.symbol.LinearRegressionOutput(data=fc3,label=y_sym, name='loss')

# 定义模型
model = mx.model.FeedForward(
ctx=mx.cpu(), symbol=loss, num_epoch=n_epochs,
learning_rate=learning_rate,
)
logging.basicConfig(level=logging.INFO)

# Build iterator
slice_index=20500
train_iter = mx.io.NDArrayIter(data=X[:18000], label=y[:18000], batch_size=batch_size, shuffle=True)
eval_iter = mx.io.NDArrayIter(data=X[18000:slice_index], label=y[18000:slice_index], batch_size=batch_size, shuffle=True)

test_iter=mx.io.NDArrayIter(data=X[slice_index:slice_index+1],  shuffle=False)

#训练时打印出mse和rmse指标
eval_metrics = ['mse']
eval_metrics.append('rmse')
#训练
model.fit(X = train_iter,
eval_metric=eval_metrics,
eval_data=eval_iter)
#预测测试例子
r=model.predict(test_iter)
#打印预测结果和真实值，对比看看
print (r,y[slice_index:slice_index+1])```

q

### qinhui99

MXNet 宣布支持 Keras 2，可更加方便快捷地实现 CNN 及 RNN 分布式训练

2018/05/23
0
0
mxnet训练模型、导出模型、加载模型 进行预测（python和C++）

2018/06/11
0
0

选自AWS Machine Learning Blog 　　作者：Lai Wei、Kalyanee Chendke、Aaron Markham、Sandeep Krishnamurthy 　　机器之心编译 　　参与：路、王淑婷 　　 　　今日 AWS 发布博客宣布 ...

2018/05/22
0
0

2018/07/13
0
0

2017/02/05
29.5K
4

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

ValSong
52分钟前
5
0
Spring Boot 如何部署到 Linux 中的服务

honeymoose
54分钟前
5
0
Spring Boot 2 实战：使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

6
0
ZetCode 教程翻译计划正式启动 | ApacheCN

ApacheCN_飞龙

4
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性：css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin

7
0