kaggle:房价预测

比赛链接
结果展示
在这里插入图片描述
结果链接
8848是密码

文章目录

  • 数据处理
  • 调包部分
  • 拒绝掉包
    • 岭回归
      • 理论
      • 代码
      • 实践
      • 结果
    • 自助采样
      • 理论
      • 代码
    • 集成学习
      • 前言
      • Bagging理论
      • Bagging-Ridge代码
      • Bagging-Ridge实践
      • Bagging-Ridge结果
    • Tricks

数据处理

#打开文件
import pandas as pd
dataset1=pd.read_csv("train.csv")
dataset2=pd.read_csv("test.csv")
#按列处理,其中包括缺失值的填充,独热编码,放缩
import numpy as np
def function1(dataset):dataset['MSSubClass']=dataset['MSSubClass'].astype(str)data=dataset["Id"]for i in dataset.columns[1:]:try:sum(dataset[i])data_temp=dataset[i]data_temp.fillna(data_temp.dropna().mean(),inplace=True)data_temp=(data_temp-np.mean(data_temp))/np.std(data_temp)data=pd.concat([data,data_temp],axis=1)except:data_temp=pd.get_dummies(dataset[i])data=pd.concat([data,data_temp],axis=1)return data.astype(np.float64).to_numpy()[:,1:]
data_x=function1(pd.concat([dataset1.iloc[:,:-1],dataset2],axis=0))
data_train_x=data_x[:dataset1.shape[0]]
data_test_x=data_x[dataset1.shape[0]:]
#按行处理,对异常值进行处理
def function2(data):data.astype(np.int64)lt1=np.mean(data,axis=0)-3*np.std(data,axis=0)lt2=np.mean(data,axis=0)+3*np.std(data,axis=0)lt=[]for _ in data:for i in range(len(_)-1):if _[i]<lt1[i] or _[i]>lt2[i]:lt.append(False)breakelse:lt.append(True)return data[lt]
data_train=np.hstack((data_train_x,dataset1.iloc[:,-1].astype(np.float64).to_numpy()[:,np.newaxis]))
#data_train=function2(data_train)
data_train_x=data_train[:,:-1]
data_train_y=data_train[:,-1]

调包部分

lt=[]
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import BaggingRegressor
from sklearn.linear_model import Ridge
ridge=Ridge(15)
for i in range(5,101,5):md=BaggingRegressor(n_estimators=i,estimator=ridge,random_state=1)lt.append(np.sqrt(np.mean(-(cross_val_score(md,data_train_x,np.log(data_train_y),cv=10,scoring='neg_mean_squared_error')))))print(i)
import matplotlib.pyplot as plt
plt.plot([i for i in range(5,101,5)],lt)
plt.show()

在这里插入图片描述

md=BaggingRegressor(n_estimators=75,estimator=ridge,random_state=1).fit(data_train_x,np.log(data_train_y))
result=np.exp(md.predict(data_test_x).flatten())
result=np.vstack((np.array([i for i in range(1461,2920)]).astype(np.int32),result)).T
pd.DataFrame(result.astype(np.int32)).to_csv("result.csv",index=False,header=["Id","SalePrice"])

这些全都不是目的
我想过下基础知识

拒绝掉包

岭回归

理论

损失函数
J ( β ) = ∑ i = 1 n ( y i − β 0 − ∑ j = 1 p β j x i j ) 2 + λ ∑ j = 1 p β j 2 J(\beta)=\sum_{i=1}^n(y_i-\beta_0-\sum^p_{j=1}\beta_jx_{ij})^2+\lambda\sum_{j=1}^p\beta_j^2 J(β)=i=1n(yiβ0j=1pβjxij)2+λj=1pβj2
J ( β ) = ( y − X β ) T ( y − X β ) + λ β T β J(\beta)=(\mathbf y-\mathbf X\mathbf \beta )^T(\mathbf y-\mathbf X\mathbf \beta)+\lambda\beta^T\beta J(β)=(yXβ)T(yXβ)+λβTβ
求偏导数
∂ J ( β ) ∂ β = − 2 X T y + 2 X T X β + 2 λ β \frac{\partial J(\beta)}{\partial\beta}=-2\mathbf X^T\mathbf y+2\mathbf X^T\mathbf X\beta+2\lambda\beta βJ(β)=2XTy+2XTXβ+2λβ
令0求解
β = ( X T X + λ I ) − 1 X T y \beta=(\mathbf X^T\mathbf X+\lambda\mathbf I)^{-1}\mathbf X^T\mathbf y β=(XTX+λI)1XTy

代码

