python机器学习——加州房价模型验证

python机器学习——加州房价模型验证

利用平均绝对误差(也叫做MAE)评估


学习内容:

1、 什么是模型验证
你会想要评估你曾经建立的几乎每一个模型。
在大多数(尽管不是所有)应用中,模型质量的相关度量是预测精度。
有许多度量方法可以用来总结模型的质量,但是我们将从一个叫做平均绝对误差(也叫做MAE)的度量方法开始。
2、 读取数据+设预测目标+设特征

# 数据经度、纬度、住房年龄中位、一个街区内的总房屋数、一个街区内的总卧室数、
# 人口、家庭总数、收入中位数、房屋价值中位数、是否近海
# 一个街区内的总卧室数有部分缺失值

import pandas as pd
from sklearn.tree import DecisionTreeRegressor
house_file_path = 'Datasets\California Housing Prices\housing.csv'
house_data = pd.read_csv(house_file_path)

# 过滤有缺失值的行
filtered_house_data = house_data.dropna(axis=0)
# 将房屋价格中位数设置为预测目标y
house_predict = ['median_house_value']
y = filtered_house_data[house_predict]
# 设置特征为x(特征:影响目标的因素)
house_features = ['housing_median_age','total_rooms','total_bedrooms','population','households','median_income']
x = filtered_house_data[house_features]

3、 数据集分离
上一篇文中使用部分训练集来进行预测,虽然准确但是是没有意义的。
由于模型的实用价值来自于对新数据的预测,所以我们度量那些没有用于构建模型的数据的性能。
最直接的方法是从模型构建过程中排除一些数据,然后使用这些数据来测试模型对以前没有见过的数据的准确性。此数据称为验证数据。

scikit-learn库有一个名为 train_test_split 的函数,可以将数据分成两部分。我们将使用其中一些数据作为训练数据来适应模型,并将使用其他数据作为验证数据来计算mean_absolute_error。

from sklearn.model_selection import train_test_split
train_x, val_x, train_y,val_y = train_test_split(x, y, random_state = 0)

4、 根据训练集定义模型

# 定义模型。为random_state指定一个数字以确保每次运行都得到相同的结果
house_model = DecisionTreeRegressor(random_state = 1)
house_model.fit(train_x, train_y)  # 捕获预测目标和特征

5、 输出预测和MAE

#输出预测值
predicted_house_prices = house_model.predict(val_x)
print("The predictions are")
print(predicted_house_prices)

from sklearn.metrics import mean_absolute_error
house_prices_MAE = mean_absolute_error(val_y, predicted_house_prices)
print("The MAE is :")
print(house_prices_MAE)

运行结果:

The predictions are
[149000. 281700. 325000. ... 141800. 137500. 165500.]
The MAE is :
65661.57056175378

你可能感兴趣的:(yakira的学习记录)