【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 Income Avg. Area House Age Avg. Area Number of Rooms Avg. Area Number of Bedrooms Area Population Price
0 79545.45857 5.682861 7.009188 4.09 23086.80050 1.059034e+06
1 79248.64245 6.002900 6.730821 3.09 40173.07217 1.505891e+06
2 61287.06718 5.865890 8.512727 5.13 36882.15940 1.058988e+06
3 63345.24005 7.188236 5.586729 3.26 34310.24283 1.260617e+06
4 59982.19723 5.040555 7.839388 4.23 26354.10947 6.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)

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

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

    [ML]线性回归 [单因子](LinearRegression)实践(基于sklearn) 数据准备 读取数据 绘制图表(观察数据规律) 数据处理 模型训练 预测 评估(MSE,R2) 图形展示结果 ...

  2. 【ML】欠拟合(underfitting)和 过拟合(overfitting)实践(基于sklearn)

    [ML]欠拟合(underfitting)和 过拟合(overfitting)实践(基于sklearn) 数据集 加载数据 可视化数据 一阶模型(欠拟合) 训练 预测+评估 可视化 二级模型(符合要求 ...

  3. 【ML】异常检测、PCA、混淆矩阵、调参综合实践(基于sklearn)

    [ML]异常检测.PCA.混淆矩阵.调参综合实践(基于sklearn) 加载数据 可视化数据 异常点检测 PCA降维 使用KNN进行分类并可视化 计算混淆矩阵 调节n_neighbors参数找到最优值 ...

  4. 【ML】主成分分析 PCA(Principal Component Analysis)原理 + 实践 (基于sklearn)

    [ML]主成分分析 PCA(Principal Component Analysis)原理 + 实践 (基于sklearn) 原理简介 实践 数据集 数据处理 使用KNN模型进行分类预测(为了和PCA ...

  5. 【ML】异常检测(anomaly detection)原理 + 实践 (基于sklearn)

    [ML]异常检测(anomaly detection)原理 + 实践 (基于sklearn) 原理简介 实践 加载数据 可视化数据(观察规律) 训练模型 预测和展示 调整异常值为20%的情况 原理简介 ...

  6. 【ML】决策树(Decision tree)原理 + 实践 (基于sklearn)

    [ML]决策树(Decision tree)原理 + 实践 (基于sklearn) 原理介绍 简要介绍 原理 得分函数(信息熵) 实战 数据集 数据处理 训练 预测+评估 绘制决策树 原理介绍 简要介 ...

  7. 【ML】KNN 原理 + 实践(基于sklearn)

    [ML]KNN 原理 + 实践(基于sklearn) 原理介绍 基本原理 K的选取 特征归一化 什么是归一化?为什么要归一化? 如何归一化? 实践 数据集 加载数据 可视化数据,观察规律 训练数据 预 ...

  8. 【ML】KMeans 原理 + 实践(基于sklearn)

    [ML]KMeans 实践(基于sklearn) 原理 读取数据 可视化数据(观察规律) 训练 预测 + 可视化 原理 下面做原理简要介绍: KMeans是一个非监督学习算法,对于关键的K值即我们希望 ...

  9. 【ML】Mean-Shift 原理 + 实践(基于sklearn)

    [ML]Mean-Shift 原理 + 实践(基于sklearn) 原理 实践 生成数据 训练 预测+评估 原理 取数据集中的一个点为X,以此点为中心画一个半径为R的圆,圆内共有点数量假设为K. 以此 ...

最新文章

  1. java api 框架_java常用对象API之集合框架
  2. 手把手教 | 深度学习库PyTorch(附代码)
  3. JS关于时间的一些计算与获取
  4. python函数能否增强代码可读性_总结的几个Python函数方法设计原则
  5. 面向对象基础回顾(二)
  6. 30岁之前需要知道的10个人生底线,你知道几个?
  7. WDM驱动程序入门(很详细)
  8. Java基础-IO流
  9. TensorFlow 基本问题思考
  10. onmounted vue3_Vue2和Vue3使用层面上的区别总结
  11. Java程序员常用软件
  12. linux蓝天模具风扇控制软件,ECView最新版下载-蓝天原厂风扇转速策略调节软件clevo ecview下载 v6.8 通用版-IT猫扑网...
  13. aodv-uu 源码解读
  14. JMeter基础 —脚本录制工具Badboy介绍
  15. 左耳朵耗子 | 程序员如何用技术变现?
  16. 网吧服务器系统是怎么弄的,网吧无盘服务器系统安装流程备忘录-2020
  17. 淘宝京东的6位数字支付密码实现
  18. 先旋转x在旋转y 在旋转z_旋转Kubernetes中的秘密
  19. Android 版本对应 Version Code
  20. chrome点击下载链接没有反应

热门文章

  1. 计算机专业的英语复试自我介绍,计算机专业复试英语自我介绍
  2. 数据库(十)-单表查询(1)条件查询
  3. SSH隧道技术及端口映射与转发
  4. 动态网站如何生成静态页面
  5. 网上书城项目前端界面设计及编码
  6. 控制Unity物体的旋转
  7. 斯坦福教授研究了美国200年专利数据: 论文发得多?不等于创新!
  8. ClassList属性
  9. Kali中常用的代理工具以及使用
  10. 如何利用python实现TURF分析?