class Ridge:def __init__(self,l):self.l=ldef fit(self,x,y):return np.dot(np.dot(np.linalg.inv(np.dot(x.T,x)+self.l*np.identity(x.shape[1])),x.T),y)

实践

还是采用房价预测
数据处理与前一样

md=Ridge(15)
result=np.dot(data_test_x,md.fit(data_train_x,data_train_y))
result=np.vstack((np.array([i for i in range(1461,2920)]).astype(np.int32),result)).T
pd.DataFrame(result.astype(np.int32)).to_csv("result.csv",index=False,header=["Id","SalePrice"])

结果

在这里插入图片描述

自助采样

理论

设原始训练样本集为 D = ( x n , y n ) n = 1 N D={(x_n,y_n)}^N_{n=1} D=(xn,yn)n=1N,从D中重新采样得到一个重采样样本集 D ∗ D^* D D ∗ D^* D也由 N N N个样本组成,若采用自助采样从 D D D中重采样获得 D ∗ D^* D,则称 D ∗ D^* D为一个自助样本集(Bootstrap Samples)。自助采样是指,随机从 D D D中抽取一个样本放入 D ∗ D^* D中,同时将该样本放回 D D D中,按照这个方式采样 N N N次,组成自助样本集 D ∗ D^* D
由于是对 D D D做放回采样,采样过程是随机的故可对 D D D重采样 B B B轮,每轮得到 N N N个样本的自助样本集,故可获得 B B B个自主样本集,记为 D ∗ ( b ) , b = 1 , 2 , ⋯ , B D^{*(b)},b=1,2,\cdots,B D(b),b=1,2,,B。由于随机放回采样,各自助样本集 D ∗ ( b ) D^{*(b)} D(b)不同。
为了理解各自助样本集的不同,我们可以分析 D D D中的任意样本 ( x k , y k ) (x_k,y_k) (xk,yk)被包含在一个自助样本集 D ∗ ( j ) D^{*(j)} D(j)中的概率。从D中随机放回采样得到 D ∗ ( j ) D^{*(j)} D(j)的过程中,每次采样没有采样到 ( x k , y k ) (x_k,y_k) (xk,yk)的概率为 1 − 1 N 1-\frac{1}{N} 1N1,独立采样 N N N次均没有被采样到的概率为 ( 1 − 1 N ) N (1-\frac{1}{N})^N (1N1)N,故样本 ( x k , y k ) (x_k,y_k) (xk,yk)被包含在样本集 D ∗ ( j ) D^{*(j)} D(j)中的概率为 1 − ( 1 − 1 N ) N = 1 − e − 1 ≈ 0.632 1-(1-\frac{1}{N})^N=1-e^{-1}\approx0.632 1(1N1)N=1e10.632,以上假设 N N N充分大。上式说明,在构成自助样本集 D ∗ ( j ) D^{*(j)} D(j)式,大约可从 D D D中采集到约 63.2 % 63.2\% 63.2%的样本,即 D D D中约 36.8 % 36.8\% 36.8%的样本没有被采集到 D ∗ ( j ) D^{*(j)} D(j)中,从概率上讲,若抛弃重复样本 D ∗ ( j ) D^{*(j)} D(j)中只有大约 0.632 N 0.632N 0.632N的有效样本。两个自助样本集 D ∗ ( i ) D^{*(i)} D(i) D ∗ ( j ) D^{*(j)} D(j)内部包含的有效样本是随机的,故 D ∗ ( i ) D^{*(i)} D(i) D ∗ ( j ) D^{*(j)} D(j)相互具有随机性,且具有一定的不相关性。

代码

from random import randint
def Sampling(data_train_x,data_train_y):lt=[randint(0,data_train_x.shape[0]-1) for i in range(data_train_x.shape[0])]return data_train_x[lt],data_train_y[lt]

集成学习

前言

自助采样(Bootstrap)是统计学中的一种重采样技术,用于改善统计参数的估计,在集成学习中,可借助自助采样形成多个堆积样本集,在每个重采样的样本基础上训练一个基学习器,然后组合成为一个集成学习器。

Bagging理论

Bagging是Bootstrap Aggregation的简写。Baggin的思想是,首先由训练样本集 D D D,重采样得到 B B B个自助样本集 D ∗ ( b ) , b = 1 , 2 , ⋯ B D^{*(b)},b=1,2,\cdots B D(b),b=1,2,B,对于每个 D ∗ ( b ) D^{*(b)} D(b),通过基学习算法训练一个基学习器 f ^ ∗ ( b ) ( x ) \hat f^{*(b)}(\mathbf x) f^(b)(x),则Bagging集成学习器为 f ^ b a g ( x ) = 1 B ∑ b = 1 B f ^ ∗ ( b ) ( x ) \hat f_{bag}(\mathbf x)=\frac{1}{B}\sum^B_{b=1}\hat f^{*(b)}(\mathbf x) f^bag(x)=B1b=1Bf^(b)(x)

