【机器学习】线性回归之加州房价预测

目录

一、分析数据

数据:

 二、拆分训练集和预测集

1、构建训练集和预测集

 2、拆分

三、训练模型

四、开始预测

五、评价

六、散点图显示家庭收入中位数和房价中位数的分


一、分析数据

import pandas as pd #导入“Pandas”,用于数据读取和处理
#读入房价数据 read_csv()
df_housing = pd.read_csv("../data/house.csv")
#显示加州房价数据
df_housing # df_housing.head 只显示一部分数据

数据:

17000条数据 (8个属性(特征)-影响房价的因素)

第九个是标签

longitude 经度 

latitude 纬度

housing_median_age 房龄中位数

。。。。

这是加州各地区房价的整体统计信息(不是一套套房子的价格信息),是1990年的人口普查结果之一,共包含17 000个样本。其中包含每一个具体地区的经度(longitude)、纬度(latitude)、房屋的平均年龄(housing_median_age)、房屋数量(total_rooms)、家庭收入中位数(median_income)等信息,这些信息都是加州地区房价的特征。

数据集最后一列“房价中位数”(median_house_value)是标签。这个机器学习项目的目标,就是根据已有的数据样本,对其特征进行推理归纳,得到一个函数模型后,就可以用它推断加州其他地区的房价中位数。

 二、拆分训练集和预测集

1、构建训练集和预测集

然后构建特征数据集X和标签数据集y,如下段代码所示。

在机器学习领域,似乎有一种习惯是把特征集X大写,把标签集y小写

因为最后一列是标签,所以我们去掉最后一列,其余的作为训练集X

#median_house_value 为csv文件中的最后一列
#构建特征集X
#drop 去掉最后一列,作为特征集X
# drop 默认删除行,删除列的话加上 “axis=1”
X = df_housing.drop("median_house_value",axis = 1)
#构建标签集y
#将最后一列赋给y
y = df_housing.median_house_value

y的部分数据如下: 

 2、拆分

#random_state  随机数种子,不同的随机数种子划分的结果不同

from sklearn.model_selection import train_test_split #导入数据集拆分工具
X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=0.2, random_state=0) #以80%/20%的比例进行数据集的拆分

输出如下:可以看到被打乱了顺序

三、训练模型

# from sklearn.linear_model import SomeClassifier
from sklearn.linear_model import LinearRegression #导入线性回归算法模型
model = LinearRegression() #使用线性回归算法
model.fit(X_train, y_train) #用训练集数据,训练机器,拟合函数,确定参数
print(model.coef_,model.intercept_)
model.coef_:斜率 正值说明正相关,负值说明负相关
model.intercept_:截距(用的默认的----fit_intercept=True)

四、开始预测

y_pred = model.predict(X_test) #预测测试集的Y值
# print ('房价的真值(测试集)',y_test)
y_test

输出如下:


# print ('预测的房价(测试集)',y_pred)
y_pred

输出如下:

五、评价

# score 打分
print("给预测评分:", model.score(X_test, y_test)) #评估预测结果

 输出如下:

给预测评分: 0.6321014171579477

越接近1说明拟合的方程越好

六、散点图显示家庭收入中位数和房价中位数的分布

import matplotlib.pyplot as plt #导入”matplotlib画图库“
plt.scatter(X_test.median_income, y_test,  color='brown')
#画出回归函数(从特征到预测标签)
plt.plot(X_test.median_income, y_pred, color='green', linewidth=1)
plt.xlabel('Median Income') #X轴-家庭收入中位数
plt.ylabel('Median House Value') #Y轴-房价中位数
plt.show() #显示房价分布和机器习得的函数图形

  • 1
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值