基于LinearRegression的波士顿房价预测

本文通过线性回归模型分析波士顿房价数据集,详细探讨了包括CRIM、ZN、INDUS等13个特征与房价的关系,并进行数据处理,为建立预测模型做准备。
摘要由CSDN通过智能技术生成

LinearRegression中文叫做线性回归,是一种基础、常用的回归方法。

2018年8月22日笔记
sklearn官方英文用户使用指南:https://sklearn.org/user_guide.html
sklearn翻译中文用户使用指南:http://sklearn.apachecn.org/cn/0.19.0/user_guide.html

0.打开jupyter notebook

不知道怎么打开jupyter notebook的朋友请查看我的入门指南文章:https://www.jianshu.com/p/bb0812a70246

1.载入数据集

波士顿房价数据集详细中文解释链接:http://sklearn.apachecn.org/cn/0.19.0/datasets/index.html#boston-house-prices
网页中内容截图如下:

10345471-14b83705a587943f.png
image.png

查看数据集对象的属性和方法,代码如下:

from sklearn.datasets import load_boston
dir(load_boston())

上面一段代码的运行结果如下:

['DESCR', 'data', 'feature_names', 'target']

查看数据集的描述,即打印数据集对象的DESCR属性,代码如下:

from sklearn.datasets import load_boston
print(load_boston().DESCR)

与上图中文文档的图对照阅读,可以加强对数据集的理解。
上面一段代码的运行结果如下图所示:


10345471-411763dde28edd95.png
image.png

将506个样本13个特征组成的矩阵赋值给变量X,变量X为大写字母的原因是数学中表示矩阵使用大写字母。
将506个样本1个预测目标值组成的矩阵赋值给变量y。
载入数据集的代码如下:

from sklearn.datasets import load_boston

X = load_boston().data
y = load_boston().target

2.数据观察

使用pandas库完成数据分析阶段的任务。
首先实例化1个DataFrame对象赋值给变量df,DataFrame对象类似于Excel表格。
查看变量df的前10行,代码如下:

import pandas as pd

df = pd.DataFrame(X, columns=load_boston().feature_names)
df.head(10)

上面一段代码的运行结果如下图所示:


10345471-eb60b77d82c2a043.png
image.png

查看变量df中是否有空值,如果有空值,则需要对其进行处理,代码如下:

df.info()

上面一段代码的运行结果如下图所示:

10345471-97ec18583edb4174.png
image.png

从上图的结果我们可以看出,数据总共有506行,13列。
在数据科学领域中,一般称事物的属性为 字段,13个字段中都有506个非空的float64类型的数值,即没有空值。
从上图的最后1行可以看出,该表格总共占用内存51.5KB。
在计算机科学中,B表示Byte,中文叫做 字节,b表示bit,中文叫做比特, 1Byte = 8bit
占用内存的计算也并不复杂,1个float64类型的数值占用64bit,即8Byte,则总共 13*506*8/1024=51.39KB
占用内存51.5KB比51.39KB略大,原因是表格中除了数据还得存储一些描述信息。

表格聚合运算的中文与英文简写对照如下表所示:

中文名 英文名
很抱歉,我之前的回答中漏掉了代码部分。以下是基于Spark的波士顿房价预测数据可视化阶段的相关代码,供您参考: ```python # 导入必要的库 from pyspark.sql.functions import col from pyspark.ml.feature import VectorAssembler from pyspark.ml.regression import LinearRegression import matplotlib.pyplot as plt # 读取数据集 df = spark.read.format("csv").option("header", True).option("inferSchema", True).load("boston_housing.csv") # 数据预处理 df = df.select([col(c).cast("double").alias(c) for c in df.columns]) assembler = VectorAssembler(inputCols=df.columns[:-1], outputCol="features") df = assembler.transform(df) # 训练模型 lr = LinearRegression(featuresCol="features", labelCol="medv", maxIter=10, regParam=0.3, elasticNetParam=0.8) model = lr.fit(df) # 预测 predictions = model.transform(df) # 可视化 plt.scatter(predictions.select("medv").rdd.flatMap(lambda x: x).collect(), predictions.select("prediction").rdd.flatMap(lambda x: x).collect()) plt.xlabel("True Values") plt.ylabel("Predictions") plt.show() ``` 这段代码将波士顿房价数据集加载到Spark中,进行了数据预处理、建模和预测,并使用Matplotlib库将结果可视化呈现。具体而言,代码首先读取CSV格式的数据集,并对所有列进行类型转换,将其转换为double类型。然后,使用VectorAssembler将所有特征列组合成一个名为“features”的向量列。接着,使用LinearRegression算法训练模型,并使用模型对数据集进行预测。最后,使用Matplotlib库将真实值和预测值作为横纵坐标进行散点图可视化。 需要注意的是,这段代码是一个简单的示例,具体的实现方式可能会根据您的需求和数据集的特点而有所不同。希望这些代码能够对您的工作有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值