Bagging-Ridge代码

class Bagging:def __init__(self,n,f):self.n=nself.f=fdef fit(self,x,y):lt=[]for _ in range(self.n):data_train_x,data_train_y=Sampling(x,y)lt.append(self.f.fit(data_train_x,data_train_y))return np.mean(lt,axis=0)

Bagging-Ridge实践

md=Bagging(75,Ridge(15))
result=np.dot(data_test_x,md.fit(data_train_x,data_train_y))
result=np.vstack((np.array([i for i in range(1461,2920)]).astype(np.int32),result)).T
pd.DataFrame(result.astype(np.int32)).to_csv("result.csv",index=False,header=["Id","SalePrice"])

Bagging-Ridge结果

在这里插入图片描述

Tricks

可以采用某种二分算法手动微调。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/20958.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

How to install a dataset from huggingface?

当我从抱抱脸上git clone imdb数据集时&#xff0c;plain_text里的文件是这样的&#xff1a;

梦想的味道,特别的邀约 —— 蒙自源六一儿童节特别活动

每个孩子心中都有一颗梦想的种子&#xff0c;只需一点阳光和雨露&#xff0c;便能生根发芽&#xff0c;开出绚烂的花朵。六一儿童节&#xff0c;是孩子们的节日&#xff0c;也是他们梦想起航的日子。蒙自源希望成为孩子们梦想的沃土&#xff0c;用美食和爱滋养他们的成长。在这…

【Qt知识】Qt框架中的信号(Signals)与槽(Slots)机制

Qt框架中的信号&#xff08;Signals&#xff09;与槽&#xff08;Slots&#xff09;机制是一种强大的通信方式&#xff0c;允许对象之间相互通信而无需对象之间直接引用或了解对方。这一机制简化了应用程序的事件处理和组件之间的交互&#xff0c;是Qt的一大特色和核心概念。 …

Qt6.4.2基于CMake添加Qt3DCore模块报错

在文档中说明是添加 find_package(Qt6 REQUIRED COMPONENTS 3dcore) target_link_libraries(mytarget PRIVATE Qt6::3dcore)find_package是没有问题&#xff0c;但是target_link_libraries会报错&#xff0c;报拼写错误&#xff0c;无法链接上Qt6::3dcore 需要使用“3DCore”…

windows系统搭建go开发编译环境

1、前言 windows系统&#xff0c;从零开始搭建go开发编译环境详细步骤。 2、go下载和安装 2.1 下载 下载地址如下&#xff1a; All releases - The Go Programming Language 可以根据自己的需要选择下载对应的版本下载即可。 对于windows系统&#xff0c;如果是6…

有开源软件,也有开源硬件?

开源软件或库有很多&#xff0c;例如 Linux 操作系统的内核 The Linux Kernel Archiveshttps://www.kernel.org/ 开源的各种Linux发行版本&#xff0c;Ubuntu 、CentOS等 Enterprise Open Source and Linux | Ubuntuhttps://ubuntu.com/ 开源的视觉函数库&#xff0c;OpenC…

Nvidia Jetson/Orin +FPGA+AI大算力边缘计算盒子:美团小袋自动配送车

大型电商公司美团已选用NVIDIA Jetson AGX Xavier 平台&#xff0c;作为无人配送机器人核心AI算力。 美团点评是全球大型的按需食品配送公司&#xff0c;结合了Uber Eats、Yelp和Groupon的商业模式&#xff0c;与超过40万家本地企业开展合作。他们推出了小袋自动配送车&#…

基于深度学习YOLOv8\YOLOv5的花卉识别鲜花识别检测分类系统设计

本文将介绍基于深度学习YOLOv8\YOLOv5PySide6SQLite的花卉检测与识别系统&#xff0c;该系统基于YOLOv8算法&#xff0c;并与YOLOv5版本进行比较&#xff0c;该系统不仅实现了对花卉的精准识别和分类&#xff0c;还提供了包括用户认证管理、模型快速切换及界面个性化定制在内的…

PCL点云格式转换成tiff格式

需要把PCL的点云格式转换成tiff格式的图片。 一、第一种转换函数 主要思路: 使用了libtiff库,来写tiff格式把点云的x,y,z通道转换成tiff格式图片的三通道。所以后续读取tiff格式图片转换成点云时,注意三通道代表x,y,z的顺序写tiff格式的时候就是设置文件头,然后把数据一个…

【如何在日志中输出精确到毫秒的时间戳】

