【Python机器学习系列】一文教你建立线性回归模型预测房价(案例+源码)

这是我的第254篇原创文章。

一、引言

对于表格数据,一套完整的机器学习建模流程如下:

图片

       针对不同的数据集,有些步骤不适用,其中橘红色框为必要步骤,欢迎大家关注翻看我之前的一些相关文章。前面我介绍了机器学习模型的二分类任务,接下来做一个机器学习模型的回归任务系列,由于本系列案例数据质量较高,有些步骤跳过了,跳过的步骤将单独出文章总结!在Python中,可以使用Scikit-learn库来构建线性回归模型进行预测,本文以预测房价为例,对这个过程做一个简要解读。

二、实现过程

2.1 读取数据

filename = 'data.csv'
dataset = pd.read_csv(filename, names=names, delim_whitespace=True)
df = pd.DataFrame(dataset)

df:

图片

2.2 数据集划分

features = names[:-1]
target = ['MEDV']
#  划分数据集
X_train, X_test, y_train, y_test = train_test_split(df[features], df[target], test_size=0.2, random_state=0)

2.3 数据归一化

mm1 = MinMaxScaler()   # 特征进行归一化
X_train_m = mm1.fit_transform(X_train)
mm2 = MinMaxScaler()     # 标签进行归一化
y_train_m = mm2.fit_transform(y_train)

2.4 建模预测

model = DecisionTreeRegressor(random_state=0).fit(X_train, y_train)
y_train_pred = model.predict(X_train)
y_test_pred = model.predict(X_test)

2.5 结果可视化

# 训练集预测值与真实值的对比
plt.plot(list(range(0,len(X_train))),y_train,marker='o')
plt.plot(list(range(0,len(X_train))),y_train_pred,marker='*')
plt.legend(['真实值','预测值'])
plt.xlabel('序列')
plt.ylabel('房价')
plt.title('训练集预测值与真实值的对比')
plt.show()

结果:

图片

# 验证集预测值与真实值的对比
plt.plot(list(range(0,len(X_test))),y_test,marker='o')
plt.plot(list(range(0,len(X_test))),y_test_pred,marker='*')
plt.legend(['真实值','预测值'])
plt.xlabel('序列')
plt.ylabel('房价')
plt.title('验证集预测值与真实值的对比')
plt.show()

结果:

图片

2.6 评价指标

# 评价指标
trainScore1 = math.sqrt(mean_squared_error(y_train, y_train_pred))
print('Train Score: %.2f RMSE' % (trainScore1))
testScore1 = math.sqrt(mean_squared_error(y_test, y_test_pred))
print('Test Score: %.2f RMSE' % (testScore1))

trainScore2 = mean_absolute_error(y_train, y_train_pred)
print('Train Score: %.2f MAE' % (trainScore2))
testScore2 = mean_absolute_error(y_test, y_test_pred)
print('Test Score: %.2f MAE' % (testScore2))

trainScore3 = r2_score(y_train, y_train_pred)
print('Train Score: %.2f R2' % (trainScore3))
testScore3 = r2_score(y_test, y_test_pred)
print('Test Score: %.2f R2' % (testScore3))

trainScore4 = mean_absolute_percentage_error(y_train, y_train_pred)
print('Train Score: %.2f MAPE' % (trainScore4))
testScore4 = mean_absolute_percentage_error(y_test, y_test_pred)
print('Test Score: %.2f MAPE' % (testScore4))

结果打印:

图片

作者简介:

读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。需要数据集和源码的小伙伴可以关注底部公众号添加作者微信。

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
线性回归是一种常见的机器学习算法,用于预测一个连续变量的值。在房价预测中,我们可以使用线性回归预测一个房屋的价格,根据该房屋的各种特征,如面积、位置、房龄等。下面是实现房价预测的基本步骤: 1. 收集数据:收集有关房屋价格和相关特征的数据集。 2. 特征工程:根据数据集中的特征,选择最相关的特征,将其转换为可用于训练模型的格式。 3. 划分数据集:将数据集划分为训练集和测试集。 4. 训练模型:使用训练集训练线性回归模型。 5. 模型评估:使用测试集评估模型的表现。 6. 预测房价:使用模型预测新房屋的价格。 下面是一个简单的Python代码示例,用于实现房价预测线性回归模型: ```python import numpy as np from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split # 加载数据集 data = np.loadtxt('housing.csv', delimiter=',', skiprows=1) # 划分特征和标签 X = data[:, :-1] y = data[:, -1] # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # 训练线性回归模型 lr = LinearRegression() lr.fit(X_train, y_train) # 模型评估 score = lr.score(X_test, y_test) print("模型得分:", score) # 预测房价 new_data = np.array([2000, 3, 4, 1, 0.2, 8, 65, 4, 5]).reshape(1, -1) prediction = lr.predict(new_data) print("预测房价:", prediction) ``` 在这个例子中,我们使用了一个名为'housing.csv'的数据集,其中包含了多个特征和房屋价格。使用scikit-learn库的LinearRegression类,我们训练了一个线性回归模型。通过评估测试集上的表现,我们可以得到模型得分。最后,我们使用训练好的模型来预测一个新房屋的价格。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据杂坛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值