机器学习入门与Python实战(二):回归分析 Regression Analysis

目录

现实问题思考

回归分析

回归问题求解

求解方法:梯度下降法

Python实战:多因子房价预测


现实问题思考

现实问题思考--体重预测身高

更多因素:性别、所在城市、父母身高等

 现实问题思考--住宅面积预测售价

更多因素:房间数量、房屋年龄、人口密度、交通便利程度等

 现实问题思考--细菌增长数量预测

更多因素:环境温度、营养液余量

回归分析

基于输入数据,确定变量间相互依赖的定量关系

举例:小明开始工资1000,每周增长,第t周的工资是多少(第一周开始算增长)?

线性回归:每周增长100

非线性回归:每周是上周的1.1

合理售价=𝑓(面积)合理售价=f(面积)

合理售价=𝑓(面积、房间数、房龄、其他因子)合理售价=f(面积、房间数、房龄、其他因子)

回归问题求解

问题:面积100平米售价120万是否值得投资?

1. 确定xy间的定量关系

𝑦=𝑓(𝑥)

2. 根据关系预测合理价格

𝑦=𝑓(𝑥=100)

3. 做出判断

算法的求解等效于:寻找合理的a b

求解方法:梯度下降法

从山上某点出发,找到最快的下山路径

寻找函数极小值的一种方法。

核心:计算开始点𝑥𝑖x_i对应梯度,以一定步长向梯度反方向到达新的点x_(i+1),重复此过程,直到x_i  x_(i+1)几乎不再变化。

Python实战:多因子房价预测

基础环境: Python语言;安装核心工具包numpy、pandas、sklearn、matplotlib;环境管理软件Anaconda;Jupyter notebook

环境配置参考:机器学习入门与Python实战核心工具篇:pip源、python、anaconda、工具包(完整版)https://blog.csdn.net/dfly_zx/article/details/110188923

任务:基于task2_data.csv数据,建立多因子线性回归模型,与只使用面积单因子进行建模预测的结果进行对比。

部分数据:

1、以面积为输入变量,建立单因子模型,评估模型表现,可视化线性回归预测结果

2、以面积、人均收入、平均房龄为输入变量,建立多因子模型,评估模型表现

3、预测面积=160, 人均收入=70000, 平均房龄=5的合理房价

#数据加载
import pandas as pd
import numpy as np
data = pd.read_csv('task2_data.csv')
data.head(10)

#数据可视化
from matplotlib import pyplot as plt
fig = plt.figure(figsize=(20,5))
fig1 = plt.subplot(131)
plt.scatter(data.loc[:,'面积'],data.loc[:,'价格'])
plt.title('Price VS Size')

fig2 = plt.subplot(132)
plt.scatter(data.loc[:,'人均收入'],data.loc[:,'价格'])
plt.title('Price VS Income')

fig3 = plt.subplot(133)
plt.scatter(data.loc[:,'平均房龄'],data.loc[:,'价格'])
plt.title('Price VS House_age')
plt.show()

#X y赋值
X = data.loc[:,'面积']
y = data.loc[:,'价格']
print(X,y)
#数据预处理
X = np.array(X)
y = np.array(y)
X = X.reshape(-1,1)
y = y.reshape(-1,1)
print(X.shape,y.shape)

#模型的建立与训练
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X,y)
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)
#模型预测
y_predict = model.predict(X)
print(y_predict)
[[1273463.80967472]
 [1192500.07431933]
 [1420564.16140447]
 ...
 [1113233.11006996]
 [1237040.41730573]
 [1162515.70057855]]
#表现评估
from sklearn.metrics import mean_squared_error,r2_score
MSE = mean_squared_error(y,y_predict)
R2 = r2_score(y,y_predict)
print(MSE)
print(R2)
#结果可视化
fig2 = plt.figure(figsize=(8,5))
plt.scatter(data.loc[:,'面积'],data.loc[:,'价格'])
plt.plot(X,y_predict,'r')
plt.title('Price VS Size')

#X y再次赋值
X = data.drop(['价格'],axis=1)
y = data.loc[:,'价格']
X.head()

#建立多因子回归模型 并且训练
model_multi = LinearRegression()
model_multi.fit(X,y)
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)
#多因子模型的预测
y_predict_multi = model_multi.predict(X)
print(y_predict_multi)
[1463868.24688829 1445981.85185019 1253388.6205439  ... 1285670.68139457
 1243839.71867445 1116875.92416746]
MSE_multi = mean_squared_error(y,y_predict_multi)
R2_multi = r2_score(y,y_predict_multi)
print(MSE_multi)
print(R2_multi)
58264450329.88301
0.5550934951789649
#可视化预测结果
fig3 = plt.figure(figsize=(8,5))
plt.scatter(y,y_predict_multi)
plt.xlabel('real price')
plt.ylabel('prdicted price')

plt.show()

#预测面积=160, 人均收入=70000, 平均房龄=5的合理房价
X_test = np.array([[160,70000,5]])
y_test_predict = model_multi.predict(X_test)
print(y_test_predict)
[1235099.47156076]

房价实战summary:
1、通过搭建线性回归模型,实现单因子的房屋价格预测;
2、在单因子模型效果不好的情况下,通过考虑更多的因子,建立了多因子模型;
3、多因子模型达到了更好的预测效果,r2分数从单因子的0.1提高到了0.55;
4、实现了预测结果的可视化,直观对比预测价格与实际价格的差异。


如果现在就想开始学习机器学习,你还可以:

1、添加微信:ai_flare,领取Python编程课(AI方向)、Python实现机器学习,免费领取(仅限前100名)

2、人工智能学习路线:专为AI小白设计的人工智能实战课 - Python3入门人工智能 基础+实战 学习视频教程-CSDN学院

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值