1. 需求 在日志中输出精确到毫秒级的时间戳&#xff0c; 格式为&#xff1a;%Y-%m-%d %H:%M:%S.%MS 如&#xff1a;2024-05-30 22:33:25.821 2. 代码实现 #include <iostream> #include <chrono> #include <iomanip> #include <sstream> #include &…

手把手教你如何通过配置hosts文件实现屏蔽广告(去广告hosts文件)

📖 介绍 📖 如果你对广告烦不胜烦,并希望通过一种简单有效的方式去除广告,那么使用 hosts 文件来屏蔽广告是一个不错的选择。本文将详细介绍如何配置和使用 hosts 文件来屏蔽广告,从而提升你的浏览体验。 🏡 演示环境 🏡 本文演示环境如下 操作系统:Windows 11编辑…

HCIA-传输层协议

传输层的俩大协议TCP和UDP 对初学者的要求是对协议有所了解即可&#xff0c;它实现了哪些功能 未来的我这个网普通PC要去访问服务器并与之的数据进行交互 192.168.1.1 -访问-> 192.168.1.2(VX) 192.168.1.1 -访问-> 192.168.1.3(ZFB) 192.168.1.1 -访问-> 192.168.1.…

css特殊效果和页面布局

特殊效果 圆角边框&#xff1a;div{border-radius: 20px 10px 50px 30px;} 四个属性值按顺时针排列&#xff0c;左上的1/4圆半径为20px&#xff0c;右上10&#xff0c;右下50&#xff0c;左下30。 div{border-radius: 20px;} 四角都为20px。 div{border-radius: 20px 10…

Tomcat安装和配置(图文详解)_tomcat安装及配置教程

Tomcat是一个开源的Web应用服务器&#xff0c;它是Apache软件基金会的一个项目。Tomcat被广泛用作Java Servlet和JavaServer Pages&#xff08;JSP&#xff09;技术构建的Web应用程序的运行环境。 它是轻量级的&#xff0c;适合中小型系统和并发访问用户不是很多的场合&#x…

外界访问docker服务失败

各位i大佬请问一下&#xff1a;我容器起了&#xff0c;但是外网访问不了目标机器的9090端口。 我检查了&#xff1a;1.本机的防火墙已关闭&#xff0c; 2.目标机器的9090端口显示正在被docker监听。 3.外网可以访问目标机器。 4.docker日志&#xff0c;未显示服务报错。 5…

【教学类-60-01】彩色消划掉01(四个数字,X*Y宫格)

背景需求&#xff1a; &#x1f9e0;思维启蒙 - 小红书注意力训练小分享-彩色划消 训练孩子的视觉辨别能力、视觉稳定性、注意力分配额能力&#x1f440; 一起来试试吧&#xff5e; #分享学习方法 #注意力训练 #专注力训练#天津 #亲子时光 #孩子成长 #思维启蒙 #数学思维启蒙 …

c++中 unordered_map 与 unordered_set 用法指南

unordered_map 与 unordered_set 区别与联系 unordered_map 和 unordered_set 都是 C 标准模板库&#xff08;STL&#xff09;中的容器&#xff0c;它们使用哈希表作为底层数据结构&#xff0c;提供了快速的查找、插入和删除操作。下面是它们之间的联系与区别&#xff1a; 联系…

[图解]企业应用架构模式2024新译本讲解06-表模块3

1 00:00:00,800 --> 00:00:03,470 接下来&#xff0c;我们来看这个序列图 2 00:00:04,400 --> 00:00:05,740 因为序列图比较大 3 00:00:06,180 --> 00:00:09,770 我们就不好放在幻灯片里面来看了 4 00:00:11,060 --> 00:00:12,130 下面还有很多 5 00:00:13,950…

Python魔法之旅-魔法方法(08)

目录 一、概述 1、定义 2、作用 二、应用场景 1、构造和析构 2、操作符重载 3、字符串和表示 4、容器管理 5、可调用对象 6、上下文管理 7、属性访问和描述符 8、迭代器和生成器 9、数值类型 10、复制和序列化 11、自定义元类行为 12、自定义类行为 13、类型检…

计算机毕业设计hadoop++hive微博舆情预测 微博舆情分析 微博推荐系统 微博预警系统 微博数据分析可视化大屏 微博情感分析 微博爬虫 知识图谱

摘 要 随着社交媒体的普及和互联网技术的快速发展&#xff0c;热点舆情事件频发&#xff0c;对于政府、企业和公众来说&#xff0c;及时了解和分析热点舆情&#xff0c;把握舆论走向&#xff0c;已经成为一项重要的任务。然而&#xff0c;传统的数据处理和分析方法在面对海量…