Python实现一元线性回归实战

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mico_cmm/article/details/86923321

回归是一种有监督的学习方式,需要根据历史数据对未知数据做出预测。

在此,以房屋面积预测房屋价格为例:

首先,读入数据/加载数据:

代码如下:

import pandas as pd
import numpy as np
from io import StringIO
from sklearn import linear_model
import matplotlib.pyplot as plt

# 房屋面积与价格历史数据(csv文件)
csv_data = 'square_feet,price\n150,6450\n200,7450\n250,8450\n300,9450\n350,11450\n400,15450\n600,18450\n'

# 读入dataframe
df=pd.read_csv(StringIO(csv_data))
# print(df)

其次,建立线性回归模型,并对数据进行拟合,代码如下:

# 建立线性回归模型
regr=linear_model.LinearRegression()

# 拟合
regr.fit(df['square_feet'].values.reshape(-1, 1), df['price'])
# 用values方法将Series对象转化成numpy的ndarray,再用ndarray的reshape方法。
# 注意此处.reshape(-1, 1),因为X是一维的!

得到模型的截距和斜率:

# 直线的截距,斜率
a,b=regr.coef_,regr.intercept_

两种方式进行预测:

第一种方式是根据得到的模型直接进行的计算,第二种方式是根据回归模型的预测方法Predict进行的预测,通过运行代码可知两种方法得到的结果一致。

# 给出待预测面积
area=238.5

# 方式1:根据直线方程计算的价格
print(a*area+b)

# 方式2:根据predict方法预测的价格
print(regr.predict(area))

绘图,分别绘制散点图和拟合的直线:

# 画图
# 1.真实的点(绘制的散点图)
plt.scatter(df['square_feet'],df['price'],color='blue')

# 2.拟合的直线
plt.plot(df['square_feet'],regr.predict(df['square_feet'].values.reshape(-1,1)),color='red',linewidth=4)

plt.show()

至此,一元线性回归模型就创建完成了!

参考:https://www.cnblogs.com/hhh5460/p/5786115.html

对于模型的学习,建议大家在了解了算法的原理之后要动手实战,毕竟机器学习或者数据挖掘重在实战,我们最终是要做出模型来进行决策的。多动手,你会发现原本枯燥的原理、算法会变得清晰,自己也会更加感兴趣!

猜你喜欢

转载自blog.csdn.net/mico_cmm/article/details/86923321