【ML】线性回归 [多因子](LinearRegression)实践(基于sklearn)

数据准备

使用数据:USA_Housing.csv

读取数据

import pandas as pd
import numpy as np
# 读取数据
origin_data = pd.read_csv('USA_Housing.csv')
print(type(origin_data))
# 删除无用的列
data = origin_data.drop(columns=['Address'])
data.head()

输出:

<class 'pandas.core.frame.DataFrame'>
Avg. Area IncomeAvg. Area House AgeAvg. AreaNumber of RoomsAvg. Area Number of BedroomsArea Population Price
079545.458575.6828617.0091884.0923086.800501.059034e+06
179248.642456.0029006.7308213.0940173.072171.505891e+06
261287.067185.8658908.5127275.1336882.159401.058988e+06
363345.240057.1882365.5867293.2634310.242831.260617e+06
459982.197235.0405557.8393884.2326354.109476.309435e+05

绘制图表(观察数据规律)

# 观察数据
from matplotlib import pyplot as plt
plt.subplot(231)
plt.scatter(data.loc[:,'Avg. Area Income'], data.loc[:,'Price'])
plt.title('Income')

plt.subplot(232)
plt.scatter(data.loc[:,'Avg. Area House Age'], data.loc[:,'Price'])
plt.title('Age')

plt.subplot(233)
plt.scatter(data.loc[:,'Avg. Area Number of Rooms'], data.loc[:,'Price'])
plt.title('Rooms')

plt.subplot(234)
plt.scatter(data.loc[:,'Avg. Area Number of Bedrooms'], data.loc[:,'Price'])
plt.title('Bedrooms')

plt.subplot(235)
plt.scatter(data.loc[:,'Area Population'], data.loc[:,'Price'])
plt.title('Population')

在这里插入图片描述

单因子训练(为了做对比)

# rooms单因子测试
from sklearn.linear_model import LinearRegression
x_1 = data.loc[:,'Avg. Area Number of Rooms']
x_1 = np.array(x_1).reshape(-1,1);
y = data.loc[:,'Price']
lr_1 = LinearRegression()
lr_1.fit(x_1, y)

预测+评估(单因子)

# 预测+评估
y_predict_1 = lr_1.predict(x_1)
# 评估 MSE,r2
from sklearn.metrics import mean_squared_error, r2_score
MSE_1 = mean_squared_error(y,y_predict_1)
r2_score_1 = r2_score(y,y_predict_1)
print(MSE_1, r2_score_1)

输出:

110620797457.445  0.11267062524906302

显然,r2_score只有0.11效果很差

多因子训练

#使用多因子方式
lr_mutil = LinearRegression()
x_mutil = data.drop(['Price'], axis=1)
lr_mutil.fit(x_mutil, y)

预测+评估(多因子)

# 预测
y_mutil_predict = lr_mutil.predict(x_mutil)
# 评估 MSE,r2
MSE_mutil = mean_squared_error(y,y_mutil_predict)
r2_mutil_score = r2_score(y,y_mutil_predict)
print(MSE_mutil, r2_mutil_score)

输出

10219734313.031612  0.9180238195119546

r2_score达到了0.918效果提升明显

图形展示

查看y和y_mutil_predict的聚合程度,聚合度越高越好

# 图形展示
plt.figure(figsize=(4,4))
plt.scatter(y_mutil_predict,y)

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值