简单一元线性回归

简单一元线性回归(转载)

在本小节中,通过一元线性回归基于车辆的重量来预测车辆单位加仑油量可以行驶的距离,使用的数据集为“车辆MPG数据集”,英文名为“auto-mpg.data”。该数据集的详细介绍信息请访问:http://archive.ics.uci.edu/ml/datasets/Auto+MPG ,数据集下载地址:http://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/, 打开页面后选择“auto-mpg.data”。该数据集共有9列,其中第1列为单位加仑油量行驶距离(英里),第5列为车辆重量(kg)。为了方便处理,本实验已经将该数据集转换为csv文件格式,即文件“auto_mpg.csv”,这样你可以直接参考上一小节中处理csv文件的代码。当然如果你足够熟悉pandas库的话,也可以直接处理auto-mpg.data文件。

通过对数据的初步分析,发现车辆重量和车辆单位加仑油量形式距离之间存在着线性相关关系。你的任务是:

基于sklearn给出可以根据车辆重量预测其形式距离的一元线性回归方程

给出方程的斜率和截距

绘制出由原始数据构成的散点图以及根据回归方程得到预测结果后的散点图。

最后车辆重量为3000时的预测行驶距离。
原始数据构成的散点图指的是使用X和Y绘制图像,在得到回归方程f后,可得Y’=f(X),根据(X,Y’)绘制的图像即根据回归方程得到预测结果后的散点图。

最终绘制的图像效果应该如下图所示。

# 从csv文件中读取数据,分别为:X列表和对应的Y列表
def get_data(file_name):
    # 1. 用pandas读取csv
    data = pd.read_csv(file_name) 
    # 2. 构造X列表和Y列表
    X = []
    Y = []
    for weight,mpg in zip(data['weight'],data['mpg']):
        X.append([float(weight)])
        Y.append(float(mpg))
    return X,Y

# 获取线性回归模型
def get_linear_model(X,Y):
    model = LinearRegression()
    model.fit(X,Y)
    return model

# 绘出图像
def show_linear_line(X,Y,model):
    # 1. 绘出已知数据散点图
    plt.scatter(X,Y,color = 'blue')
    # 2. 绘出预测直线
    plt.plot(X,model.predict(X),color = 'red',linewidth = 4)
    plt.title('Predict the mpg')
    plt.xlabel('weight')
    plt.ylabel('mpg')
    plt.show()

def main():
    # 1. 读取数据
    X,Y = get_data('linear_regression/auto_mpg.csv')
    # 2. 模型训练
    model = get_linear_model(X,Y)
    # 3. 获取车辆重量为3000时的预测行驶距离
    weight_pre = [3000]
    mpg_pre = np.asarray(weight_pre)
    print(model.predict(mpg_pre.reshape(1,-1)))
    # 4. 绘图
    show_linear_line(X,Y,model)

if __name__ == '__main__':
    main()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值