多元线性回归预测房价

一.利用jupyter实现

从作业里面把CSV文件导入到JUPYTER中,新建House.ipynb,输入代码:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
df=pd.read_csv('house_prices.csv')//导入数据集
df.info();df.head()

在这里插入图片描述
变量探索:

#异常值处理
#定义一个函数outlier_test(iqr&z分数两种方法)
def outlier_test(data,column,method=None,z=2):
    """ 以某列为依据,使用 上下截断点法 检测异常值(索引) """
    """ 
    full_data: 完整数据 
    column: full_data 中的指定行,格式 'x' 带引号 
    return 可选; outlier: 异常值数据框 upper: 上截断点; lower: 下截断点 
    method:检验异常值的方法(可选, 默认的 None 为上下截断点法),
    选 Z 方法时,Z 默认为 2 
    """
    #上下截断点法检验异常值
    if method==None:
        print(f'以{column}列为依据,使用上下截断点法(iqr)检测异常值')
        print('='*70)
        #四分位点:这里调用函数会存在异常
        column_iqr=np.quantile(data[column],0.75)-np.quantile(data[column],0.25)
        #1,3分位数
        (q1,q3)=np.quantile(data[column],0.25),np.quantile(data[column],0.75)
        #计算上下截断点
        upper,lower=(q3+1.5*column_ipr),(q1-1.5*column_iqr)
        #检测异常值
        outlier=data[(data[column]<=lower)|(data[column]>=upper)]
        print(f'第一分位数:{q1},第三分位数:{q3},四分位极差:{column_iqr}')
        print(f"上截断点:{upper}, 下截断点:{lower}") 
        return outlier, upper, lower
    #z分数检验异常值
    if method=='z':
        """ 以某列为依据,传入数据与希望分段的 z 分数点,返回异常值索引与所在数据框 """
        """
        params
        data: 完整数据
        column: 指定的检测列
        z: Z分位数, 默认为2,根据 z分数-正态曲线表,可知取左右两端的 2%,
           根据您 z 分数的正负设置。也可以任意更改,知道任意顶端百分比的数据集合
        """
        print(f'以{column}列为依据,使用z分法,z分位数取{z}来检测异常值')
        print('='*70)
        # 计算两个 Z 分数的数值点
        mean,std=np.mean(data[column]),np.std(data[column])
        upper,lower=(mean+z*std),(mean-z*std)
        print(f'取 {z} 个 Z分数:大于 {upper} 或小于 {lower} 的即可被视为异常值')
        print('=' * 70)
        # 检测异常值
        outlier = data[(data[column] <= lower) | (data[column] >= upper)]
        return outlier, upper, lower

outlier, upper, lower = outlier_test(data=df, column='price', method='z')
outlier.info(); outlier.sample(5)

在这里插入图片描述
简单丢弃

#简单丢弃
df.drop(index=outlier.index,inplace=True)

# nominal_variables类别变量,又称为名义变量
nominal_vars=['neighborhood',<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值